رمزنگاری (Cryptography) هنر محافظت امن از اطلاعات با تبدیل آنها به شکلی است تا افرادی که بهصورت غیرمجاز به آنها دسترسی پیدا کردهاند، قادر به فهم محتوای آنها نباشند. در فرایند رمزنگاری پیامی که انسان توانایی فهم و خواندن آن را دارد و معمولاً بهعنوان متن ساده (Plain text) از آن یاد میشود، با استفاده از الگوریتم ریتم یا یک سری عملیات ریاضی به شکلی تبدیل میشود که برای افرادی که چیزی در مورد رمزنگاری نمیدانند، مثل متن یا اطلاعات بیاهمیتی به نظر میرسد. به این متن در ظاهر بیاهمیت در حوزه رمزنگاری «متن رمزگذاریشده» (Ciphertext) گفته میشود. سیستمهای مورداستفاده برای رمزنگاری بهمنظور امکانپذیرکردن استفاده از پیامهای رمزگذاریشده برای افراد مجاز به دسترسی به فایلها، باید از روشهای خاصی استفاده کنند. این سیستمها در اغلب مواقع برای انجام این کار متن رمزگذاریشده را دوباره به متن ساده تبدیل میکند؛ البته این سیستمها در برخی از مواقع هم از روشهای دیگری استفاده میکنند.
اجازه دهید قبل از اینکه بیشتر با مفهوم رمزنگاری آشنا شویم و در مورد مباحث مرتبط با آن توضیح دهیم، با دو مفهوم مشابه با این مفهوم اما متفاوت، یعنی رمزشناسی (cryptology) و رمزگذاری (encryption) نیز کمی آشنا شویم و تفاوت این سه مفهوم را توضیح دهیم.
تکواژ انگلیسی «Crypt» در اصل از واژهای یونانی به معنی «مخفی و راز»، گرفته شده و واژه «Cryptography» را میتوان «نوشتن بهصورت رمزی» ترجمه کرد. واژه «cryptology» را نیز میتوان «دانش رازداری» ترجمه کرد. اگر رمزنگاری برای اشاره عمل نوشتن پیامهای رمزی به کار برود، رمزشناسی را میتوان نظریه مرتبط با این کار دانست؛ البته دو واژه رمزنگاری و رمزشناسی در اغلب مواقع بهجای یکدیگر استفاده میشوند.
در تعریف واژه «encryption» که میتوان آن را «خلق راز» ترجمه کرد، میتوان گفت فرآیندی است که ما آن را تبدیل متن ساده به متن رمزگذاریشده میدانیم. برخی از افراد رمزگذاری را نیز با رمزنگاری اشتباه میگیرند. رمزگذاری بخشی از رمزنگاری محسوب میشود و یکی از شاخههای آن است. رمزگذاری درواقع مفهوم مقابل رمزگشایی (deccryption)، یا همان تبدیل متن رمزگذاری شده به متن ساده است.
در فرایند رمزگذاری همیشه از یک الگوریتم و یک کلید استفاده میشود و این اصل یکی از اصول مهم این فرایند محسوب میشود. کلید در حقیقت بخشی از اطلاعات محسوب میشود (که تقریباً در تمام موارد یک عدد است) که نحوه بهکارگیری الگوریتم مورداستفاده برای تبدیل متن ساده به متن رمزگذاریشده را مشخص میکند. حتی درصورتیکه بدانید پیامها با چه روشی رمزگذاری شدهاند، انجام فرایند رمزگذاری بدون استفاده از کلید بسیار دشوار یا حتی غیرممکن است. دو مفهوم کلید و الگوریتم را به یاد داشته باشید زیرا در ادامه مقاله بارها در آنها اشاره میکنیم!
نخستین نوع رمزنگاری را میتوان «رمزگذاری سزار» (Caesar cipher) دانست؛ زیرا جولیس سزار، از این روش برای مکاتبات محرمانه خود استفاده میکرد. سوئتونیوس (Suetonius)، شرححالنویس سزار، در مورد این موضوع اینچنین نوشته است:
اگر متنی باید در قالب مکاتبات محرمانه انتقال داده میشد، سزار آن را بهصورت رمزی مینوشت و در هنگام نوشتن آن جای حروف الفبا را تغییر میداد، اگر فردی میخواست متن دریافتشده را رمزگشایی کند و مفهوم آن را بفهمد، باید بهجای حرف اول حروف الفبای انگلیسی یعنی A از سه حرف پس از آن، یعنی D استفاده و بقیه حروف الفبا را نیز به همین ترتیب جایگزین میکرد.
اگر منظور این توضیح سوئتونیوس در مورد رمزگذاری سزار را نفهمیدید، میتوان فهم آن را با بهرهمندی از معنا و مفهوم دو اصل اساسی رمزنگاری، یعنی همان الگوریتم و کلید، سادهتر کرد.
الگوریتم این روش رمزگذاری، ساده است. در این روش هر یک از حروف الفبای انگلیسی با حروف بعدی خود جایگزین میشوند. کلید هم به تعداد حروفی که هر حرف باید بر مبنای این تعداد با حروف بعدی خود جایگزین شود، مربوط میشود. همانطور که گفتیم در روش رمزنگاری سزار، هر حرف با سومین حرف پس از خود جایگزین میشود (مثلاً D بهجای A و E بهجای B و الیآخر)؛ بنابراین در این روش سه کلید داریم و اگر میخواستیم از چهار کلید استفاده کنیم، باید مثلاً E را باید جایگزین A میکردیم.
همانطور که دیدید این روش رمزگذاری، بسیار ساده است و هر فردی میتواند با ایجاد الگوی ساده برای جایگزینی حروف، بهراحتی متون رمزی خود را بنویسد؛ برای استفاده از این روش رمزگذاری تنها کافی است الگوریتم و کلید را از قبل بدانید؛ اما تمام روشهای رمزنگاری به این سادگی نیست؛ در برخی از روشهای رمزگذاری از سیستم «کد عبارت» استفاده میشود که در آنها بهعنوانمثال عبارت «بیا پیتزا سفارش بدیم» به معنی «میخوام به گل (سرزمینی در غرب اروپا) حمله کنم» است.
افراد در حال ارتباط با این پیامهای رمزی، برای ترجمه و فهم آنها باید کتاب دربردارنده کد عبارتها را داشته باشند و انتقال پیامهایی که قبلاً به منتقل کردن آنها فکر نشده است، با هیچ راهی امکانپذیر نیست؛ بنابراین انتقال پیامهای متنی بهصورت رمزی با استفاده از روش نگاری سزار بسیار سادهتر از استفاده از کد عبارتها و کتاب کد پیچیده است و هر گونه پیامی را میتوانید با آن رمزگذاری کنید؛ البته برای استفاده از این روش باید الگوریتم و کلید را از قبل بدانید
روش رمزنگاری سزار بهعنوان «رمزنگاری جایگزینی» (substitution cipher) نیز شناخته میشود؛ زیرا همانطور که گفتیم در این شیوه رمزنگاری، از روش جایگزینی حروف با حروف دیگر استفاده میشود. در رمزنگاری با این روش، هم میتوان تنها برخی از حروف را جایگزین کرد و هم جایگزینی کل کلمات امکانپذیر است یعنی متغیرها هم میتوانند تعدادی از حروف باشند و هم میتوانند کل کلمه باشند. در اکثر ادوار تاریخی برای برقراری ارتباطهای دولتی و نظامی، از اشکال مختلف همین روش رمزگذاری استفاده شده است.
ریاضیدانان عرب در قرونوسطی در پیشبرد جنبههای مختلف فرایند رمزنگاری مخصوصاً رمزگشایی، نقش مهمی داشتند؛ بهعنوانمثال از زمانی که پژوهشگران دریافتند در یک زبان خاص برخی از حروف بیشتر از سایر حروف استفاده میشود، تشخیص الگوها راحتتر شد.
البته مدرنترین روش رمزگذاری که تا قبل از عصر مدرن کنونی و پیدایش کامپیوترها استفاده میشده، در مقایسه با استانداردهای مدرن امروزی بسیار ساده بودهاند و دلیل آن هم کاملاً مشخص است؛ قبل از پیدایش کامپیوترها، انجام تبدیلات ریاضی با سرعت لازم و کافی برای انجام فرایندهای رمزگذاری و رمزگشایی، بسیار دشوار بود. در حقیقت فرایند روند توسعه کامپیوترها و پیشرفت فناوری رمزنگاری پابهپای هم پیش رفتند.
«چارلز ببیج» (Charles Babbage) که ایده ماشین تفاضلی (Difference Engine) او راه را برای ایجاد و پیشرفت کامپیوترهای مدرن باز کرد، نیز به حوزه رمزنگاری علاقهمند بود. در طول جنگ جهانی دوم آلمانیها برای رمزنگاری از دستگاهی الکترومکانیکی به نام «انیکما» (Enigma) استفاده میکردند.
«آلن تورینگ» (Alan Turing)، رمزنگار انگلیسی، سرپرستی تیمی در بریتانیا را بر عهده داشت که اعضای آن از دستگاه مشابهی برای شکستن کد استفاده کردند. آنها در طول انجام این فرایند به دستاوردهای با اهمیتی دست پیدا کردند که در توسعه کامپیوترهای امروزی نقش مهمی داشتند. با پیدایش کامپیوترها فرایند رمزنگاری به میزان بسیار زیادی پیچیدهتر شد؛ اما تا چندین دهه ابزار دست جاسوسان و ژنرالها برای مخفی کردن اطلاعات و انتقال محرمانه آنها بود.
اجازه دهید قبل از ورود به مباحث مرتبط با رمزنگاری مدرن، توضیحات لازم را در مورد دو اصل مهمی که این فناوری بر پایه آنها استوار شده است، بیان کنیم. اولین اصل با عنوان «اصل کرکهوفس» (Kerckhoffs's principle) شناخته میشود که نام خود را از رمزنگاری هلندی در قرن نوزدهم به نام «آگوست کرکهوفس» (Auguste Kerckhoffs) وام گرفته است.
همانطور که قبلاً گفتیم هر سیستم رمزنگاری با یک الگوریتم و یک کلید درگیر است. کرکهوفس در آن زمان که رمزنگاری تقریباً تنها کاربرد نظامی داشت، معتقد بود یک سیستم رمزنگاری حتی درصورتیکه عموم مردم از تمام بخشهای آن (البته بهجز کلید) اطلاع داشته باشند، باید امن باشد؛ البته امن و مخفی نگهداشتن سیستم رمزنگاری، تنها در آن زمان امکانپذیر بوده است و امروزه هرچقدر هم برای مخفی نگهداشتن چنین سیستمهایی تلاش کنید، دشمن شما باز هم درنهایت به زیروبم آن پی خواهد برد.
«کلود شانون» (Claude Shannon)، رمزنگاری که در دوران جنگ جهانی دوم میزیست، در آن زمان یکی از افراد پیشتاز در زمینه تئوری اطلاعات محسوب میشد و این تئوری را سادهتر کرد. در حقیقت کرکهوفس و شانون دریافتند که لازم نیست الگوریتم طراحیشده برای مخفیسازی اطلاعات با موفقیت کامل، مخفی و پنهان باشد.
امروزه الگوریتمهای رمزنگاری بهصورت گسترده موردمطالعه قرار گرفتهاند و برای استفادهشدن در شرایط بحرانی که اطلاعات باید کاملاً مخفیانه منتقل شوند، نیز آزمایش شدهاند؛ بنابراین همیشه توصیه میشود برای رمزنگاری از همین الگوریتمها استفاده شود؛ در صورت امتحان کردن الگوریتمهای شخصی نتیجهای نخواهید گرفت.
البته در مورد کلید مورداستفاده برای رمزنگاری قضیه کاملاً فرق میکند و باید آن را مخفی نگه دارید. در ادامه مقاله در مورد مباحث ریاضی مرتبط با نحوه کار کنید توضیح خواهیم داد؛ اما اکنون اجازه دهید در مورد اصل دوم که انجام عملیات ریاضی مرتبط با نحوه کار کلید، یعنی «توابع یکطرفه» را امکانپذیر میکند، توضیح دهیم.
توابع یکطرفه در حقیقت دستهای از عملیات ریاضی هستند که معکوسکردن آنها دشوار است؛ ضرب دو عدد اول بسیار بزرگ در یکدیگر، یکی از مثالهای بارز تابع یکطرفه است. انجام این عمل در ریاضی کار بسیار ساده است، اما درصورتیکه حاصل این ضرب را داشته باشید و بخواهید دو عددی را که حاصلضرب آنها این عدد شده است، پیدا کنید، کارتان بسیار سخت و درنهایت پیدا کردن آن دو عدد برای شما غیرممکن میشود.
ریاضیدانان در مورد این موضوع که هر نوع تابعی رامی توان تابعی یکطرفه در نظر گرفت، با یکدیگر اختلافنظر دارند و با هم بحث میکنند؛ ما هم در این مقاله از کنار این موضوع عبور میکنیم؛ البته با در نظر گرفتن قدرت محاسباتی محدود کنونی در اختیار بشر، بسیاری از توابع ریاضی غیرقابل معکوسشدن هستند
پس از پیدایش نخستین شبکههای کامپیوتری، کارآمد بودن روشهای رمزنگاری برای عموم مردم اهمیت پیدا کرد. کامپیوترها تنها از طریق اتصال مستقیم به یکدیگر، با یکدیگر ارتباط برقرار نمیکنند و برای ایجاد ارتباط بین خود از شبکههای باز نیز بهره میبرند.
این شکل ایجاد شبکه، با شیوههای شگفتانگیز تحولات مختلفی را به وجود آورده است؛ اما از سوی دیگر، ایجاد این شبکهها، نفوذ راحت و بیدردسر به اطلاعات در حال انتقال در آنها و سوءاستفاده از اطلاعات را نیز امکانپذیر کرده است! بنابراین پیدایش شبکههای کامپیوتری، باعث شده استفاده از روشهای کار آمده رمزنگاری به امری بسیار ضروری تبدیل شود.
در ضمن پس از آغاز بهرهمندی از مزایای شبکههای کامپیوتری برای تسهیل و تسریع ارائه خدمات مالی، استفاده از روشی مطمئن و کارآمد برای تأمین امنیت اطلاعات بسیار حساس در حال انتقال در شبکهها، بیشازپیش ضروری شده است.
شرکت IBM در اواخر دهه 1960 روشی برای رمزگذاری تحت عنوان «رمزگذاری لوسیفر» (Lucifer encrycption) ایجاد کرد که درنهایت توسط سازمان ملی استانداردهای آمریکا بهعنوان اولین استاندارد رمزگذاری داده (DES) معرفی شد.
با آغاز افزایش استفاده از اینترنت و رشد اهمیت آن، افزایش تعداد روشهای رمزگذاری و همچنین افزایش میزان کارآمد بودن آنها نیز اهمیت پیدا کرد و امروزه بخش اعظمی از دادههای در حال انتقال در شبکه جهانی در سراسر جهان، با استفاده از تکنیکهای متفاوت رمزگذاری که در ادامه بهصورت مختصر با آنها آشنا خواهیم شد، رمزگذاری میشود.
تا بهجای مقاله با برخی از کاربردهای رمزنگاری آشنا شدیم؛ از مخفی نگهداشتن اطلاعات نظامی گرفته تا انتقال دادههای مالی در اینترنت با امنیت کامل؛ مطمئناً کاربردهای رمزنگاری به همین دو مورد ختم میشود و این فناوری برای دستیابی به طیف گستردهای از اهداف سایبری نیز استفاده میشود.
طبق توضیحات ارائهشده از سوی «گری کسلر» (Gary Kessler)، مشاور امنیتی، کاربردهای امنیتی رمزنگاری به شرح زیر است:
محرمانه نگهداشتن محتوای اطلاعات
جلوگیری از نفوذ غیرقانونی به اطلاعات و دستکاری آنها
اطمینان بخشیدن در مورد اینکه فرستنده واقعاً پیام را فرستاده است. کسب اطمینان در مورد این موضوع، اصل در حوزه رمزنگاری محسوب میشود و متخصصان این حوزه آن را «اصل عدم انکار» (non-repudiation) نامیدهاند.
کاربردهای رمزنگاری در حقیقت مهمترین اصول سازمانها و نهادهای امنیتی دولتها محسوب میشوند. نخستین کاربرد بیانشده برای رمزنگاری یعنی محرمانه نگهداشتن محتوای اطلاعات، واضح است و نیازی به توضیح ندارد؛ اما برای فهم سایر موارد باید توضیحات مختصری را ارائه دهیم. به همین دلیل در ادامه بهصورت ساده و خلاصه با انواع رمزنگاری آشنا میشویم.
در حال حاضر الگوریتمهای زیادی برای رمزنگاری استفاده میشود؛ اما روشهای انجام این کار به سه دسته کلی تقسیم میشوند که شامل رمزنگاری متقارن یا رمزگذاری کلید متقارن (symmetric cryptography)، رمزنگاری نامتقارن یا رمزنگاری کلید عمومی (asymmetric cryptography) و توابع هش (hash functions) میشود. هر کدام از این انواع رمزگذاری کاربردهای خاص خود را دارد.
رمزنگاری سزار که قبلاً در مورد آن توضیح دادهایم، نمونه بارز رمزنگاری متقارن است. در مثالی که در رابطه با این نوع رمزنگاری بیان کردیم، چنانچه سزار میخواست پیام محرمانهای را به یکی از فرماندههانش منتقل کند؛ هم او و هم طرف مقابلش باید کلید را میدانستند.
کلید رمزگذاری در این مثال، تعداد حروف الفبایی بود که برای تبدیلکردن متن ساده به متن رمزی، یا بالعکس، باید به جلو یا عقب انتقال داده میشدند. رمزنگاری پیامها به این شیوه، رمزنگاری سزار را بهنوعی رمزنگاری متقارن تبدیل کرده است؛ همانطور که قبلاً گفتیم کلید مورداستفاده برای رمزنگاری باید مخفی باقی بماند و به همین دلیل به آن کلید مخفی رمزنگاری نیز گفته میشود، طبیعتاً کلید رمزنگاری نباید همراه با پیام رمزگذاریشده منتقل شود؛ زیرا اگر دشمن به پیام رمزنگاریشده دسترسی پیدا کند، با استفاده از کلید بهراحتی میتواند آن را رمزگشایی کند و بهاینترتیب رمزگذاری پیام کاملاً بیاثر میشود.
سزار و فرماندهانش برای انتقال کلیدهای رمزنگاری، یکدیگر را حضوری تکبهتک ملاقات میکردند؛ البته طبیعتاً این روش برای تبادل کلیدهای موردنظر برای رمزنگاری پیامهایی که باید به فرماندهان در حال جنگ در نواحی دور ارسال میشد، چندان آسان نبود و روش خوبی به نظر نمیرسید.
رمزنگاری متقارن بهصورت گسترده برای محرمانه حفظ کردن دادهها استفاده میشود؛ بهعنوانمثال این روش رمزنگاری میتواند برای جلوگیری از نفوذ به اطلاعات هارد درایوهای لوکال روش خوبی باشد؛ زیرا به دلیل اینکه هم رمزگذاری و هم رمزگشایی اطلاعات محافظتشده روی آنها معمولاً توسط یک فرد انجام میشود، بهاشتراکگذاری کلید مخفی دشوار نیست. رمزنگاری متقارن میتواند برای محرمانه نگهداشتن اطلاعات در شبکه اینترنت نیز استفاده شود؛ البته برای انجام موفقیتآمیز این کار باید از رمزنگاری نامتقارن نیز در کنار رمزنگاری متقارن استفاده کنید.
شاید سزار میتوانسته شخصاً فرماندهانش را ملاقات کند؛ اما قطعاً شما تمایلی ندارید تنها برای دانستن کلید خصوصی مورداستفاده برای رمزگذاری ارتباطات الکترونیکی خود با بانک، به بانک و متصدی آن مراجعه کنید؛ از سوی دیگر در صورت انجام این کار، بانکداری آنلاین که با هدف تسهیل و تسریع خدمات بانکی ایجاد شده است، بیفایده میشود. بهطورکلی برای ایجاد امنیت در شبکه اینترنت که ذاتاً شبکه ناامنی محسوب میشود، باید از روشی مطمئن برای امنکردن ارتباط طرفهای در حال برقراری ارتباط با یکدیگر استفاده شود؛ تحقیق این هدف تنها با استفاده از رمزنگاری نامتقارن که گاهی اوقات رمزنگاری کلید عمومی نیز نامیده میشود، امکانپذیر خواهد بود.
در روش رمزنگاری نامتقارن با دو مفهوم کلید عمومی (public key) و کلید خصوصی (private key) مواجه هستیم. در این روش هر یک از طرفهای ارتباط، دو کلید در اختیار دارند که شامل یک کلید عمومی و یک کلید خصوصی میشود. فردی که قصد برقراری ارتباط را دارد، کلید عمومی را که برای رمزگذاری پیام استفاده میشود، برای هر فردی که میخواهد با آن ارتباط برقرار کند، میفرستد؛ اما کلید خصوصی همانطور که از نامش پیدا است، ابزاری کاملا خصوصی محسوب میشود و نباید با هیچ فردی به اشتراک گذاشته شود. کلید خصوصی برای رمزگشایی پیامهای رمزی دریافتشده استفاده میشود.
اجازه دهید برای فهم بهتر نحوه کار با این روش رمزنگاری، مثال ساده و قابلفهمی را بیان کنیم. کلید عمومی مانند شکافی در بالای صندوق پستی است که عرض آن تنها برای انداختن نامه در صندوق پستی مناسب است و برداشتن نامهها از آن شکاف ممکن نیست. واضح است که برای برداشتن نامهها باید درب صندوق پستی را با کلید آن باز کنید.
اگر صندوق پستی متعلق به شما باشد، طبیعتاً فقط خودتان کلید آن را دارید یا کلید را تنها به افرادی میدهید که باید نامهها را ببینند یا به آنها اطمینان دارید. کلید صندوق پستی همان کلید خصوصی در رمزنگاری نامتقارن است.
وقتی صحبت از مباحث ریاضی مرتبط با نحوه استفاده از یک کلید برای رمزگذاری پیام و کلید دیگری برای رمزگشایی آن مطرح میشود، پای ایده تابع یکطرفه که قبلاً در مورد آن توضیح دادهایم، باز هم به میان میآید. از نظر علم ریاضی، دو کلید مورداستفاده برای رمزنگاری باید با یکدیگر مرتبط باشند و ارتباط بین آنها بهگونهای باشد که اشتقاق کلید عمومی از کلید خصوصی امکانپذیر باشد؛ اما برعکس این فرآیند امکانپذیر نباشد؛ بهعنوان متال امکان دارد کلید خصوصی آن عددهای اول بسیار بزرگ و کلید عمومی هم حاصلضرب آنها باشد.
میزان عملیات محاسباتی لازم برای انجام رمزنگاری نامتقارن بسیار بیشتر از محاسبات لازم برای انجام فرایند رمزنگاری متقارن است و انجام آنها منابع سختافزاری را نیز به میزان بسیار بیشتری درگیر میکند. خوشبختانه در صورت استفاده از این روش رمزنگاری لازم نیست هر یک از پیامهایی را که آنلاین ارسال میکنید، جداگانه رمزگذاری و محافظت کنید؛ در مقابل در این روش معمولاً رمزگذاری به این صورت است که یکی از طرفهای ارتباط از روش رمزنگاری متقارن برای رمزگذاری یک پیام دربردارنده کلید خصوصی دیگر استفاده میکند.
با این روش، کلید با امنیت کامل در شبکه اینترنت ناامن منتقل و به کلید خصوصی تبدیل میشود که جلسه ارتباطی بسیار طولانیتر رمزگذاریشده از طریق رمزگذاری متقارن را رمزگذاری میکند. منظور از جلسه ارتباطی یکسری تعاملات بین دو طرف ارتباط است که در طول مدتزمان یک مرتبه ارتباط ایجاد میشود.
رمزنگاری نامتقارن با این روش اطلاعات را محرمانه نگه میدارد؛ اما کلیدهای عمومی مورداستفاده در رمزنگاری نامتقارن بخشی از مجموعه بزرگتر از توابعی تحت عنوان «زیرساخت کلید عمومی» (public key infrastructure) یا PKI هستند.
به بیان سادهتر زیرساخت کلید عمومی مجموعهای از سختافزار، نرمافزار، سیاستها، پردازشها و روندهای موردنیاز برای ایجاد، مدیریت، توزیع، استفاده، ذخیرهسازی و لغو گواهینامههای دیجیتال و کلیدهای عمومی است. این زیرساخت برای کسب اطمینان از اینکه هر کلید خاصی با یک فرد یا سازمان خاص ارتباط دارد، روشهایی را فراهم کرده است. بهاینترتیب پیامی که با یک کلید عمومی رمزگذاری شده است، هویت فرستنده را تأیید و احراز میکند که باعث جلوگیری از انکار فرستنده در مورد ارسال پیام میشود.
الگوریتمهای رمزنگاری متقارن و نامتقارن هردو با فرآیندهای تبدیل متن ساده به متن رمزی و تبدیل دوباره متن رمزی به متن ساده درگیر هستند در مقابل یک تابع هش بهعنوان یک الگوریتم رمزگذاری یکطرفه محسوب میشود. بهعبارتدیگر زمانی که متن ساده خود را رمزگذاری کردید، نمیتوانید متن رمزگذاریشده را که در رمزنگاری توابع هش، «هش» (hash) نامیده شده است، دوباره به متن ساده تبدیل کنید. هش در حقیقت کدی متشکل از اعداد و حروف کوچک و بزرگ است که در خروجیهای مختلف رمزنگاری طولی ثابت دارد (در تصویر زیر میتوانید نمونه یک هش را مشاهده کنید). واضح و مشخص است که این روش رمزنگاری هم به توابع ریاضی یکطرفه متکی است.
ممکن است برخورداری روش توابع هش از چنین ساختاری، باعث شود تصور کنید این روش روشی وقتتلفکننده برای رمزنگاری است؛ اما نکته مهم در بیاستفاده بودن این توابع این است که در هر تابع هش خاص، هیچ دو متن سادهای هش یکسانی را تولید نمیکنند (البته ازنظر ریاضی این جمله بهطور کامل درست نیست است؛ اما احتمال ایجاد یک هش یکسان توسط دو متن بسیار کم است و میتوان چنین احتمالی را در هر تابع هش در حال استفاده، با اطمینان نادیده گرفت)
این نوع ساختار الگوریتمهای هشینگ (hashing algorithms) را به ابزاری عالی برای کسب اطمینان از یکپارچه بودن و بینقص بودن دادهها تبدیل میکند؛ بهعنوانمثال هر پیامی میتواند همراه با هش خودش ارسال شود، شما میتوانید بلافاصله پس از دریافت پیام همان الگوریتم هشینگ را روی پیام متنی اجرا کنید، اگر هش تولیدشده با هشی که همراه پیام فرستاده شده است، متفاوت باشد، بهطورقطع پیام در حین فرایند انتقال دستکاری شده است.
در ضمن هشینگ برای کسب اطمینان از محرمانه باقیماندن رمزهای عبور نیز استفاده میشود. در حوزه امنیت، ذخیرهسازی رمزهای عبور بهعنوان متن ساده، بهشدت منع میشود؛ زیرا در صورت انجام این کار کاربران سوجو برای نفوذ به حسابهای کاربری و سرقت هویت در هنگام دسترسی به اطلاعات، وسوسه میشوند.
اگر بهجای ذخیرهسازی رمزهای عبور به شکل متون ساده، نسخه هششدهای از آنها ایجاد کنید، هکرها حتی اگر از موانع امنیتی سیستم شما عبور و به سیستم نفوذ کنند، نمیتوانند رمزهای عبور را رمزگشایی و از آن سوءاستفاده کنند. در صورت تبدیل رمز عبور به هش، میتوانید درصورتیکه یک کاربر مجاز، با رمز عبور وارد سیستم یا سامانهای شد، رمز عبور واردشده را با رمز عبور هششده که قبلاً در سیستم ذخیره شده است، مطابقت دهید.
در حال حاضر تکنیکها و الگوریتمهای بسیار زیادی برای انجام این کار وجود دارد که میتوان آنها را در سه دسته فوقالذکر دستهبندی کرد. معمولاً این الگوریتمها و تکنیکها کاملاً پیچیده هستند و توضیح در مورد آنها خارج از بحث این مقاله است؛ بنابراین در اینجا تنها فهرستی از آنها را بیان میکنیم
Triple DES: نسخه پیشرفته استاندارد DES که قبلاً با آن آشنا شدهایم.
Advanced Encryption Standard (AES)
Blowfish و Twofish
Diffie-Hellman key exchange
RSA
ElGamal
بنابراین درحالحاضر طیفی از توابع هش وجود دارد که هر کدام از آنها کاربرد خاص خود را دارند. در این صفحه ویکی پدیا میتوانید فهرستی از توابع هش را مشاهده کنید.همچنین برای مشاهده ی مطالب مرتبط دیگر میتوانید به بخش آموزش ساعدنیوز مراجعه نمایید. از همراهی شما بسیار سپاسگزارم.