تکنیک‌های رمزنگاری‌

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

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

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

رمزنگاری به ‌شیوه کلید متقارن‌

همان‌طور که در  شکل 1 می‌بینید، در رمزنگاری به شیوه کلید متقارن، تابع رمزگذاری (‌)
E با استفاده از یک کلید محرمانه k، پیغام متنی P را به متن رمزشده C تبدیل می‌کند. دریافت‌کننده این پیغام رمزشده، با اعمال تابع رمزگشایی (‌)D و همان کلید محرمانه k، این پیغام را به حالت اولیه P بازمی‌گرداند.

بهترین تکنیک رمزنگاری به شیوه کلید متقارن،
DES یا‌ Data Encryption Standard نام دارد و از سال 1976 مورد استفاده قرار گرفته است. تکنیک DES در واقع یک متن کدشدهِ تکراری است که به قطعات 64 بیتی متن ساده متصل می‌شود.

تابع رمزگذاری به‌ واسطه جابه‌جایی، توسعه، انتقال، فشرده‌سازی، تعویض و ترکیب قطعات 64 بیتی متن پیغام با یک کلید 56 بیتی، هر قطعه از متن ورودی را به یک قطعه متن 64 بیتی کدشده تبدیل می‌کند. گیرنده پیغام، با اجرای معکوس مراحل رمزگذاری و با استفاده از همان کلید 56 بیتی
k ، قادر است پیغام را به حالت اولیه بازگرداند.

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

با این‌که فضای 256 بیتی برای انسان‌ها بسیار بزرگ به ‌نظر می‌رسد، جست‌وجوی آن برای ماشین‌های ویژهِ کشف‌رمز یا سوپرکامپیوترهای امروزی، چندان مشکل نیست. در نتیجه، محققان روش‌های جدیدی را برای پیاده‌سازی الگوریتم‌های رمزنگاری به‌شیوه کلید متقارن ابداع کرده‌اند.

از میان این روش‌ها می‌توان از
DES سه‌گانه (در این روش، تکنیک DES سه بار پیاپی و با استفاده از سه کلید 56 بیتی متفاوت اجرا می‌شود. در این نوع رمزنگاری، فضای کلید مود استفاده، معادل یک کلید 168 بیتی خواهد بود.)، تکنیک IDEA یا International Data Encryption Algorithm  با کلیدهای 128 بیتی، تکنیک RC4 (کلیدهایی با فضای بالای دو کیلوبیت یا 2048 بیت) و تکنیک RC5 (کلیدهایی با فضای بالای 256 بیت) نام برد.

هنگام استانداردسازی روش‌های رمزنگاری در سال 1997 مؤسسه ملی استاندارد و فناوری با برگزاری یک مسابقه عمومی، تکنیک
DES را با تکنیک AES یا Advanced Encription Standard جایگزین کرد. برنده این مسابقه روشی موسوم به Rijndael یا Rhine-doll  بود که دو رمزنگار بلژیکی معرفی کردند.

تکنیک
AES مانند DES نوعی رمزنگاری با استفاده از قطعات تکراری متن کدشده است، اما در آن از متن‌های 128 بیتی همراه کلیدهای 128، 192 یا 256بیتی استفاده می‌شود. بهره‌گیری از کلید 256 بیتی، تعداد 2 به توان 256 انتخاب را برای کلید فراهم می‌کند. جست‌وجوی این فضا حتی برای کامپیوترهای پیشرفتهِ امروزی نیز غیرممکن است.

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

رمزنگاری به شیوه کلید عمومی‌

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

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

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

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

از آنجا که معمولاً کلیدهای عمومی و خصوصی از هزاران بیت اطلاعات تشکیل شده‌اند و فرمول‌های مورد استفاده برای رمزگذاری (یا رمزگشایی)، متن ساده (یا رمزشده) را به ‌عنوان یک عدد صحیح بزرگ مورد پردازش قرار می‌دهند و آن را به‌ توان عددی می‌رسانند که توسط کلید عمومی (خصوصی) دریافت‌کننده به دست آمده است، سرعت اجرای این تکنیک بسیار کُند خواهد بود. بنابراین، رمزنگاری به شیوه کلید عمومی در مواردی که متن پیغام کوتاه باشد، برای مثال هنگامی که محتوای پیغام، یک کلید متقارن با طول 56 تا 256 بیت است، کاربرد دارد.

امضای دیجیتالی‌

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

فرض کنید عنصر
Xقصد ارسال داده‌های ایمن را برای عنصر Yدارد و عنصر Y بخواهد از ارسال این اطلاعات توسط عنصر Xاطمینان حاصل کند.

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

سپس تابع رمزگذاری را با استفاده از کلید عمومی عنصر
Y روی متن پیغام اجرا می‌کند. بدین ترتیب متن رمزشده به ‌دست می‌آید.

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

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

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