۱۴۰۳/۳/۲
Search
Close this search box.

رمزنگاری چیست؟

خود واژه کریپتوکارنسی یا رمزارز نشان می‌دهد که جایگاه رمزنگاری (Cryptography) در دنیای بلاکچین و ارزهای دیجیتال، چقدر مهم و حیاتی است. اگر در دنیای کریپتوکارنسی‌ها یک تازه‌وارد هستید، حتما سوالات زیادی ذهن شما را درگیر کرده است.

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

رمزنگاری (Cryptography) چیست؟

CRYPTOGRAPHY 1024x526 1
منبع:Educba.com

کریپتوگرافی (Cryptography) یا رمزنگاری دانشی است که از طریق آن می‌توانیم اطلاعات و پیام‌ها را به صورت امن و مخفی منتقل و یا ذخیره کنیم. به عبارت ساده‌تر، دانش کریپتوگرافی به ما کمک می‌کند که پیام خود را به صورت محرمانه به مقصد مورد نظرمان برسانیم. کلمه Cryptography برگرفته از دو لغت یونانی Kryptos به معنای محرمانه و graphien به معنای نوشتن است.

رمزنگاری مدرن ترکیبی از قواعد ریاضیات، علوم رایانه، فیزیک، مهندسی و سایر موارد است. دو اصطلاح مهم در این حوزه وجود دارند که عبارتند از:

  • رمزگذاری (Encryption): کدگذاری (Encoding) متن و تبدیل آن به فرمت غیرقابل خواندن
  • رمزگشایی (Decryption): عمل معکوس کدگذاری و تبدیل پیام‌های ناخوانا به شکل اصلی خود
رمزنگاری
منبع: Theblogchatter.Com

نخستین سیستم رمزنگاری ۴۰۰ سال قبل از میلاد به‌دست قوم اسپارت شکل گرفت. آن‌ها برای جابه‌جایی حروف در متن پیام از ابزاری به نام اسکای‌تیل (Scytale) استفاده می‌کردند تا پیام برای دشمن غیرقابل خواندن شود. گیرنده پیام می‌توانست برای رمزگشایی متن از ابزار خودش استفاده کند. به این ترتیب دشمنانی که پیام را رهگیری می‌کردند قادر به خواندن و فهم آن نبودند. اما در صورتی که دشمن موفق به تصرف یک اسکای‌تیل می‌شد، می‌توانست همه پیام‌های مخفی را رمزگشایی کند.

رمز سزار (Caesar cipher)

CEZAR CYPHER 1024x526 1
منبع: Geeksforgeeks.Org

به گفته یک مورخ رومی به نام سئوتونیوس (Seutonius)، ژولیوس سزار (Julius Caesar) سردار رومی، از سیستم مشابهی استفاده کرده است. در این الگوریتم رمزنگاری، هر حرف با حرفی که سه مرحله بعد از آن در جدول الفبا قرار داشت جایگزین می‌شد. بنابراین طبق این الگوریتم، پیام “March south and attack” به “Pdufk vryxk dqg dxxdfn” تبدیل می‌شود. امروز این سیستم «رمز سزار» (Caesar cipher) نام دارد و معمولا یکی از اولین سیستم‌هایی است که دانشجویان رمزنگاری می‌آموزند.

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

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

رمزنگاری متقارن (Symmetric cryptography)

رمزنگاری متقارن
منبع: ssl2buy.com

سیستم‌های رمزنگاری اولیه‌ای که تا اینجا (اسکای‌تیل و رمز سزار) معرفی شدند، نمونه‌هایی از رمزنگاری متقارن هستند. یک سیستم رمزنگاری متقارن فقط یک کلید دارد. هر دو طرف باید از کلید رمز مطلع باشند و در غیر این‌صورت، سیستم برای آن‌ها قابل استفاده نیست.

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

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

رمزنگاری نامتقارن (Asymmetric Cryptography)

رمزنگاری نامتقارن
منبع: ssl2buy.com

در سیستم‌های رمزنگاری نامتقارن (Asymmetric Cryptography)، هر کاربر به جای یک کلید، دو کلید در اختیار دارد. یک کلید عمومی (Private Key) و یک کلید خصوصی (Public Key). کاربر می‌تواند کلید عمومی را به سایر کاربران سیستم بدهد، اما کلید خصوصی باید در اختیار خودش محفوظ بماند.

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

تصور کنید چهار نفر به نام‌های جیل (Jill)، باب (Bob)، ریک (Rick) و تانیا (Tanya) می‌خواهند پیام‌های مخفیانه‌ای را برای یکدیگر ارسال کنند. هر یک از اعضای گروه مراحل زیر را انجام می‌دهند:

  • تولید یک کلید خصوصی و یک کلید عمومی
  • افراد گروه کلید عمومی را به سایر اعضای گروه می‌دهند.
  • هر یک از اعضای گروه کلید خصوصی خودشان را در جایی امن نگهداری می‌کنند تا امکان دسترسی دیگران به کلید وجود نداشته باشد.

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

PRIVATE VS PUBLIC KEY 1024x526 1
منبع: Security.Org

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

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

حل مشکل رهگیری پیام در سیستم‌های رمزنگاری

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

بنابراین او می‌تواند به پیام‌های عمومی منتشر‌شده در گروه دسترسی داشته باشد. اما از آنجایی که به هیچ کلید خصوصی دسترسی ندارد، نمی‌تواند هیچ پیام خصوصی را بخواند یا هویت یکی از اعضا را جعل کند.

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

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

هشینگ تضمینی برای دریافت پیام بدون دستکاری

HASHING 1024x526 1
منبع: Signmycode.Com

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

به طور مثال فرض کنید فردی به نام جو (Joe) می‌خواهد پیامی را به متصدی بانک خود ارسال کند و بگوید: «۱۰۰ دلار برای ند بفرست (Send $100 to Ned).» او نگران این است که هکری با نام مستعار Evil پیام را رهگیری کند و آن را به عبارت «۱۰۰ دلار برای Evil بفرست» تغییر دهد. جو برای جلوگیری از دستکاری پیام می‌تواند اقدامات زیر را انجام دهد:

  • هش کردن پیام «۱۰۰ دلار برای Ned بفرست» به کمک یک تابع هش مشخص
  • ارسال هش برای متصدی بانک
  • ارسال متن اصلی پیام چند روز بعد

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

نحوه استفاده از رمزنگاری در ارزهای دیجیتال

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

استفاده از جفت کلید عمومی و خصوصی

هنگامی که برای اولین بار یک کیف پول ارز دیجیتال را راه‌اندازی می‌کنید، یک کلید عمومی و یک کلید خصوصی برای شما تولید می‌شود. سپس کلید عمومی شما هش می‌شود و یک رشته کاراکتر به نام «آدرس» ایجاد می‌شود.

اگر بخواهید برای شخصی ارز دیجیتال ارسال کنید، باید آدرس گیرنده را داشته باشید. بنابراین مانند تانیا در مثال قبل، به مرور زمان فهرستی از آدرس‌های دوستان و همکاران خود را خواهید داشت.

نحوه ارسال ارز دیجیتال

فرض کنید می‌خواهید ۱۰۰ اتریوم (ETH) برای جو به آدرس 0x34c7ac346E5585e4f91311673aca7e2B8aC45Fae ارسال کنید. زمانی که در کیف‌پول خود دستور ارسال این تراکنش را اجرا می‌کنید، نرم‌افزار کیف‌ پول یک پیام متنی ساده را (به صورت کد) برای اعتبارسنج (ولیدیتور) شبکه می‌فرستد و به او می‌گوید: «لطفا ۱۰۰ اتر برای آدرس 0x34c7ac346E5585e4f91311673aca7e2B8aC45Fae بفرست.»

همراه با این پیام متنی ساده دو داده دیگر هم ارسال می‌شود:

  • هش پیام شما محاسبه شده و سپس با کلید خصوصی شما رمزنگاری‌ می‌شود، سپس یک کپی از آن ارسال می‌شود 
  • یک کپی از کلید عمومی شما

هنگامی که ولیدیتور پیام را دریافت می‌کند، طبق مراحل زیر پیش می‌رود:

  • برای تعیین آدرس شما، کلید عمومی را هش می‌کند.
  • موجودی آدرس شما را بررسی می‌کند تا ببیند آیا ۱۰۰ اتر لازم را دارید یا خیر. اگر به مقدار کافی اتر نداشته باشید با پیام «موجودی ناکافی» (Insufficient Funds) پاسخ پیام را می‌دهد.  
  • نسخه رمزنگاری‌شده پیام را با استفاده از کلید عمومی شما رمزگشایی و هش آن را آشکار می‌کند.
  • متن پیام اصلی را هش می‌‌کند.

حالا دو هشِ حاصل از نسخه کپی (هش رمزگشایی‌شده) و پیام اصلی (تبدیل پیام به هش) مقایسه می‌شوند. در صورت تطابق هش‌ها، تراکنش «معتبر» (Valid) تلقی شده و در غیر این‌صورت برگشت داده می‌شود. اگر تراکنش معتبر باشد، ۱۰۰ اتر از موجودی آدرس شما کم و به آدرس جو اضافه می‌شود.

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

لازمه کارایی سیستم رمزنگاری نامتقارن تنها یک شرط است: «کلید خصوصی کاربر باید همیشه امن بماند.» با خواندن این مقاله قطعا متوجه شده‌اید که کلید خصوصی چقدر مهم است و به هیچ عنوان نباید کسی به کلید خصوصی و عبارت بازیابی کیف پول شما دسترسی پیدا کند.

پرسش و پاسخ (FAQ)

  • رمزنگاری چیست؟
    رمزنگاری یا Cryptography علمی است که به کمک آن می‌‌توانیم پیام‌ها را به صورت امن و محرمانه منتقل و ذخیره کنیم.
  • تفاوت رمزنگاری متقارن و نامتقارن چیست؟
    در رمزنگاری متقارن از یک کلید یکسان برای رمزگذاری و رمزگشایی استفاده می‌شود، در حالی که در رمزنگاری نامتقارن کلید عمومی و خصوصی داریم که از یکی برای رمزگذاری و از دیگری برای رمزگشایی استفاده می‌کنیم.
  • مزایای استفاده از رمزنگاری در ارزهای دیجیتال چیست؟
    با استفاده از رمزنگاری نامتقارن می‌توانیم از حفظ محرمانگی اطلاعات، ارسال پیام توسط فرستنده و نه شخص دیگر و عدم تغییر پیام فرستنده اطمینان حاصل کنیم.

جمع‌بندی

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

در این مقاله آموختیم که رمزنگاری چیست و چه کاربردی در ارزهای دیجیتال دارد. اکنون دلیل استفاده از کلیدهای عمومی و خصوصی و اهمیت حفظ Private Key را به‌خوبی می‌دانیم. نظر شما در مورد امنیت سیستم‌های رمزنگاری فعلی در آینده چیست؟ آیا ممکن است پردازشگرهای قوی امنیت رمزارزها را به خطر بیاندازند؟

اسکرول به بالا