به یاد دارم در سنین کودکی، همیشه به دنبال آن بودم یک زبان جدید اختراع کنم تا هنگام صحبت کردن با دوستانم، اطرافیان متوجه حرفهای ما نشوند! آن زمان از کریپتوگرافی چیزی نمیدانستم اما رمزنگاری حرفها و سخنان برایم بسیار جذاب بود.
کریپتوگرافی (Cryptography) یا رمزنگاری دانشی است که افراد به وسیله آن میتوانند اطلاعات و پیامهای خود را به صورت امن ذخیره یا منتقل کنند؛ کریپتوگرافی در زبان یونانی از دو لغت kryptós به معنای “راز، پنهان” و graphein به معنای “نوشتن” گرفته شده است.
رمزنگاری کاری بود که من انجام میدادم، پیامی را برای دوستم مینوشتم و او نیز میتوانست آن را بخواند. این دانش و هنر هزاران سال قدمت دارد؛ از نامهها و تلگرافهای جنگ جهانی تا کارتهای بانکی و تجارت الکترونیک و ارزهای دیجیتال، همه این دانش را بهکار بردهاند.
کریپتوگرافی از کجا شروع شد؟
زمانی که نامهی رمزنگاری شده مینوشتم، از یک تکنیک کوچک استفاده میکردم؛ ما قراردادی داشتیم مبنی بر اینکه هر یک از حروف الفبا با ترتیبی خاص با حروف دیگری جابجا شوند. در ابتدا عدد مورد نظر را مینوشتیم و با توجه به آن عدد حروف الفبا را تغییر میدادیم.
به عنوان مثال: ۳ <- “اثضتپچ تسشچازپ” این عبارت رمزگذاری شده، یعنی هر یک از حروف نوشته شده باید ۳ حرف به عقب بازگردند تا جمله موردنظر رمزگشایی شود که اگر این کار را انجام دهیم عبارت “وبسایت اوکی ایکس” را بهدست خواهیم آورد. ^-^
این روش در گذشتههای دور توسط Julius Caesar معروف مورد استفاده قرار میگرفت؛ او با این روش یک متن را رمزنگاری میکرد و سپس میتوانست به حالت قبل بازگرداند.
مدتها بعد در قرن ۱۶ میلادی، فردی به نام Giovan Battista Bellaso که در حوزه کریپتولوژیست فعالیت میکرد، شیوه جدید Vigenere cipher را طراحی کرد و به عنوان اولین شیوه رمزنگاری و کریپتوگرافی با کلید مشهور شد.
در این روش متن ما با استفاده از یک کلمه به عنوان کلید و یک جدول که در ۲۶ ردیف حروف الفبا در آن نوشته شده است، رمزنگاری میشود و سپس به گیرنده تحویل داده میشود.
پس از گذشت سالها و با ورود کامپیوترها، الگوریتمهای کریپتوگرافی و رمزنگاری پیچیدهتر از گذشتههای دور شدند؛ اما هدف کریپتوگرافی همان است: انتقال اطلاعات و پیامها به صورت رمزنگاری شده بین مبدا و مقصد رخ دهد.
کریپتوگرافی (Cryptography) چیست؟
همانطور که پیشتر گفتیم، کریپتوگرافی و رمزنگاری روشی است که اطلاعات و پیامها به صورت ایمن و مطمئن ذخیره و در نهایت منتقل میشوند؛ طوری که تنها فرستنده و گیرنده میتوانند آن را بخوانند.
در علوم کامپیوتر، رمزنگاری از طریق الگوریتمهایی که با استفاده از قواعد ریاضی، فیزیک، مهندسی و… طراحی میشوند صورت میگیرد. این الگوریتمها به صورتی پیامها و اطلاعات را رمزنگاری میکنند که به راحتی قابل رمزگشایی و خواندن نباشد.
این الگوریتمهای کریپتوگرافی برای امضای دیجیتال، جستجو در اینترنت، تراکنشهای کارت اعتباری، ایمیلها، پیامهای شبکههای اجتماعی، قراردادهای هوشمند، کیف پولهای ارز دیجیتال، رمزنگاری کلید عمومی و در کل حوزه بلاک چین کاربرد دارد.
اهداف کریپتوگرافی
هدف از رمزنگاری، ساخت الگوریتمها و پروتکلهایی است که بتوانند بستری امن و مطمئن برای انتقال اطلاعات ایجاد کنند؛ این بستر امن توسط عناصری مهم ساخته میشود که تمام الگوریتمها و پروتکلها از این عناصر پیروی میکنند. این عناصر عبارتند از:
۱. محرمانه بودن (Confidentiality)
هنگامی که اطلاعات رمزنگاری میشوند، به این معناست که دادهها و اطلاعات نباید در اختیار افراد غیرمجاز قرار بگیرد.
۲. یکپارچگی دادهها (Data Integrity)
یکپارچگی دادهها به ما این مفهوم را میفهماند که اطلاعات هنگام ارسال یا دریافت نباید دستکاری یا دچار تغییر شوند.
۳. عدم انکار (Non Repudiation)
عدم انکار به این معناست که ارسالکننده نمیتواند اطلاعات ارسال شده و هدف از ارسال آنها را انکار یا تکذیب کند.
۴. احراز هویت (Authentication)
برای اینکه در رمزنگاری شخص فرستنده و گیرنده از ارسال و دریافت اطلاعات توسط شخص مورد نظر مطمئن شوند، باید احراز هویت صورت پذیرد.
الگوریتمهای رمزنگاری
اگر از اولین شیوه رمزنگاری تا جدیدترین نوع آن را نگاهی کلی بیاندازیم، متوجه میشویم که با پیشرفت تکنولوژی، ساختار ارسال اطلاعات و پیام به صورت ایمن و مخفی نیز پیشرفتهتر شدهاند. روشهای رمزنگاری توسعه یافتند و اکنون میتوان گفت از سه الگوریتم کلی برای این کار استفاده میکنند که شامل الگوریتم متقارن، نامتقارن و توابع هش هستند.
۱. کریپتوگرافی متقارن (Symmetric)
رمزنگاری متقارن، روی یک کلید تمرکز دارد؛ یعنی فرستنده و گیرنده یک کلید عمومی را با یکدیگر به اشتراک میگذارند که از این کلید برای رمزگذاری و رمزگشایی استفاده میشود؛ البته این کلید بین مبدا و مقصد پنهان خواهند ماند.
این دسته از الگوریتمها از تکنیک جانشینی و جابجایی دادهها برای رمزنگاری استفاده میکنند؛ برخی از معروفترین الگوریتمهای متقارن عبارتند از:
- DES
- ۳DES
- AES
۲. کریپتوگرافی نامتقارن (Asymmetric)
رمزنگاری نامتقارن، از دو کلید عمومی و خصوصی برای ارسال و دریافت دادهها استفاده میکند. در مبدا اطلاعات یعنی همان بخش ارسال، دادهها با کلید عمومی رمزگذاری میشوند و در مقصد که دادهها دریافت میشوند، با استفاده از کلید خصوصی رمزگشایی خواهند شد.
سطح امنیت دادهها با الگوریتمهای نامتقارن، افزایش چشمگیری دارد چرا که کلیدها بر اساس توابع پیچیده ریاضی به یکدیگر متصل میشوند. افرادی که کلید عمومی را در اختیار دارند، میتوانند برای رمزنگاری اطلاعات از آن استفاده کنند اما تنها کسی که کلید خصوصی را در اختیار داشته باشد، میتواند پیام را رمزگشایی کند.
از این الگوریتم در امضای الکترونیک، کارتهای هوشمند، کیف پولهای ارز دیجیتال و… استفاده میشود. برخی از این نوع الگوریتمها عبارتند از:
- RSA
- ECC
- DSA
- Diffie-Hellman
- ELGamal
۳. توابع هش (Hash)
هشینگ دادهها، یکی از الگوریتمهایی است که در دنیای بلاک چین هم کاربرد فراوانی دارد. توابع هش به جای استفاده از کلیدهای عمومی و خصوصی، از الگوریتمها و روابط ریاضی برای هش کردن دادهها استفاده میکنند.
در این توابع فرقی نمیکند ورودی اطلاعات شما ۵ کاراکتر باشد یا ۵۰ کاراکتر، در نهایت خروجی یک رشته با طول ثابت دریافت میکنید؛ یعنی شما یک رشته با طول متغیر را وارد و سپس یک رشته با طول ثابت دریافت میکنید.
توابع هش ۳ مولفه اصلی دارند:
قطعی: ارسال یک ورودی ثابت به صورت چند باره، تفاوتی در خروجی ایجاد نمیکند.
برگشتناپذیر: به صورت یکطرفه کار میکنند و تعیین ورودی از خروجی غیرممکن خواهد بود.
تفکیکپذیر: هرگز دو ورودی متفاوت، خروجی یکسان نخواهند داشت.
از کاربردهای تابع هش میتوانیم به رمز عبور در سایتهای مختلف اشاره کنیم؛ هنگامی که شما رمز عبور خود را میسازید، در پایگاهداده سایت، این پسورد هش خواهد شد تا در صورت حمله به دیتابیس، اطلاعات کاربران به خطر نیفتد.
البته کاربرد دیگری که پیشتر به آن اشاره کردیم، استفاده از توابع هش در بلاک چین است. هنگامی که بلاکی در بلاک چین ساخته میشود، اطلاعات آن هش خواهد شد و در نتیجه دادهها ایمن میمانند. با توجه به مولفههای اصلی تابع هش میتوانیم بگوییم به همین دلیل است که دادههای بلاک چین پس از ثبت هرگز تغییر نمیکنند.
کریپتوگرافی و کریپتوکارنسی
گفتیم که کریپتو در زبان یونانی به معنای “راز و مخفی بودن” است؛ و دقیقا همین کلمه را در کریپتوکارنسی نیز مشاهده میکنید.
از آنجا که در حوزه بلاک چین و ارزهای دیجیتال نهاد نظارتی و قوانین و مقررات خاصی وجود ندارد، مبحث کریپتوگرافی و رمزنگاری باعث جلب اعتماد مردم میشود تا با خیالی راحتتر وارد بازار ارزهای دیجیتال شوند.
اما چرا کریپتوگرافی در حوزه بلاک چین و ارزهای دیجیتال دارای اهمیت است؟ و چرا معاملهگران و سرمایهگذاران این ویژگی را دوست دارند؟
دادهها در بلاک چین دارای امنیت و شفافیت هستند؛ چنین ویژگی تنها با استفاده از کریپتوگرافی و رمزنگاری دادهها قابل انجام است که در نهایت منجر به اعتماد کاربران میشود. با توجه به اینکه ارزهای دیجیتال از فناوری بلاک چین استفاده میکنند، میتوان گفت، ماهیت اصلی کریپتوکارنسی، کریپتوگرافی است.
اولین بار ساتوشی ناکاموتو برای حل مشکل دوباره خرج کردن، رمزارزی به نام بیت کوین را معرفی کرد که با استفاده از مباحث کریپتوگرافی و بلاک چین به آن رسیده بود؛ پس از آن اتریوم، قراردادهای هوشمند، امضای دیجیتالی، هارد فورکهای بیت کوین و… نیز این مسیر را برای حل مشکلات دیگر ادامه دادند.
سخن پایانی
کریپتوگرافی و رمزنگاری دادهها میتواند به ما در ارسال امن اطلاعات کمک شایانی کند، این کمکها را امروزه در بسیاری از نقاط زندگی روزمره خود مشاهده میکنیم؛ به عنوان مثال کارتهای هوشمند، ایمیل، بلاک چین و بیت کوین و حتی پیامهایی که در برخی از شبکههای اجتماعی ارسال میکنیم، نمونههایی از استفاده کریپتوگرافی در زندگی عادی ما هستند.
به عبارتی سادهتر، در دنیای مدرن ما که اکثر اطلاعات به صورت دیجیتالی جابجا میشوند، نیاز به کریپتوگرافی بیش از همیشه احساس میشود تا امنیت و شفافیت دادهها به خوبی تامین شود. با پیشرفت تکنولوژی الگوریتمها توابع پیشرفته رمزنگاری توسعه یافتند و اکنون میتوان از مسائلی مانند جرایم سایبری و تخلفات آنلاین جلوگیری کرد.