مقدمه
رمزنگاری نهتنها یک دانش بلکه اسلحه مبارزه در جنگ نرم فضای سایبری است. امروزه در فضای حاکم بر جامعه، دیگر کشورها ارتش و نیروهای کشتار جمعی خود را بهکار نمیگیرند که قدرتشان را به رخ هم بکشند؛ بلکه هر کشوری چند فعال، محقق، تحلیلگر و برنامه نویس علوم کامپیوتر را کنار یکدیگر جمع میکند تا با دزدیدن و در دست گرفتن اطلاعات مردم هرکشور به شبکههای مالی و خزانههای دارویی، یافتههای صنعتی و غیره آن کشور دست پیدا کرده و با از کار انداختن روند معمول اقتصادی، آن کشور را ضعیف کنند.
بهاین ترتیب است که بدون خون و خونریزی، به راحتی میتوان بر هر مملکتی سلطه پیدا کرد و مخصوصاً در دوران ما هم، ضرورت حفظ امنیت فضای مجازی بیشتر از هر زمان دیگری پررنگتر شده است. بهبیان دیگر میتوان گفت کاری که امروزه بااستفاده از سلاح کامپیوتر و برنامه نویسی میتوان انجام داد؛ بسیار قابل تاملتر از کاری است که هیتلر و دیگر پادشاهان جنگجوی زمان قدیم انجام میدادند. برای مقابله با این سلاح، جامعه بشری تمام توان و سواد خود را بهکار گرفته تا همواره از کلان دادههای خود در فضای مجازی صیانت کند.
تکنولوژی رمزنگاری چیست؟
با یک جستجوی ساده در صفحات وب، مشاهده خواهیدکرد که تعاریف و نظریههای بسیاری در این زمینه مطرح شده است. اگر بخواهیم بهطور خلاصه و باید دید کامل، تعریفی بر مبحث رمزنگاری داشته باشیم؛ باید بگوییم که دانش رمزنگاری به مجموعه روشها، اصول و الگوریتمهایی که برای رمزگذاری و رمزگشایی داده در راستای حفظ امنیت آن در سطوح خرد و کلان و در فضای سایبری انجام میگیرد؛ دانش رمزنگاری گفته میشود. فرآیند رمزگذاری طی عملیات Encryption و فرآیند رمزگشایی طی عملیات Decryption که خود شامل مراحل و اصول پیچیدهای میباشند؛ شکل میگیرد.
برای بسیاری از دانشجویان سوال پیش میآید که در طی عملیات رمزنگاری آیا داده ورودی کاربر، پنهانسازی میشود؟ در جواب باید بگوییم که خیر! طی عملیات رمزنگاری نهتنها پیغام فرستنده پنهان نمیشود؛ بلکه طی یک فرآیند، یک یا چند مرحلهای کلیدگذاری شده و طی کلیدهای عمومی و خصوصی به گیرنده پیام انتقال مییابد و در این فرآیند، کافی است که گیرنده پیام از کلید رمز اطلاع داشته باشد. بهاین ترتیب میتواند به آسانی، پیغام دریافتی را رمزگشایی کرده و محتوای آن پیغام را دریافت کند. اگر علاقه مند به استفاده از رمزنگاری در برنامه نویسی هستید میتوانید از آموزش رمزنگاری در دات نت فرادرس استفاده کنید.
تشریح کلمات کاربردی رمزنگاری
بنده با فرض اینکه دربین مخاطبان، کاربران مبتدی کامپیوتر هم حضور داشته باشند؛ ابتدا ترجیح میدهم قبل از شروع آموزش رمزنگاری، به تشریح کلمات کلیدی پرکاربرد این مبحث بپردازم که در ادامه بهطور خلاصه آورده شده است.
۱- رمز یا کلید
رمزها، اصلیترین ارکان فرایند رمزنگاری هستند. در علوم کامپیوتر، رمز یا کلید به بلوکهای دادهای یا دنبالهای از دادهها گفته میشود که طی فرایندها و عملیات پیچیده محاسباتی و ریاضی بهدست میآید و گاهی از روشهای ترکیبی شناسنامهای بیولوژیکی و طبیعی مثل الگوریتم DNA حاصل میشود.
هدف از تشکیل این بلوکها یا دنبالههای گاهی معنیدار در فضای مجازی، پنهانسازی مفهوم اصلی داده ورودی کاربر است. برای آموزش رمزنگاری، قبل از هرکاری باید بهدرک عمیق از مفهوم رمز یا کلید رمزنگاری برسید. برای همین منظور، در ادامه، بهویژگیهای کلید رمزنگاری میپردازیم.
دوستان عزیز، همواره بهخاطر بسپارید که رمزهای حاصل از عملیات رمزنگاری هرچه طولانیتر و پیچیدهتر باشند؛ ایمنتر عمل خواهند کرد. انتخاب بهخود شما بستگی دارد. شما کاملا مختار هستید که از دادههای خود با یک قفل کوچک محافظت کنید یا یک گاوصندوق غولپیکر فرضی و مجازی تشکیل داده و دادههایتان را داخل آن بگذارید. ما برای آگاهی شما، از ویژگیهای رمزهای مطلوب، در ادامه به چند مورد مهم اشاره خواهیم کرد:
- دسترسپذیر نباشند.
- یکتا باشند.
- انعطافپذیر باشند.
- در طی زمانهای طولانی بهطور مستمر تغییر کرده یا قابلیت آپدیت داشته باشند.
- از اتلاف زمان و هزینه جلوگیری کنند.
۲- الگوریتم رمزنگاری
همه ما در مراسمات دانش آموزی دهه فجر شرکت کردهایم. گروههای سرودی که در آن مراسمها، آهنگهای انقلابی اجرا میکردند را بهخاطر دارید؟ زمانی که مربی پرورشی اعضای گروه را بهترتیب قد مرتب میکرد؛ بهطور روتین و کاملا ناخواسته از الگوریتم مرتبسازی برای حفظ نظم و انسجام گروه سرود استفاده مینمود. بههمین ترتیب در دنیای علوم کامپیوتر هم، به مجموعه دستورالعملها یا سلسله مراتب انجام عملیات از پیش تعیین شده، کهپشت سر هم در یک سیستم کریپتوگرافی اجرا میشوند؛ الگوریتم رمزنگاری گفته میشود.
یونانیان اولین مخترعان الگوریتمهای رمزنگاری بودند که ازجمله آنها میتوان به الگوریتمهای سیتیل، سزار و مربع پلییوس اشاره کرد. این الگوریتمها در آنزمان بسیار موردتوجه قرار گرفتند تا اینکه نازیها در جنگ جهانی دوم ماشین رمزنگاری انیگما را اختراع کردند که با استفاده از ماشین تورینگ رمزگشایی میشد. تمام الگوریتمهای نام برده؛ همگی بهروشهای رمزنگاری سنتی معروف هستند و فقط از روشهای کدگذاری جایگشتی و جایگزینی برای رمزنگاری پیغام کاربر استفاده میکردند.
در سال ۱۹۷۶ آمریکاییها روشهای رمزنگاری مدرن را ابداع کردند که بسیار پرکاربرد بوده؛ با بازدهی بالاتری عمل کرده و تا به امروز، توسط محققان و فعالان علوم کامپیوتر بهینهسازی شده و ارتقا یافتهاند. امروزه الگوریتمهای رمزنگاری مدرن در دسته الگوریتمهای ریاضی قرار میگیرند. نمای شماتیک الگوریتم رمزنگاری در ادامه آورده شده است.
۳- عملیات رمزگذاری
تبدیل پیغام اولیه کاربر به مجموعهای از کدهای نامفهوم و غیرقابل دسترس برای هکرها، عملیات رمزگذاری داده یا Encryption نامیده میشود که از دید تخصصیتر در آموزش رمزنگاری، برای انجام این فرایند باید از تعدادی دستورات ریاضی و یک یا چند الگوریتم بهاتفاق اجرا شوند تا یک Block یا Stream رمز بهظاهر تصادفی تولید شود که به آن کلید رمز هم گفته میشود. البته کلیدهای رمز بهنسبت دسترسپذیر بودنشان در دو گروه عمومی و خصوصی دستهبندی میشوند.
۴- عملیات رمزگشایی
در این فرایند یا عملیات از آموزش رمزنگاری، داده نامفهوم رمزگذاری شده با استفاده از یک یا دو کلید رمز، به همان داده دارای مفهوم اولیه فرستنده تبدیل شده و در اختیار سازمان یا شخص گیرنده پیغام قرار میگیرد. باز کردن قفل گاوصندوق، درواقع همان عملیات رمزگشایی یا Decryption است که بسته به مراحل امنیتی، گاهی در یک مرحله و گاهی هم طی چند مرحله انجام میگیرد.
انواع الگوریتم های رمزنگاری
دوستان و همراهان گرامی، همانطور که میدانید؛ امروزه با پیشرفت روزافزون علوم کامپیوتر، الگوریتمهای رمزنگاری بسیاری وجود دارد که با توجه بهاستانداردهای سراسری، تامین امنیت سایبری گروهبندی میشوند و باتوجه به مزایا و معایب هرکدام از آنها برنامهنویس میتواند تصمیم بگیرد که از کدام یک برای تامین امنیت دادههای موجود در سطح خرد یا کلان استفاده کند. انواع الگوریتمهای رمزنگاری در سه دسته اصلی الگوریتمهای بدون کلید، الگوریتمهای نامتقارن و الگوریتمهای نامتقارن گروهبندی میشوند که در ادامه آموزش الگوریتم رمزنگاری، یک لیست کلی از انواع آن، آورده شده است.
حال با آگاهی از دستهبندی انواع الگوریتمها، آموزش رمزنگاری به نیمه رسیده است. دوستان عزیز، از اینجای آموزش بهبعد، شما میتوانید با مطالعه انواع گروهبندیها، روش محبوب و مناسب سیستم خود را انتخاب کرده و بهصورت تخصصیتر در آموزشهای بعدی، بهتکمیل آموختههایتان بپردازید.
۱- الگوریتم های رمزنگاری بدون کلید
در این الگوریتم از آموزش رمزنگاری، از کلید رمز استفاده نمیشود و دادههای اولیه کاربر با استفاده از توابع درهمساز و به روش هشینگ یا به روش خلاصه کردن پیام اولیه، به رمزنگاری پیغام کاربر یا سازمان میپردازد. توابع هش معمولا براساس یک الگوی خاص که توسط برنامه نویس طراحی میشوند؛ بهدرهمسازی اطلاعات میپردازند و برای دادههای خرد کاربرد دارند. بهدلیل بالا رفتن زمان اجرای الگوریتم در سطح دادههای کلان و امکان دسترسپذیر بودن آن در حملههای سایبری، در حوزه کلان داده از این روش استفاده نمیشود. برای آشنایی بیشتر با روش دیتا هشینگ، مثال زیر را بررسی کنید.
۲- الگوریتم های رمزنگاری متقارن
در ادامه آموزش رمزنگاری، وقت آن رسیده که با پرکاربردترین گروه الگوریتمهای رمزنگاری آشنا شوید. در این روش که بهعنوان قدیمیترین روش رمزنگاری هم شناخته میشود؛ یک کلید، وظیفه رمزگذاری بر روی پیغام فرستنده را بر عهده دارد. کلید رمز، محدود به عدد نیست و میتواند یک کلمه یا رشتهای از کارکترها و غیره باشد که به روش Random Number Generator و به صورت کاملا تصادفی تولید میشود. گیرنده با در دست داشتن کلید رمز، میتواند پیغامی که تغییر یافته را رمزگشایی کرده و آن را دریافت کند.
بهاین ترتیب، اگر پیغام رمزگذاری شده درمسیر انتقال، توسط هکرها شنود شود؛ باز هم هکرها بدون دردست داشتن کلید رمز، محتوای پیغام را دریافت نخواهندکرد. الگوریتمهای رمزنگاری متقارن، به سه دسته زیر تقسیم میشوند.
- رمزهای بلوکی یا بلوکهای رمز: در این روش، دادهها به بلوکهای کوچک از نوع متن که معمولا ۶۴، ۱۲۸ یا ۲۵۶ بیتی هستند؛ شکسته شده و با استفاده از یک کلید رمز مرتبط، رمزنگاری میشوند. همراهان گرامی، جالب است بدانید که دو الگوریتم مشهور AES و DES از همین گروه هستند و روال رمزنگاریشان بهصورت بلوکی انجام میگیرد. الگوریتمهای کاربردی RC5 و RC6 هم در این دسته قرار دارند.
- رمزهای دادهای یا جریانی: در این روش، دیگر نیازی به شکستن یا قالببندی اطلاعات نیست و تمام کارکترها یا بیتهای پیام فرستنده بهصورت یکبهیک رمزگذاری میشوند. از مشهورترین روشهای رمزهای نامتقارن دادهای، الگوریتم RC4 میباشد.
- کدهای احراز هویت: کدهای اصالتسنجی یا Media Access Control که بهاختصار MACs هم نامیده میشوند؛ کلیدهای رمزی هستند که فرستنده و گیرنده پیغام متنی، قبلا بر سر آن توافق میکنند و گیرنده پیغام، میتواند با استفاده از MACs مفهوم کدگذاری شده را دریافت کند. کدهای احراز هویت معمولا بهتنهایی استفاده نمیشوند و برای بهبود عملکردشان، محققان آنها را با الگوریتمهای بدون کلید ترکیب میکنند؛ مثل الگوریتمهای UMAC و VMAC.
۳- الگوریتم های رمزنگاری نامتقارن
اگر با معاملات ارزهای دیجیتال سروکار داشته باشید؛ حتما نام فناوری بلاک چین بهگوشتان خورده است. بله! درست حدس زدهاید. میخواهم بگویم که امروزه حفاظت از ارزهای دیجیتال، بر پایه الگوریتمهای رمزنگاری نامتقارن انجام میگیرد و میتوان گفت که آنها نسبت به روشهای رمزنگاری متقارن پیشرفتهتر است. چراکه الگوریتمهای رمزنگاری نامتقارن از دو کلید رمز عمومی و خصوصی برای کریپتوگرافی استفاده میکنند. برای تفهیم بهتر آموزش رمزنگاری، بهتر است بدانید که کلیدهای عمومی و خصوصی براساس توابع و روابط ریاضی تعریف شدهاند و بین این دو کلید همواره روابط منطقی وجود دارد.
فرض کنید فناوری خودرو بنده، بهاین شکل است که امنیت آن با دو کلید یا سوئیچ تامین میشود و ارتباط بین این دو کلید بهاین صورت تعریف شده است که اگر من با کلید شماره یک خودرو را قفل کنم؛ کلید شماره دو قادر بهباز کردن درهای خودروی من خواهدبود و برعکس. بهاین ترتیب اگر من، ماشینم را با کلید شماره یک قفل کنم؛ دیگر آن کلید درها را باز نخواهد کرد. روال کار کلیدها در الگوریتمهای نامتقارن هم دقیقا به همین ترتیب انجام میشود. الگوریتمهای مشهور RSA و ECC هم از همین خانواده هستند. الگوریتمهای نامتقارن در سه گروه زیر دستهبندی میشوند.
- الگوریتمهای رمزگذاری کلید عمومی: در این روش یک کلید عمومی بهصورت گسترده و یک کلید خصوصی مخصوص ارسالکننده پیغام ساده تعریف میشود. در این روش، کلید عمومی بیشتر برای گمراه کردن هکر و با استفاده از انواع الگوریتمهای ریاضی انتخاب میشود. چون هر کسی میتواند به کلید عمومی دسترسی داشته باشد اما فقط با در دست داشتن کلید خصوصی میتوان اصل پیغام را دریافت کرده و در اصطلاح، آن را رمزگشایی کرد.
- الگوریتم کلید توافقی: در این روش، الگوریتم کلید خصوصی بین فرستنده و گیرنده توافق میشود و کلید عمومی، همان کلید گسترده الگوریتمهای رمزگذاری کلید عمومی است.
- الگوریتمهای امضای دیجیتال: کارت عابر بانک خود را درنظر بگیرید. شماره کارت عابر بانکتان همان کلید عمومی است که میتوانید آن را در اختیار هر شخصی قرار دهید اما کلید خصوصی رمز چهار رقمی انجام تراکنشهای بانکی است و شما اجازه ندارید آن را با کسی بهاشتراک بگذارید. دقیقا به همین شکل، در فضای سایبری هم اطلاعات هویتی هر فرد بهعنوان امضای دیجیتال او منحصر به فرد بوده و بهعنوان کلید خصوصی استفاده میشود.
مقایسه الگوریتم های رمزنگاری متقارن و نامتقارن
در انتهای مبحث آموزش رمزنگاری، لازم و ضروری است که باتوجه بهمطالب گفتهشده، تفاوتهای این دو گروه مورد بررسی قرار بگیرد تا کاربر بتواند بهراحتی درمورد الگوریتم رمزنگاری محبوب خود، تصمیم گرفته و آموزشهای بعدی را دنبال کند. برای اینمنظور، در ادامه به شرح مهمترین تفاوتها خواهیم پرداخت.
- الگوریتمهای نامتقارن به پردازش بیشتری نیاز دارند پس نسبت به الگوریتمهای متقارن زمانبر هستند و بهدنبال صرف زمان بیشتر، طبیعتا اتلاف هزینه بیشتری را هم در پی خواهند داشت.
- مدیریت کلید در سطح کلان داده برای الگوریتمهای متقارن، مشکل است زیرا در هر بار رمزگشایی، بخشی از اطلاعات فاش میشود و امکان دسترسی هکر بهآن اطلاعات فراهم میگردد ولی در الگوریتمهای نامتقارن اگر کلید خصوصی گم شود؛ دیگر آن پیام قابل رمزگشایی و بازیابی نخواهدبود.
- الگوریتمهای رمزنگاری نامتقارن از احراز هویت کلید عمومی فارغ هستند و همین ویژگی باعث میشود که از آن در رمزنگاری ارزهای دیجیتال استفاده شود.
رمزنگاری اساس تبادل اطلاعات در دنیای امروز است مخصوصاً در شبکه های کامپیوتری و زیر مجموعههای آن یعنی شبکههای اجتماعی کاربرد متنوعی برای استفاده از رمزنگاری داده ها و اطلاعات وجود دارد. برای یادگیری رمزنگاری بصورت کاربردی نیز میتوانید از آموزش مبانی رایانش امن فرادرس استفاده کنید.
کلام آخر در رابطه با آموزش رمزنگاری
کاربران و همراهان همیشگی مجموعه پیاستور خسته نباشید. در این پست آموزشی، هر آنچه که برای آموزش رمزنگاری موردنیاز بود؛ مطرح گردید و از این توضیحات کلی؛ میتوان چنین نتیجه گرفت که برای برطرف کردن کاستیهای هر گروه از الگوریتمهای رمزنگاری و در راستای بهبود عملکرد الگوریتم حاصل، بهتر است از ترکیب الگوریتمها استفاده شود.
چنان که بزرگان ما فرمودهاند یک دست صدا ندارد؛ بهنظر میرسد که استفاده از این الگوریتمها به تنهایی در حوزه کلان داده مفید نخواهد بود. چنان چه مشتاق باشید میتوانید جهت آشنایی با کاربرد عملی و کدنویسی الگوریتمها، پستهای مرتبط دیگر همچون آموزش الگوریتم RSA را هم مرور کرده و نظراتتان را با ما درمیان بگذارید. کامیاب باشید.
یک پاسخ
متن عالی
مثال های عالی