• رمزگذاری متقارن و نامتقارن تجزیه و تحلیل الگوریتم انتقال داده های رمزگذاری شده بین سرورها

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

    برنج. 4.3. سیستم رمزگذاری متقارن

    این سیستم های رمزنگاری دارای بیشترین ویژگی هستند سرعت بالارمزگذاری، و با کمک آنها، محرمانه بودن و صحت و یکپارچگی اطلاعات ارسال شده تضمین می شود.

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

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

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



    رمزگذاری متقارن برای رمزگذاری اطلاعات "به خود"، به عنوان مثال، برای جلوگیری از ایده آل است دسترسی غیرمجازبه او در غیاب مالک. این می تواند رمزگذاری بایگانی فایل های انتخاب شده یا رمزگذاری شفاف (اتوماتیک) کل درایوهای منطقی یا فیزیکی باشد.

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

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

    اجرای الگوریتم های رمزگذاری متقارن برای رمزگذاری داده های مشترک وجود دارد - یعنی برای ارسال اطلاعات رمزگذاری شده به مشترک، به عنوان مثال، از طریق اینترنت. استفاده از یک کلید برای همه مشترکین چنین شبکه رمزنگاری به دلایل امنیتی غیرقابل قبول است. در واقع، در صورت به خطر افتادن (مفقود شدن، سرقت) کلید، جریان اسناد همه مشترکین در خطر خواهد بود. در این مورد، می توان از یک ماتریس کلیدی استفاده کرد (شکل 4.4).

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

    . (4.3)

    شکل 4.4. ماتریس کلید

    هر یک منردیف -مین ماتریس مجموعه ای از کلیدهای یک مشترک خاص است منبرای برقراری ارتباط با دیگران N- 1 مشترک. مجموعه ای از کلیدها (مجموعه های شبکه) بین همه مشترکین شبکه رمزنگاری توزیع می شود. مشابه موارد فوق، نت‌ها باید توزیع شوند از طریق کانال های امنارتباط یا دست به دست.



    ویژگی مشخصهالگوریتم‌های رمزنگاری متقارن این است که در طول کار خود، بلوکی از اطلاعات ورودی را با طول ثابت تغییر می‌دهند و بلوک حاصل را با همان اندازه دریافت می‌کنند، اما برای اشخاص ثالثی که مالک کلید نیستند، قابل خواندن نیست. طرح عملیاتی یک رمز بلوکی متقارن را می توان با توابع توصیف کرد

    جایی که م- بلوک داده اولیه (باز)؛ با- بلوک رمزگذاری شده داده ها

    کلید بهپارامتری از الگوریتم رمزنگاری بلوک متقارن است و یک بلوک است اطلاعات باینریاندازه ثابت اصلی مو رمزگذاری شده است بابلوک های داده نیز دارای یک عرض بیت ثابت برابر با یکدیگر هستند، اما نه لزوما برابر طولکلید به.

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

    روش ایجاد زنجیره ای از بایت های رمزگذاری شده توسط الگوریتم های بلوک به آنها اجازه می دهد تا بسته های اطلاعاتی با طول نامحدود را رمزگذاری کنند. عدم وجود همبستگی آماری بین بیت های جریان خروجی رمز بلوکی برای محاسبه استفاده می شود. چک جمع هابسته های داده و هش رمز عبور.

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

    برای به دست آوردن رمزهای بلوکی قوی، از دو رمز استفاده کنید اصل کلی:

    ¨ انتشار- توزیع تأثیر یک کاراکتر از متن ساده به بسیاری از کاراکترهای متن رمزی است که به شما امکان می دهد ویژگی های آماری متن ساده را پنهان کنید.

    ¨ مخلوط کردن- استفاده از چنین تبدیل های رمزگذاری که بازسازی رابطه را پیچیده می کند ویژگی های آماریباز کردن و رمزگذاری متون

    با این حال، رمز نه تنها باید افشای اطلاعات را دشوار کند، بلکه رمزگذاری و رمزگشایی را با کلید مخفی شناخته شده برای کاربر آسان می کند.

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

    در رمزهای مرکب، جایگشت و جانشینی ساده اغلب به عنوان رمزهای ساده استفاده می شود. جایگشت به سادگی نویسه‌های متن ساده را به هم می‌ریزد و نوع خاصی از درهم‌آمیزی توسط کلید مخفی تعیین می‌شود. در جایگزینی، هر کاراکتر در متن ساده با کاراکتر دیگری از همان الفبا جایگزین می شود و نوع خاص جایگزینی نیز توسط کلید مخفی تعیین می شود. لازم به ذکر است که در یک رمز بلوکی مدرن، بلوک‌های متن ساده و متن رمزی توالی‌های باینری هستند که معمولاً ۶۴ یا ۱۲۸ بیت طول دارند. با طول 64 بیت، هر بلوک می تواند 264 مقدار بگیرد. بنابراین، جایگزین‌ها در یک الفبای بسیار بزرگ حاوی حداکثر 2 64 ~ 10 19 "نویسه" ساخته می‌شوند.

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

    تمام اقدامات انجام شده توسط الگوریتم رمزنگاری بلوک بر روی داده ها بر اساس این واقعیت است که بلوک در حال تبدیل می تواند به عنوان یک عدد صحیح غیر منفی از محدوده مربوط به ظرفیت آن نمایش داده شود. به عنوان مثال، یک بلوک 32 بیتی داده را می توان به عنوان عددی از محدوده 0...4294 967 295 تفسیر کرد. علاوه بر این، بلوکی که عرض بیت آن "قدرت دو" است می تواند به عنوان الحاق چندین تفسیر شود. اعداد غیر منفی مستقل از یک محدوده کوچکتر (بلوک 32 بیتی همچنین می تواند به عنوان الحاق دو عدد 16 بیتی مستقل از محدوده 0...65535 یا به عنوان ترکیبی از چهار عدد 8 بیتی مستقل از محدوده نمایش داده شود. 0...255).

    در این اعداد، الگوریتم رمزنگاری بلوک، اقدامات ذکر شده در جدول 1 را طبق یک طرح خاص انجام می دهد. 4.1.

    جدول 4.1. اقدامات انجام شده توسط رمزنگاری بر روی اعداد

    به عنوان یک پارامتر Vبرای هر یک از این تبدیل ها می توان استفاده کرد:

    ¨ یک عدد ثابت (به عنوان مثال، ایکس"= ایکس + 125);

    ¨ عدد به دست آمده از کلید (به عنوان مثال، ایکس"= ایکس + F(K));

    ¨ عدد به دست آمده از قسمت مستقل بلوک (به عنوان مثال، ایکس 2" = ایکس 2 + اف(ایکس 1)).

    توالی عملیات انجام شده بر روی بلوک، ترکیبی از گزینه های بالا Vو خود توابع افو آرایش کنید ویژگی های متمایز کنندهالگوریتم رمزنگاری بلوک متقارن خاص

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

    13 ژوئن 2017 در 13:37

    متقارن و رمزگذاری نامتقارن. تجزیه و تحلیل الگوریتم انتقال داده های رمزگذاری شده بین سرورها

    • الگوریتم ها،
    • امنیت اطلاعات ،
    • رمزنگاری

    ما موافقیم که ماشینی که داده های رمزگذاری شده را ارسال می کند همیشه ماشین A است و ماشینی که آنها را دریافت می کند سمبلب

    کتابخانه دو مورد ممکن را حل می کند (در صورت لزوم عملکرد را اضافه خواهم کرد):


    2) موردی که ماشینی وجود دارد و نیاز به انتقال داده های رمزگذاری شده به ماشین دیگری دارد (B). در این حالت اولین ماشین (A) آغازگر انتقال است.

    کتابخانه هر دو گزینه را پیاده سازی می کند که برای هر کدام یک نسخه نمایشی وجود دارد:

    برای اولین مورد در پوشه server_b_1یک فیلمنامه وجود دارد testGetDataFromA.php
    برای مورد دوم در پوشه server_a_1یک فیلمنامه وجود دارد testPushDataToB.php

    کتابخانه برای هر دو حالت Encode.php یکسان است، اما برای مورد اول تعدادی اسکریپت اضافی مورد نیاز است، برای مورد دوم موارد دیگر، بنابراین، برای جلوگیری از سردرگمی، آنها را به طور عملکردی در پوشه های server_a_1 و server_b_1 (احتمالاً بعدی) جدا کردم. نسخه های کتابخانه ساختار متفاوتی خواهند داشت). بنابراین، اگر هر دو ماشین نیاز به اجرای هر دو مورد انتقال اول و دوم داشته باشند، هر یک از این ماشین‌ها هر دو پوشه را خواهند داشت.

    اکنون در مورد نحوه اجرای هر دو راه حل:

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

    قبل از شروع تجزیه و تحلیل پیاده سازی، من فقط به این نکته اشاره می کنم که کلید متقارن با استفاده از توابع رمزگذاری php Mcrypt طبق طرح زیر رمزگذاری می شود:

    $encrypted_data = urlencode(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256، $sinc_key، $notice_text، MCRYPT_MODE_ECB))); $test_decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$sinc_key, base64_decode(urldecode($encrypted_data)),MCRYPT_MODE_ECB));
    کار با رمزگذاری نامتقارن با استفاده از php OpenSSL انجام می شود

    بنابراین:

    من ابتدا طرح های ساده شده هر دو مورد انتقال را که در ابتدا ذکر شده است و سپس با جزئیات بیشتر در نظر خواهم گرفت.

    1) موردی که یک ماشین (B) وجود دارد که به داده های ماشین A نیاز دارد (مثلاً باید یک فشار مشتری دریافت کند) و این داده ها باید به طور ایمن دریافت شوند. آن ها آغازگر انتقال ماشین B است.

    ماشین B یک جفت کلید (خصوصی و عمومی) تولید می کند و با ارسال کلید عمومی (با حفظ کلید خصوصی) از ماشین A درخواست می کند. ماشین A یک کلید متقارن تولید می کند و با آن انتقال مورد نیاز را رمزگذاری می کند اطلاعات طبقه بندی شده N. پس از آن، ماشین A کلید متقارن رمزگذاری شده با کلید عمومی و همچنین اطلاعات سری N رمزگذاری شده با کلید متقارن را برمی گرداند. ماشین B داده ها را با کلید خصوصی خود رمزگشایی می کند. در داده های رمزگشایی شده، کلید متقارن و داده های رمزگذاری شده با آن را دریافت می کند. از کلید متقارن برای رمزگشایی داده های مخفی استفاده می کند.

    هیچ تضمینی وجود ندارد که ماشین A ماشین ما باشد و نه مامور FSB آناتولی. بنابراین، اجرای این الگوریتم توسط کتابخانه با یک بررسی اضافی کمی تغییر می کند:

    (اسکریپت نمایشی - server_b_1/testGetDataFromA.php)

    در هر دو ماشین، کلید مخفی SIGNATURE_KEY ثبت شده است که در آن شرکت می کند تایید اضافی. ماشین B یک جفت کلید (خصوصی و عمومی)، کلید اتصال فعلی را تولید می‌کند و یک درخواست (http://.../server_a_1/getDataToB.php) به ماشین A می‌دهد و کلید اتصال فعلی و کلید عمومی (نگهداری) را ارسال می‌کند. کلید خصوصی). ماشین A یک کلید متقارن تولید می کند، اطلاعات سری N مورد نیاز برای انتقال را رمزگذاری می کند. داده های اضافی M نیز تولید می شود که md5 از رشته حاوی SIGNATURE_KEY و کلید اتصال فعلی است. پس از آن، ماشین A یک رشته رمزگذاری شده با یک کلید عمومی را از یک کلید متقارن و داده های اضافی M، و همچنین اطلاعات سری N رمزگذاری شده با یک کلید متقارن را برمی گرداند. ماشین B داده ها را با یک کلید متقارن با کلید خصوصی خود رمزگشایی می کند، یک رشته موضوع M (زیرا به راحتی می تواند md5 را از رشته حاوی SIGNATURE_KEY و کلید اتصال فعلی محاسبه کند). اگر داده های اضافی مطابقت داشته باشند (که فقط یک بررسی اضافی برای هر تراکنش است که ماشین A SIGNATURE_KEY و بنابراین ماشین ما را می شناسد)، ماشین B کلید متقارن را استخراج می کند که با آن اطلاعات سری N را رمزگشایی می کند.

    2) موردی که ماشینی وجود دارد و نیاز به انتقال داده های رمزگذاری شده به ماشین دیگری دارد (B). در این حالت اولین ماشین (A) آغازگر انتقال است.

    یک الگوریتم ساده شده برای چنین انتقالی به شرح زیر است:

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

    هیچ تضمینی وجود ندارد که ما کلید عمومی را از خودروی B دریافت کرده ایم و نه از نماینده FSB، پتروف. بنابراین، اجرای این الگوریتم توسط کتابخانه با بررسی های اضافی کمی تغییر می کند:

    (اسکریپت نمایشی - server_a_1/testPushDataToB.php)

    در هر دو ماشین، کلید مخفی SIGNATURE_KEY ثبت شده است که در تأیید اضافی نقش دارد. ماشین A با تولید md5 از کلید اتصال فعلی و SIGNATURE_KEY این داده ها را (همراه با کلید رمزگذاری نشده اتصال فعلی) به ماشین B (http://.../server_b_1/get_public_key.php) ارسال می کند. یک کلید عمومی فقط در صورتی که چنین md5 را از SIGNATURE_KEY شما و کلید دریافتی اتصال فعلی دریافت کند. این مسئله را حل نمی کند که کلید عمومی از ماشین A و نه از ماشین افسر FSB واسیلی به دست می آید، اما به ماشین B تضمین می کند که یک کلید عمومی را به طور خاص برای ماشین A ایجاد کند (اگرچه یک کلید عمومی تولید می کند. به طور کلی یک موضوع دلخواه است، اما حتی در اینجا بهتر است آن را ایمن بازی کنید). همراه با کلید عمومی، md5 از SIGNATURE_KEY و کلید دوم اتصال فعلی تولید می شود. کلید دوم اتصال فعلی یک هش دلخواه است. داده های کلید عمومی، کلید اتصال تصادفی دوم و md5 مشخص شده به ماشین A برگردانده می شود. پس از دریافت کلید اتصال تصادفی دوم، ماشین A با دانستن SIGNATURE_KEY، یک تایید md5 تولید می کند و اگر با آنچه دستگاه دریافت کرده مطابقت داشته باشد، کلید عمومی را دریافت می کند. از ماشین B در نظر گرفته می شود و نه از واسیلی.

    در مرحله بعد، ماشین A (در اینجا طرح از قبل مشابه مورد اول انتقال داده است) یک کلید متقارن و یک بررسی اضافی تولید می کند که md5 از SIGNATURE_KEY و کلید اتصال فعلی است. این داده ها با کلید عمومی ماشین B رمزگذاری می شوند. سپس داده ها به همراه کلید اتصال فعلی به ماشین B ارسال می شوند (http://.../server_b_1/pushDataFromA.php) که اتصال فعلی را ایجاد می کند. کلید و SIGNATURE_KEY md5 بر اساس داده های دریافت شده از این داده ها، با داده های دریافتی بررسی می کند که تضمین می کند که داده ها از نماینده FSB نیکولای نیست. اگر همه چیز مرتب باشد و تأیید تأیید شود، کلید متقارن با استفاده از کلید خصوصی که قبلاً برای رمزگشایی پیام استفاده می شود استخراج می شود.

    اگر این اطلاعات برای کسی مفید باشد خوشحال خواهم شد.

    1 سیستم های رمزگذاری متقارن سیستم هایی هستند که در آنها از یک کلید رمزنگاری برای رمزگذاری و رمزگشایی استفاده می شود. قبل از اختراع طرح رمزگذاری نامتقارن، تنها روشی که وجود داشت رمزگذاری متقارن بود. کلید الگوریتم باید توسط هر دو طرف مخفی نگه داشته شود. الگوریتم رمزگذاری قبل از تبادل پیام توسط طرفین انتخاب می شود.

    2 تبادل اطلاعات در سه مرحله انجام می شود:

    1) فرستنده کلید را به گیرنده منتقل می کند (در شبکه ای با چندین مشترک ، هر جفت مشترک باید کلید خود را داشته باشد ، متفاوت از کلیدهای جفت های دیگر).

    2) فرستنده با استفاده از کلید، پیامی را که برای گیرنده ارسال می شود رمزگذاری می کند.

    3) گیرنده پیام را دریافت کرده و آن را رمزگشایی می کند.

    اگر برای هر روز و برای هر جلسه ارتباطی از یک کلید منحصر به فرد استفاده شود، این امر امنیت سیستم را افزایش می دهد.

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

    طرح تبادل اطلاعات به شرح زیر است:

    گیرنده کلیدهای عمومی و سری را محاسبه می کند، کلید مخفی مخفی نگه داشته می شود، در حالی که کلید عمومی در دسترس قرار می گیرد (فرستنده، گروهی از کاربران شبکه، منتشر می کند).

    فرستنده با استفاده از کلید عمومی گیرنده، پیامی را که برای گیرنده ارسال می شود رمزگذاری می کند.

    گیرنده پیام را دریافت کرده و با استفاده از کلید خصوصی خود آن را رمزگشایی می کند.

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

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

    4 معمولاً در رمزگذاری متقارن از ترکیب پیچیده و چند مرحله‌ای از جایگزین‌ها و جابه‌جایی‌های داده‌های مبدأ استفاده می‌شود و مراحل (گذرها) زیادی می‌تواند وجود داشته باشد و هر یک از آنها باید با یک «کلید عبور» مطابقت داشته باشد. عملیات جایگزینی اولین نیاز برای یک رمز متقارن را برآورده می کند، و از شر هر گونه داده آماری با اختلاط بیت های پیام طبق قانون معین مشخص خلاص می شود. جایگشت برای برآورده کردن شرط دوم ضروری است - غیر خطی کردن الگوریتم. این امر با جایگزینی بخش خاصی از پیام با اندازه معین با یک مقدار استاندارد با مراجعه به آرایه اصلی به دست می آید.

    5 در سیستم های ارتباطی دولتی و نظامی، فقط از الگوریتم های متقارن استفاده می شود، زیرا یک توجیه کاملاً ریاضی برای پایداری سیستم های با کلیدهای عمومیهنوز نه، زیرا خلاف آن نیز ثابت نشده است. این شکل نموداری از عملکرد سیستم رمزگذاری در عملکرد فناوری GSM را نشان می دهد

    6 همین جدول ویژگی های اصلی الگوریتم های رمزگذاری مرکب را نشان می دهد

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

    8 IDEA (الگوریتم رمزگذاری بین المللی داده ها) یک الگوریتم رمزنگاری متقارن بلوکی است که توسط Xuejia Lai و James Massey از موسسه فناوری فدرال سوئیس توسعه یافته است.IDEA یکی از چندین الگوریتم رمزنگاری متقارن است که در ابتدا قرار بود جایگزین DES شود. IDEA یک الگوریتم بلوکی است که از یک کلید 128 بیتی برای رمزگذاری داده ها در بلوک های 64 بیتی استفاده می کند. هدف توسعه IDEA ایجاد یک الگوریتم رمزنگاری نسبتاً قوی با اجرای نسبتاً ساده بود.

    9. در کشور ما، فناوری توصیف شده در GOST 28147-89 "سیستم های پردازش اطلاعات. حفاظت رمزنگاری. الگوریتم تبدیل رمزنگاری" به عنوان یک استاندارد استفاده می شود. این GOST در سال 1989 تصویب شد و از آن زمان تاکنون تغییری نکرده است. الگوریتم رمزگذاری توسط KGB در اواخر دهه 70 توسعه یافت، با این حال، با یک "حاشیه ایمنی" نسبتاً بزرگ ایجاد شد. در این پارامتر، مرتبه‌ای برتر از DES آمریکایی بود که ابتدا یک سه‌گانه و سپس با AES جایگزین شد. بنابراین، حتی امروزه نیز قدرت رمزنگاری استاندارد روسیه به طور کامل تمام نیازهای مدرن را برآورده می کند.

    10 بیایید به مفهوم قدرت رمزنگاری (یا قدرت رمزنگاری) برویم - توانایی یک الگوریتم رمزنگاری برای مقاومت در برابر تحلیل رمز. الگوریتم ایمن الگوریتمی است که برای یک حمله موفقیت آمیز، به منابع محاسباتی دست نیافتنی از طرف دشمن، حجم غیرقابل دسترس پیام های باز و رمزگذاری شده رهگیری شده یا چنین زمان افشایی نیاز دارد که پس از انقضا، اطلاعات محافظت شده دیگر مرتبط نباشد و غیره. در بیشتر موارد، قدرت رمزنگاری را نمی توان از نظر ریاضی اثبات کرد، تنها می توان آسیب پذیری های یک الگوریتم رمزنگاری را اثبات کرد. سیستم های رمزنگاری به اندازه کافی و کاملاً پایدار وجود دارد. رمز رمزگذاری Vernam (eng. Verrnam Cipher، نام دیگری برای یک بار پد - طرح یک بار پد) یک سیستم رمزگذاری متقارن است که برای اولین بار در سال 1882 توسط F. Millero پیشنهاد شد و در سال 1917 توسط کارمند AT & T گیلبرت ورنام دوباره اختراع شد.

    تنها راهی که وجود داشت رمزگذاری متقارن بود. کلید الگوریتم باید توسط هر دو طرف مخفی نگه داشته شود، اقدامات لازم برای محافظت از دسترسی به کانال، در طول کل مسیر رمزنگاری، یا توسط طرفین تعامل از طریق اشیاء رمزنگاری، پیام‌ها، انجام شود. این کانالفعل و انفعالاتی با علامت "برای استفاده توسط اشخاص ثالث نیست". الگوریتم رمزگذاری قبل از تبادل پیام توسط طرفین انتخاب می شود.

    اطلاعات اولیه

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

    نمونه های کلاسیک از این الگوریتم ها هستند الگوریتم های رمزنگاری متقارنلیست شده در زیر:

    • جایگشت ساده
    • جایگشت تک توسط کلید
    • جایگشت دوگانه
    • جایگشت "میدان جادویی"

    جایگشت ساده

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

    جایگشت تک توسط کلید

    بیشتر روش عملیرمزگذاری که جایگشت تک کلید نامیده می شود، بسیار شبیه به قبلی است. تفاوت آن فقط در این است که ستون های جدول بر اساس مرتب شدن مجدد هستند کلمه کلیدی، یک عبارت یا مجموعه ای از اعداد به طول یک ردیف جدول.

    جایگشت دوگانه

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

    جایگشت "میدان جادویی"

    مربع‌های جادویی به جدول‌های مربعی گفته می‌شود که اعداد طبیعی متوالی از 1 در خانه‌هایشان حک شده است که به هر ستون، هر سطر و هر قطر یک عدد می‌رسد. چنین مربع هایی به طور گسترده ای برای وارد کردن متن رمزگذاری شده با توجه به شماره گذاری داده شده در آنها استفاده می شد. اگر محتویات جدول را خط به خط بنویسید، با مرتب کردن مجدد حروف، رمزگذاری دریافت خواهید کرد. در نگاه اول، به نظر می رسد که تعداد بسیار کمی از مربع های جادویی وجود دارد. با این حال، تعداد آنها به سرعت با افزایش اندازه مربع افزایش می یابد. بنابراین، اگر چرخش های آن را در نظر نگیرید، تنها یک مربع جادویی 3×3 وجود دارد. در حال حاضر 880 مربع جادویی 4×4 وجود دارد و تعداد مربع های جادویی 5×5 حدود 250000 است. بنابراین، مربع های جادویی اندازه های بزرگمی‌توانست مبنای خوبی برای یک سیستم رمزگذاری قوی آن زمان باشد، زیرا آزمایش دستی همه گزینه‌های کلیدی برای این رمز غیرقابل تصور بود.

    اعداد از 1 تا 16 در یک مربع 4 در 4 حک شده بودند. جادوی آن این بود که مجموع اعداد در ردیف ها، ستون ها و مورب های کامل برابر با یک عدد - 34 بود. این مربع ها برای اولین بار در چین ظاهر شدند، جایی که مقداری به آنها نسبت داده شد. "قدرت جادویی".

    پس از آن، متن رمز شده به یک رشته نوشته می شود (خواندن از چپ به راست، خط به خط انجام می شود):
    .irdzegyuSzhaoyanP

    هنگامی که رمزگشایی می شود، متن در یک مربع قرار می گیرد و متن ساده در یک دنباله از اعداد "مربع جادویی" خوانده می شود. برنامه باید "مربع جادویی" تولید کند و مورد نیاز را یکی با کلید انتخاب کند. مربع بزرگتر از 3x3 است.

    داستان

    الزامات

    از دست دادن کامل تمام نظم های آماری پیام اصلی یک نیاز مهم برای یک رمز متقارن است. برای انجام این کار، رمز باید یک "اثر بهمن" داشته باشد - باید یک تغییر قوی در بلوک رمز با تغییر 1 بیتی در داده های ورودی وجود داشته باشد (در حالت ایده آل، مقادیر 1/2 بیت از بلوک رمز باید تغییر کند).

    همچنین یکی از الزامات مهم عدم وجود خطی بودن است (یعنی شرایط f(a) xor f(b) == f(a xor b))، در غیر این صورت اعمال رمزنگاری تفاضلی برای رمز تسهیل می شود.

    طرح کلی

    در حال حاضر، رمزهای متقارن عبارتند از:

    • رمزهای بلوکی پردازش اطلاعات در بلوک هایی با طول معین (معمولاً 64، 128 بیت)، با استفاده از یک کلید برای بلوک در در زمان مناسب، معمولاً با چندین چرخه زدن و جایگزینی که دور نامیده می شود. نتیجه تکرار دورها یک اثر بهمنی است - از دست دادن فزاینده تطابق بیت بین بلوک های داده های باز و رمزگذاری شده.
    • رمزهای جریانی، که در آنها رمزگذاری بر روی هر بیت یا بایت متن منبع (ساده) با استفاده از گاما انجام می شود. یک رمز جریان را می توان به راحتی بر اساس یک رمز بلوکی (به عنوان مثال، GOST 28147-89 در حالت گاما) که در یک حالت خاص راه اندازی شده است ایجاد کرد.

    اکثر رمزهای متقارن از ترکیب پیچیده ای استفاده می کنند تعداد زیادیجایگزینی ها و جابجایی ها بسیاری از این رمزها در چندین پاس (گاهی تا 80) با استفاده از یک "کلید عبور" در هر پاس اجرا می شوند. مجموعه "کلیدهای عبور" برای همه پاس ها، "برنامه زمانی کلید" نامیده می شود. به عنوان یک قاعده، از کلید با انجام عملیات خاصی از جمله جایگشت و جایگزینی روی آن ایجاد می شود.

    یک راه معمولی برای ساخت الگوریتم های رمزگذاری متقارن، شبکه Feistel است. الگوریتم یک طرح رمزگذاری را بر اساس تابع F(D، K می‌سازد)، که در آن D قطعه‌ای از داده به اندازه نصف بلوک رمزگذاری است، و K کلید عبور برای این پاس است. تابع نیازی به برگشت پذیر نیست - تابع معکوس آن ممکن است ناشناخته باشد. مزایای شبکه Feistel همزمانی تقریباً کامل رمزگشایی با رمزگذاری است (تنها تفاوت ترتیب معکوس "کلیدهای عبور" در برنامه است) که اجرای سخت افزار را بسیار تسهیل می کند.

    عملیات جایگشت، بیت های پیام را طبق قانون خاصی مخلوط می کند. در پیاده سازی های سخت افزاری، به صورت پیش پا افتاده به عنوان درهم تنیدگی هادی ها اجرا می شود. این عملیات جایگشت است که دستیابی به "اثر بهمن" را ممکن می کند. عملیات جایگشت خطی است - f(a) xor f(b) == f(a xor b)

    عملیات جایگزینی به عنوان جایگزینی مقدار یک بخش معین از پیام (اغلب 4، 6 یا 8 بیت) با یک عدد استاندارد که با ارجاع به یک آرایه ثابت در الگوریتم کدگذاری شده است، انجام می شود. عملیات جایگزینی غیرخطی بودن را به الگوریتم وارد می کند.

    اغلب، قدرت یک الگوریتم، به ویژه در مقابل تحلیل رمزی تفاضلی، به انتخاب مقادیر در جداول جایگزینی (S-boxes) بستگی دارد. حداقل، وجود عناصر ثابت S(x) = x، و همچنین عدم تأثیر برخی از بیت های بایت ورودی بر روی برخی از بیت های نتیجه نامطلوب تلقی می شود - یعنی مواردی که بیت نتیجه برای همه جفت کلمات ورودی که فقط در این بیت تفاوت دارند یکسان است.

    گزینه های الگوریتم

    الگوریتم های رمز متقارن زیادی (حداقل دوجین) وجود دارد که پارامترهای اساسی آنها عبارتند از:

    • طول کلید
    • تعداد دور
    • طول بلوک پردازش
    • پیچیدگی اجرای سخت افزار/نرم افزار
    • پیچیدگی تبدیل

    انواع رمزهای متقارن

    رمزهای بلوکی
    • AES (Eng. Advanced Encryption Standard) - استاندارد آمریکارمزگذاری
    • GOST 28147-89 - استاندارد رمزگذاری شوروی و روسیه، همچنین یک استاندارد CIS
    • DES (English Data Encryption Standard) - استاندارد رمزگذاری داده در ایالات متحده آمریکا
    • 3DES (Triple-DES، DES سه گانه)
    • RC2 (رمز Rivest یا رمز Ron))
    • IDEA (الگوریتم رمزگذاری بین المللی داده ها، الگوریتم رمزگذاری بین المللی داده ها)
    • CAST (پس از حروف اول توسعه دهندگان کارلایل آدامز و استافورد تاوارس)