Picture of حسین نائیجی
حسین نائیجی

غرق در دنیای صفر و یک

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

Cryptologist : استادان ریاضی و رمزشناسی که مهارت ساخت و شکست کد‌ها را دارند.
Cryptanalysis : هنر رمزگشایی پیام‌های رمزگذاری شده. مطالعه سیستم رمزنگاری برای پیدا کردن ضعف یا نشت اطلاعات.

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

رمزنگاری یک روشی برای برهم‌ریختن داده‌ها است. به طوریکه تنها افرادی که مجاز هستند آن را درک کنند.
از نظر فنی ، یعنی فرایندی که یک داده‌ی قابل فهم برای انسان یا human-readable را غیرقابل درک می‌کند.
در دنیای رمزنگاری داده‌ای که قابل فهم و درک و بدون‌هیچ تغییری است را plaintext می‌گوئیم. اما در مقابل داده‌ای را که تبدیل به رشته‌ای غیرقابل فهم شده از مفهوم اولیه خود فاصله گرفته است را ciphertext می‌گوئیم.
به عبارت ساده تر رمزنگاری داده‌های قابل فهم و خواندن را طوری تغییر می‌دهد که تصادفی به نظر برسد. به تصویر زیر نگاه کنید.

ببینید چطور یک Plaintext از طریق رمزنگاری تبدیل به یک Ciphertext می‌شود.

رمزنگاری نیازمند استفاده از یک Cryptographic key یا کلید رمزنگاری است. کلید رمزنگاری مجموعه‌ای از مقادیر ریاضی هستند که بین فرستنده و گیرنده توافق می‌شود.
فعلا اینطور تصور کنید که یک قفل برای باز شدن و بسته شدن نیاز به یک کلید دارد.
یک ارتباط دوطرفه را در نظر بگیرید. شخص A و شخص B میخواهند داده مهم و محرمانه‌ای رد و بدل کنند. در این میان ممکن هست شخص C در میان راه قرار بگیرد و به استراق سمع یا Sniff بپردازد و اطلاعات محرمانه را ببیند و حتی تغییر دهد.
اینجا برای داشتن یک ارتباط امن نیاز داریم تا از رمزنگاری استفاده کنیم.
داده خام یا plaintext را از طریق روش‌ها و الگوریتم‌های رمزنگاری ، رمز کنیم و آن را تبدیل به ciphertext کنیم. و در بستری که ممکن است امن نباشد ارسال کنیم.
حال اگر شخص C بر سر مسیر باشد هم درک درستی از این داد‌ها ندارد و آن را متوجه نخواهد شد.
حال اگر به شخص گیرنده برسد ، چطور باید اطلاعات را بخواند؟ باید از کلید استفاده کند و آن را به حالت اول یعنی به صورت plaintext در بیاورد. به این امر Decryption یا رمزگشایی می‌گویند.

کلید در رمزنگاری به چه معناست؟

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

انواع مختلف رمزنگاری چیست؟

دوتا از اصلی ترین نوع‌های رمزنگاری عبارت‌اند از Symmetric encryption یا رمزنگاری متقارن و Asymmetric Encryption یا رمزنگاری نامتقارن که آن را Public key system هم می‌شناسند.
در رمزنگاری متقارن از یک کلید یا Secret key برای رمزنگاری داده‌ها و رمزگشایی داده‌ها استفاده می‌شود.
یک قفل با یک کلید هم باز و هم بسته می‌شود. در رمزنگاری نامتقارن از دو کلید استفاده می‌شود. یک کلید برای رمزنگاری و یک کلید برای رمزگشایی استفاده می‌شود.
یک کلید که عملیات رمزنگاری را انجام می‌دهد private key نام دارد و کلید مقابلی که عملیات رمزگشایی را انجام می‌دهد public key نام دارد. قفلی را در نظر بگیرید فقط با یک کلید قفل می‌شود و با یک کلید باز می‌شود.
در این نوع رمزنگاری کلید خصوصی یا private حتما باید محرمانه در نزد فرستنده بماند. و تنها کلید عمومی یا public به سمت گیرنده ارسال می‌شود.

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

  • حریم خصوصی یا Privacy
    رمزنگاری این اطمینان را می‌دهد تا داده‌ها بین افرادی که صلاحیت دارند و مجاز هستند رد و بدل شود. و فرد خرابکار نتواند محتوای داده هارا بفهمد. که به اصل Confidentiality کمک می‌کند.
  • امنیت یا Security
    رمزنگاری کمک به جلوگیری از تقض داده ‌میکند.و جلوی افشای اطلاعات حساس و محرمانه را می‌گیرد.
  • یکپارچگی داده یا Integrity
    رمزنگاری کمک به جلوگیری از تغییر داده‌ها در مسیر ارتباطی می‌کند. زمانی که داده ها در اینترنت عبور کنند. با استفاده از رمزنگاری این اطمینان حاصل می‌شود شخص ثالثی نتواند داده هارا دستکاری کند.

الگوریتم‌های رمزنگاری چیست؟

الگوریتم‌های رمزنگاری روشی یا فرایندی است تا داده‌هایی که به صورت Plaintext هستند را به Ciphertext تبدیل کنند.

معرفی الگوریتم‌های رایج در رمزنگاری :
الگوریتم‌های که در رمزنگاری متقارن یا Symmetric استفاده می‌شود.

  • AES
  • 3-DES
  • SNOW

الگوریتم‌هایی که در رمزنگاری نامتقارن یا Asymmetric استفاده می‌شود.

  • RSA
  • ElGamal