وانفینکس

رمزنگاری (Cryptography)

5 آبان 1405

318

زمان تقریبی مطالعه: 5 دقیقه

رمزنگاری به روش‌هایی گفته می‌شود که با کمک ریاضیات از اطلاعات محافظت می‌کنند. رمزکردن پیام برای پنهان‌کردن محتوای آن، تنها یکی از این روش‌هاست. رمزنگاری همچنین می‌تواند به گیرنده کمک کند بفهمد داده در مسیر تغییر کرده است یا امضای یک پیام با کلید مشخصی سازگار است. به همین دلیل، این واژه در بحث کریپتوکارنسی اغلب کنار مفاهیمی مثل کلید خصوصی، امضای دیجیتال و هش دیده می‌شود.

کاربرد این ابزارها به معنای محرمانه‌بودن همه اطلاعات یک شبکه نیست. برای نمونه، دفتر کل بیت‌کوین عمومی است و تراکنش‌های ثبت‌شده در آن دیده می‌شوند. رمزنگاری در چنین شبکه‌ای کارهای مشخصی انجام می‌دهد: امکان بررسی امضاها را فراهم می‌کند و کمک می‌کند تغییر داده‌های ثبت‌شده آشکار شود. هر کدام از این کارها سازوکار و محدودیت خود را دارند.

advertise blog post start

رمزنگاری چگونه کار می‌کند؟

یکی از ابزارهای آن، رمزنگاری کلید عمومی است. در این روش، یک کلید خصوصی و یک کلید عمومی به هم مربوط‌اند. دارنده کلید خصوصی می‌تواند داده‌ای را امضا کند و دیگران با کلید عمومیِ متناظر، اعتبار امضا را بررسی کنند. در یک تراکنش رمزارزی، امضا به شبکه کمک می‌کند بررسی کند درخواست خرج‌کردن با کلید مجاز سازگار است. کلید عمومی را می‌توان در اختیار دیگران گذاشت، اما کلید خصوصی باید نزد دارنده‌اش محرمانه بماند.

ابزار دیگر، تابع هش رمزنگاری است. این تابع از داده‌ای با طول متغیر، خروجی‌ای با طول ثابت می‌سازد. اگر داده تغییر کند، خروجی محاسبه‌شده نیز معمولاً عوض می‌شود؛ از همین ویژگی برای بررسی تغییرات استفاده می‌کنند. طراحی تابع هش مناسب باید پیدا کردن ورودی از روی خروجی و یافتن دو ورودی متفاوت با خروجی یکسان را از نظر محاسباتی دشوار کند. هش با رمزکردن تفاوت دارد: قرار نیست بتوان متن اصلی را با «بازکردن» هش به دست آورد.

در بلاک چین بیت‌کوین، هش تراکنش‌ها در ساختار داده هر بلوک به کار می‌رود و سرآیند هر بلوک نیز هش سرآیند بلوک پیشین را نگه می‌دارد. بنابراین دست‌کاری یک تراکنش ثبت‌شده، داده‌های وابسته به آن را تغییر می‌دهد و هنگام بررسی بلوک‌ها آشکار می‌شود. رمزنگاری بخشی از این فرایند است؛ قواعد اعتبارسنجی و مکانیزم اجماع نیز تعیین می‌کنند شبکه کدام سوابق را می‌پذیرد.

یک مثال ساده

فرض کنید سارا می‌خواهد مقدار فرضی‌ای از یک رمزارز را به دوستش بفرستد. کیف پول او درخواست تراکنش را با کلید خصوصی‌اش امضا می‌کند. گره‌های شبکه با اطلاعات عمومیِ لازم بررسی می‌کنند که امضا برای داده‌های همان تراکنش معتبر است. اگر کسی بخشی از داده‌ای را که امضا پوشش می‌دهد تغییر دهد، بررسی امضا دیگر نتیجه قبلی را نخواهد داشت.

حالا فرض کنید تراکنش در یک بلوک ثبت شده است. هش‌های به‌کاررفته در ساختار بلوک به گره‌ها کمک می‌کنند تغییر داده ثبت‌شده را تشخیص دهند. این مثال دو وظیفه جدا را نشان می‌دهد: امضا برای بررسی مجوزِ مرتبط با کلید به کار می‌رود و هش برای بررسی یکپارچگی داده. معتبر بودن امضا به‌تنهایی نمی‌گوید سارا در دنیای واقعی چه کسی است یا طرف مقابل به تعهدی خارج از شبکه عمل خواهد کرد.

کاربردهای عملی

کاربر هنگام ارسال دارایی دیجیتال بیشتر با امضای تراکنش سر و کار دارد، هرچند کیف پول معمولاً محاسبات را در پس‌زمینه انجام می‌دهد. بررسی امضا به شبکه امکان می‌دهد درخواست‌های معتبر را از درخواست‌هایی که با کلید مربوط سازگار نیستند جدا کند. هش نیز در شناسه‌گذاری و بررسی داده‌های تراکنش و بلوک کاربرد دارد. این ابزارها برای کارکرد شبکه‌های رمزارزی لازم‌اند، اما تصمیم‌گیری درباره اعتبار تراکنش فقط به یک امضا یا یک مقدار هش وابسته نیست.

بیرون از انتقال رمزارز هم همین ابزارها کاربرد دارند. امضای دیجیتال می‌تواند برای بررسی منشأ و یکپارچگی یک پیام به کار رود. رمزکردن داده، در کاربرد مناسب خود، محتوای آن را از کسانی که کلید دسترسی ندارند پنهان می‌کند. انتخاب ابزار به هدف بستگی دارد: پنهان‌کردن محتوا، تشخیص تغییر داده و بررسی امضا مسئله‌های متفاوتی هستند.

محدودیت‌ها و نکات امنیتی

امنیت رمزنگاری به الگوریتم مناسب و اجرای درست آن وابسته است. اگر کلید خصوصی افشا شود، مهاجم ممکن است بتواند با آن امضا تولید کند؛ در چنین وضعی، معتبر بودن امضا دیگر به معنای رضایت صاحب اصلی کلید نیست. از سوی دیگر، امضای دیجیتال به‌خودی‌خود محتوای تراکنش را محرمانه نمی‌کند. همچنین یک هش، درست‌بودن ادعای نوشته‌شده در داده را ثابت نمی‌کند؛ فقط امکان مقایسه داده و تشخیص تغییر آن را فراهم می‌سازد.

پس هنگام ارزیابی امنیت یک سامانه، باید پرسید کلیدها چگونه نگهداری می‌شوند، دقیقاً کدام داده‌ها امضا می‌شوند و شبکه چه قواعدی برای پذیرش تراکنش دارد. وجود واژه «رمزنگاری» در توضیح یک محصول، به‌تنهایی تضمینی برای امن‌بودن کیف پول، سالم‌بودن نرم‌افزار یا قابل‌اعتمادبودن طرف معامله نیست.

آیا مطالعه این مقاله برای شما مفید بود؟!

advertise blog post end