رمزنگاری در دنیای مدرن قدمت چندهزار ساله دارد و مختص به عصر حاضر نیست. شاید بتوان شروع آن را از 3000 سال قبل از میلاد اشاره کرد. از ideograph یا ترسیم افکار گرفته تا به امروز که از الگوریتمها و روشهای گوناگون و پیچیدهای برای رمزنگاری اطلاعات استفاده میشود.
اما منکر آن نمیشویم که پیشرفت چشمگیر در دنیای شیرین و پیچیده رمزنگاری در عصر حاضر اتفاق افتاده و تحول عظیم آن را میتوان مشاهده کرد.
ولی خب این امکان هم میرود در گذشته هم چنین تصوری را داشته اند.
قبل از وارد شدن به مبحث بهتر از است دو اصطلاح را باهم مرور کنیم.
Cryptologist : استادان ریاضی و رمزشناسی که مهارت ساخت و شکست کدها را دارند.
Cryptanalysis : هنر رمزگشایی پیامهای رمزگذاری شده. مطالعه سیستم رمزنگاری برای پیدا کردن ضعف یا نشت اطلاعات.
رمزنگاری یک روشی برای برهمریختن دادهها است. به طوریکه تنها افرادی که مجاز هستند آن را درک کنند.
از نظر فنی ، یعنی فرایندی که یک دادهی قابل فهم برای انسان یا 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 به سمت گیرنده ارسال میشود.
الگوریتمهای رمزنگاری روشی یا فرایندی است تا دادههایی که به صورت Plaintext هستند را به Ciphertext تبدیل کنند.
معرفی الگوریتمهای رایج در رمزنگاری :
الگوریتمهای که در رمزنگاری متقارن یا Symmetric استفاده میشود.
الگوریتمهایی که در رمزنگاری نامتقارن یا Asymmetric استفاده میشود.