زمانی که صحبت از امنیت بازار ارزهای دیجیتال میشود، چه پاسخی برای تضمین امنیت این حوزه وجود خواهد داشت؟ آیا میتوانیم از امنیت این بازار اطمینان حاصل کنیم و با خیالی آسوده به معامله ارزهای دیجیتال بپردازیم؟ در پاسخ باید بگوییم بله. اگر بلاک چین و ارزهای دیجیتال امنیت را تضمین نمیکردند، قطعا محبوبیت اکنون خود را نداشتند. روشهای مختلفی برای تضمین امنیت بلاک چین وجود دارد که یکی از آنها امضای دیجیتال است.
امضای دیجیتال چیست؟
امضای دیجیتال (digital signature) یک مکانیسم رمزنگاری شده است که برای تایید صحت و یکپارچگی دادههای دیجیتال مانند یک پیام، نرمافزار، اطلاعات محرمانه یا سندی دیجیتالی استفاده میشود؛ به عبارتی، میتوانیم آن را به عنوان یک امضای دیجیتالی یا دستنویس معمولی توصیف کنیم که سطوح بالاتر و پیچیدهتری از امنیت را ارائه میدهد.
به زبان ساده، هنگامی که از digital signature استفاده میشود سه چیز تایید خواهد شد:
۱. دادهها از یک فرستنده امن ارسال شدهاند. (احراز هویت)
۲. دادهها در طول مسیر دستکاری نشدهاند. (یکپارچکی دادهها)
۳. فرستنده نمیتواند دادههای ارسال شده را رد یا انکار کند. (عدم انکار)
توابع هش (Hash Functions)
هش کردن فرآیندی است که در آن دادههای ورودی با هر اندازهای به یک خروجی مشخص و با اندازه ثابت تبدیل میشوند. در این توابع دادههای ورودی محدودیتی برای اندازه ندارند، بنابراین میتوان گفت انعطافپذیری قابل توجهی در انتخاب ورودیها ارائه شده است. همچنین خروجی تولید شده از تابع هش، به عنوان مقدار هش یا خلاصه دادهها شناخته میشود.
هنگامی که توابع هش با کریپتوگرافی ترکیب شوند، به اصطلاح به آم “توابع هش رمزنگاری” میگویند که میتوان از آن برای تولید مقدار هش (خلاصه دادهها) استفاده کرد که به عنوان یک اثر انگشت دیجیتالی منحصر به فرد عمل خواهد کرد.
این موضوع به این معناست که هر تغییری در دادههای ورودی منجر به تغییر خروجی شده و یک مقدار هش کاملا متفاوت خواهیم داشت! به همین دلیل، از توابع هش رمزنگاری برای تایید صحبت دادههای دیجیتال استفاده میشود.
رمزنگاری کلید عمومی (PKC)
رمزنگاری کلید عمومی یا Public-key cryptography به یک سیستم رمزنگاری اشاره دارد که از یک جفت کلید استفاده میکند: کلید عمومی و کلید خصوصی. این دو کلید از نظر ریاضی به هم مرتبط هستند و میتوانند برای رمزگذاری (encryption) دادهها و نیز امضای دیجیتال استفاده شوند.
به عنوان یک ابزار رمزگذاری، رمزنگاری کلید عمومی از سایر روشهای رمزگذاری ایمنتر است، زیرا در این روش از دو کلید عمومی و خصوصی استفاده میشود اما سیستمهای قدیمی به یک کلید متکی هستند.
علاوه بر این موضوع، از رمزنگاری کلید عمومی در تولید یک digital signature استفاده میشود. این فرآیند شامل هش کردن دادهها به همراه کلید خصوصی امضاکننده است، سپس گیرنده دادهها، با استفاده از کلید عمومی ارائه شده توسط امضاکننده میتواند اعتبار امضای دیجیتال را بررسی کند.
امضای دیجیتال چگونه کار میکند؟
یک سیستم digital signature در دنیای ارزهای دیجیتال، از سه مرحله اساسی تشکیل شده است: هش، امضا و تایید.
۱. هش کردن دادهها
اولین قدم هش کردن دادههای دیجیتال است. این کار با ارسال دادهها از طریق یک الگوریتم هش انجام میشود تا یک مقدار هش تولید شود (همان خلاصه دادهها). همانطور که گفتیم، دادههای ورودی می توانند از نظر اندازه متفاوت باشند، اما زمانی که هش میشوند، تمام مقادیر هش طول یکسانی خواهند داشت؛ این ویژگی، اساسیترین ویژگی یک تابع هش محسوب میشود.
البته هش کردن دادهها برای تولید یک digital signature ضروری نیست، زیرا میتوانیم از کلید خصوصی برای امضای دادهای که اصلا هش نشده است، استفاده کنیم. اما برای ارزهای دیجیتال، دادهها همیشه هش میشوند، زیرا پرداختن به مقدار هش با طول ثابت کل فرآیند را تسهیل میکند.
۲. امضا کردن
پس از هش شدن اطلاعات، فرستنده باید دادهها را امضا کند؛ اینجا جایی است که رمزنگاری کلید عمومی وارد عمل میشود. دادههای هش شده یا همان مقدار هش با یک کلید خصوصی امضا میشوند و گیرنده با استفاده از کلید عمومی که توسط امضاکننده ارائه شده، اعتبار دادهها را بررسی میکند.
به عبارتی، اگر هنگام امضای دادهها از کلید خصوصی استفاده نشود، گیرنده نمیتواند از کلید عمومی مربوطه برای تایید اعتبار دادهها استفاده کند. قابل ذکر است که کلید خصوصی و کلید عمومی توسط فرستنده دادهها تولید میشوند و تنها کلید عمومی با گیرنده به اشتراک گذاشته میشود.
نکته: امضای دیجیتال در بلاکچین با محتوای دادههای ارسال شده به طور مستقیم مرتبط است؛ یعنی هر دادهی امضا شده، دارای امضای دیجیتال متفاوتی است.
۳. تایید کردن
مرحله نهایی در استفاده از امضای دیجیتال در بلاک چین به تایید توسط گیرنده مربوط میشود. گیرنده میتواند اعتبار digital signature را با استفاده از کلید عمومی بررسی کند. بیایید با مثالی این سه فرایند را سادهتر توضیح دهیم:
تصور کنید فرد “الف” پیامی برای فرد “ب” نوشته است، حال آن را هش میکند و سپس مقدار هش را با کلید خصوصی خود ترکیب میکند تا یک امضای دیجیتال تولید کند. این امضا به عنوان یک اثر انگشت دیجیتال منحصربهفرد در آن پیام خاص عمل میکند.
هنگامی که فرد “ب” پیام را دریافت میکند، میتواند اعتبار digital signature را با استفاده از کلید عمومی ارائه شده توسط فرد “الف” بررسی کند. به این ترتیب، فرد “ب” میتواند مطمئن باشد که امضا توسط فرد “الف” ایجاد شده است؛ زیرا کلید عمومی که در دست فرد “ب” است با کلید خصوصی فرستنده مطابقت دارد.
بنابراین بسیار مهم است که فرد “الف” کلید خصوصی خود را مخفی نگه دارد. اگر شخص دیگری کلید خصوصی فرد “الف” را بهدست آورد، میتواند امضای دیجیتالی ایجاد کند و وانمود که همان شخص است!
در زمینه ارزهای دیجیتال و بیت کوین، به این معناست که شخصی میتواند از کلید خصوصی برای جابجایی بیت کوین یا خرج بیت کوینها بدون اجازه او استفاده کند.
چرا امضای دیجیتال اهمیت دارد؟
اغلب از امضای دیجیتال برای رسیدن به سه نتیجه استفاده میشود: یکپارچگی دادهها، احراز هویت و عدم انکار.
برای توضیح این سه نتیجه مثال قبل را در نظر بگیرید:
- یکپارچگی دادهها:
فرد “ب” میتواند تایید کند که پیام فرد “الف” در طول مسیر تغییر نکرده است؛ زیرا هر گونه تغییر در پیام امضای متفاوتی ایجاد میکند.
- احراز هویت و اعتبار:
تا زمانی که فرد “الف” کلید خصوصی خود را مخفی نگه دارد، فرد “ب” میتواند از کلید عمومی خود برای تایید اینکه امضاهای دیجیتال توسط فرد “الف” و نه هیچ شخص دیگری ایجاد شده است، استفاده کند.
- عدم انکار:
هنگامی که امضای دیجیتال تولید شد، فرد “الف” نمیتواند در آینده امضای آن را انکار کند؛ البته در صورتی که کلید خصوصی او به خطر بیفتد میتواند هشدار دهد که ممکن است امضاها متعلق به او نیست.
امضای دیجیتال و موارد استفاده آن
digital signature در موارد مختلفی استفاده میشود و امنیت آنها را تضمین میکند؛ برخی از رایجترین موارد استفاده عبارتند از:
- فناوری اطلاعات: افزایش امنیت سیستمهای ارتباطی اینترنتی.
- سرمایهگذاری: افزایش امنیت در قراردادهای وام، گزارش هزینهها، موارد حساس مالی و….
- حقوقی: تضمین امنیت در قراردادهای تجاری و حقوقی.
- بلاک چین: افزایش و تضمین امنیت و اعتبار تراکنشها در ارزهای دیجیتال.
محدودیتهای امضای دیجیتال
digital signature نیز چالشهایی دارد که به سه چیز بستگی دارد:
- الگوریتم: کیفیت الگوریتمهایی که در طرحهای امضای دیجیتال استفاده میشوند، اهمیت دارد که شامل انتخاب توابع هش قابل اعتماد و سیستمهای رمزنگاری میشود.
- پیادهسازی: اگر الگوریتمها خوب باشند اما نتوانیم پیادهسازی کنیم، سیستم امضای دیجیتال قطعا نقصهایی خواهد داشت.
- کلید خصوصی: اگر کلید خصوصی شخصی سرقت شود و یا به خطر بیفتد، ویژگیهای اعتبار و عدم انکار باطل میشوند! برای کاربران ارزهای دیجیتال، از دست دادن کلید خصوصی ممکن است ضررهای هنگفتی را به همراه داشته باشد.
تفاوت امضای دیجیتال و امضای الکترونیک
گاهی امضای دیجیتال و امضای الکترونیک به جای یکدیگر استفاده میشوند، اما این دو تفاوتهایی دارند؛ اگرچه هر دو اصالت و اعتبار را به اسناد اضافه میکنند، اما این کار به روشهای مختلفی انجام میشود.
امضای الکترونیکی
- میتواند تصویر یک امضا، اثر انگشت، نماد و… باشد.
- هدف اصلی امضای الکترونیکی تایید یک سند است.
- اگر همه افراد یک قرارداد با امضای الکترونیکی موافقت کنند، از نظر قانونی اجباری است.
- سند لزوما امن نیست.
- همه امضاهای الکترونیکی امضای دیجیتالی ندارند.
امضای دیجیتال
- در اصل یک اثر انگشت الکترونیکی است که برای رمزگذاری استفاده میشود.
- هدف اصلی digital signature تایید هویت امضاکننده است.
- امضای دیجیتال سند را احراز هویت میکند.
- از لحاظ قانونی اجباری است.
نتیجهگیری
همانطور که گفتیم توابع هش و رمزنگاری کلید عمومی در هستهی سیستمهای digital signature قرار دارند که اگر به درستی اجرا شود، امنیت را افزایش میدهد، یکپارچگی را تضمین میکند و احراز هویت دادههای دیجیتال را تسهیل میبخشد.
در حوزه بلاک چین، از امضای دیجیتال برای امضا و مجوز تراکنشهای ارزهای دیجیتال استفاده میشود؛ این موضوع به ویژه برای بیت کوین اهمیت دارد، زیرا تضمین میکند که کوینها فقط توسط افرادی که دارای کلید خصوصی هستند، میتوانند خرج شوند.