چکسام یا CheckSum یک تابع ساده است که برای تشخیص عدم تغییر یک سری داده یا فایل استفاده میشود. یک عملکرد بسیار مفید برای تضمین یکپارچگی و حفاظت از اطلاعات در هنگام ذخیره یا اشتراک گذاری با سایر کاربران در شبکه.
عملکرد آن بر اساس یک الگوریتم راستیآزمایی ساده است که امکان ایجاد رشتههای هش یا کاراکتر کوچک را فراهم میکند که میتوان از آنها برای تأیید اعتبار دادههای ارسالی قبل یا بعد از انتقال داده استفاده کرد. چنین هش معمولاً در پایین فایل یا رشته تأیید شده قرار دارد. و به این ترتیب، آنها به عنوان یک امضا برای کمک به تأیید صحت اطلاعات عمل می کنند.
بسیار مفید است، برای مثال، زمانی که میخواهیم یک تأیید خودکار اضافه کنیم که به ما امکان میدهد بدانیم آنچه مینویسیم یا دادههایی که به ما رسیده است واقعاً اطلاعات مورد نظر را نشان میدهد یا خیر.
از این نظر، چکسام موجود در بیتکوین (و در سایر ارزهای دیجیتال) بهطور گسترده مورد استفاده قرار میگیرند، و در اینجا با این عملکرد کوچک اما قدرتمند بیشتر آشنا میشویم، و اینکه چگونه به ما کمک میکند بیتکوین را توسعهای امنتر برای همه کنیم.
پیدایش CheckSum
ظهور اولین توابع CheckSum مربوط به کارهای اولیه ویلیام وسلی پترسون ، دانشمند کامپیوتر و ریاضیدانی است که چندین سال را صرف تحقیق، طراحی و اجرای اولین CheckSum در جهان کرد. به طور خاص، پترسون اولین تابع CheckSum را در سال ۱۹۶۱ طراحی کرد، CRC معروف (تأیید توسط افزونگی چرخهای)، که بعداً به استانداردهای صنعتی مانند CRC8 یا CRC32C، در میان سایر موارد که از بسیار گسترده مشتق شدهاند، حیات بخشید. استفاده کنید.


از آن زمان، توابع CheckSum بخشی ضروری از زندگی ما بوده است. از یک پخش کننده سی دی ساده، از طریق تلویزیون، سیستم های تبدیل دیجیتال آنالوگ و بالعکس، انتقال داده ها از طریق کابل (مانند اترنت رایانه های ما) یا از طریق رادیو (مانند آنهایی که توسط تلفن های همراه ما ساخته می شوند). به طور خلاصه، سودمندی چکسام غولپیکر است و مطمئناً در مواردی وجود دارد که حتی فکرش را هم نمیکنید که اعمال شود.
از سوی دیگر، ویلیام دبلیو پیترسون تا زمان مرگش در ۶ مه ۲۰۰۹ توسعهدهنده بزرگ فناوریها و بهبود زبان برنامهنویسی بود. به افتخار او، شرکتهای اینتل و AMD عملکرد CRC32c را به پردازندههای مربوطه خود اضافه کردند. این به طور گسترده ای شناخته شده ترین تابع چک جمع پترسون است، و هنوز هم به طور گسترده در صنعت استفاده می شود.
CheckSum چگونه کار می کند؟
تابع CheckSum با استفاده از یک الگوریتم ساده ایجاد شده است. هدف این کار استفاده از یک سری عملیات پیچیده ریاضی و منطقی برای تبدیل یک جریان داده به یک رشته اعداد ثابت به نام Checksum Hash است.
سپس از این هش کوچک برای بررسی سریع اینکه آیا یک داده خاص آسیب دیده است استفاده می شود. چه از طریق ذخیره سازی (داده هایی که به اشتباه نوشته شده یا خوانده شده اند) یا با انتقال آن (شبکه های انتقال همیشه دارای تلفات مربوط به عوامل مختلف هستند). یا حتی اگر یک هکر بدخواه عمداً آن را اصلاح کرده باشد.
بنابراین، چگونه این عملکرد اجازه می دهد تا یکپارچگی اطلاعات را تأیید کند، به طور گسترده ای در هنگام اشتراک گذاری یا ذخیره داده ها در شبکه استفاده می شود . از آنجایی که داده ها با مقادیر هش تولید شده از خودشان از طریق یک تابع هش همراه هستند، برخی از ویژگی های اضافی را به دست می آورند که به آنها اجازه می دهد تا زمانی که به اشتراک گذاشته یا ذخیره می شوند، تأیید و اعتبارسنجی شوند.
به عنوان مثال، اگر کاربری بخواهد فایلی را در شبکه با کاربر دیگری به اشتراک بگذارد، باید مقدار هش فایل را ارائه کند تا هنگام اعمال تابع هش روی آن فایل، همین مقدار را بتوان به دست آورد. سپس تضمین می شود که فایل به اشتراک گذاشته شده به درستی و بدون تغییر به گیرنده آن رسیده است.
به همین ترتیب، هنگام بایگانی و ذخیره اطلاعات، می توان آن را بعداً با محاسبه و ذخیره نتیجه مقدار هش به دست آمده تأیید کرد. بنابراین، زمانی که یک چک مورد نیاز است، میتوان از مقدار هش ذخیرهشده برای دانستن اینکه آیا اطلاعات به هر دلیلی تغییر کرده است یا خیر، استفاده کرد.
موارد استفاده از تابع CheckSum
موارد استفاده از توابع CheckSum بسیار متنوع است. همانطور که قبلاً اشاره کردیم، آنها بخش های بسیار اساسی در دستگاه های الکترونیکی و به طور کلی محاسبات هستند. اما برای اینکه بتوانید دامنه آن را با وضوح بیشتری درک کنید، در زیر موارد استفاده واقعی و بسیار روزمره از این توابع را مشاهده خواهیم کرد:
تکنولوژی GSM
فناوری GSM که امروزه استفاده از اکثر تلفنهای همراه را برای ما امکانپذیر میسازد، استفاده گستردهای از توابع چکسام در سیستمهای انتقال صدا و داده دیجیتال آنها میکند. به یاد داشته باشیم که اطلاعات دیجیتالی که به شبکه سلولی ارسال می شود به گونه ای کدگذاری، فشرده و مدوله شده است که بتواند با کمترین افت اطلاعات و کیفیت از نقطه ای به نقطه دیگر شبکه سلولی برسد.
اما به عنوان یک شبکه داده از نوع بی سیم، عوامل مختلفی وجود دارد که کیفیت اطلاعات ارسالی را تغییر می دهد. هر نوع تداخلی می تواند باعث از دست رفتن اطلاعات شود و با آن کیفیت خدمات را از دست بدهیم. برای مقابله با این وضعیت از توابع Checksum استفاده می شود. به لطف این توابع، شبکه می تواند به سرعت بررسی کند که اطلاعات ارسالی و دریافتی در شرایط عالی هستند و در غیر این صورت، اگر خطایی تشخیص داده شود، شبکه قادر است در اکثر مواقع با موفقیت سعی در تصحیح آن کند.
بنابراین بله، به لطف توابع چکسام، شما تماسهای صوتی، پیامها و دادههای باکیفیت بالایی در شبکههای تلفن همراه فعلی ما دارید.
حساب های بانکی
یکی دیگر از کاربردهای بسیار رایج توابع چکسام، تأیید صحت اطلاعات موجود در حساب بانکی است. هر بار که شماره حساب بانکی را می بینید، فقط گروهی از شماره هایی که شما را در آن بانک شناسایی می کنند، نمی بینید. اما دادهای نیز وجود دارد که به آنها امکان میدهد صحت اعدادی را که شما دادهاید تأیید کنند.
به عنوان مثال، در حساب های بانکی نوع IBAN، این اعداد کنترلی یا چکی چهار رقم اول هستند. دو مورد اول نشان دهنده کشور مبدا حساب و دو مورد دیگر نشان دهنده شماره کنترل است. این شماره کنترل مربوط به ۱۰ شماره آخری است که حساب بانکی را مشخص می کند. و این به ما تضمین می دهد که هنگام وارد کردن شماره حساب بانکی اشتباه نخواهیم کرد.


آیا می توان از چک جمع ها برای شکستن امنیت آدرس های ارزهای دیجیتال استفاده کرد؟
نادرست!
Checksum فقط یک تابع اضافی است که برای بهبود امنیت استفاده از یک آدرس اعمال می شود و تأثیر آن بر امنیت تولید وجود ندارد. این به این معنی است که چکسامها هرگز برای تولید دادهها در یک کلید خصوصی یا عمومی استفاده نمیشوند، آنها فقط برای بررسی دو طرفه بودن اطلاعات گفته شده و عدم تغییر آنها استفاده میشوند، بنابراین، چکسوم خطر امنیتی در کوتاهمدت را فرض نمیکند.
آدرس ارزهای دیجیتال
از طریق تابع CheckSum می توانید به سرعت و به راحتی تأیید کنید که آدرسی که استفاده می کنید صحیح است. یا اگر برعکس، به هر نحوی تغییر یافته باشد. اجتناب از ارسال ناخودآگاه ارزهای رمزنگاری شده خود به یک آدرس نادرست، نادرست یا ناموجود.
اگرچه، از نظر تئوری، ارسال بیت کوین به آدرسی که وجود ندارد یا اشتباه نوشته شده است غیرممکن است. زیرا این آدرسها، زمانی که تولید میشوند، یک کد جمعآوری شده را در خود جای میدهند. این داده، مقدار هش آدرس را نشان میدهد و دادههای مجموع یک طرح الفبایی عددی خاص به نام Base58Check را تشکیل میدهند .
این چک جمع را مستقیماً در آدرس ذخیره می کند. و به این ترتیب، اگر آدرسی اشتباه وارد شود، جمعهای چک هر دو آدرس با هم مطابقت ندارند. به این ترتیب کیف پول از انجام تراکنش در صورت وارد کردن اشتباه آدرس ها جلوگیری می کند.
در بیت کوین، تابع هش SHA-256 دو بار برای تولید هش ۳۲ بایتی اعمال می شود، جایی که ۴ بایت اول (۳۲ بیتی) به عنوان جمع کنترلی برای تشخیص اشتباهات املایی در آدرس ها در نظر گرفته می شود. و اگرچه از طریق این مجموع تأیید، کلیدهای مرتبط با آدرس را نمی توان به دست آورد، اگر تأیید کلیدهای مذکور را اجازه دهد. بنابراین، می توان از خطا در هنگام انجام معامله جلوگیری کرد.
این روش ساده تضمین می کند که هنگام وارد کردن آدرس بیت کوین اشتباه نکنید. در واقع، احتمال اشتباه شما ۱ در ۴.۲۹۴.۹۶۷.۲۹۵ است.






