Stream Ciphers و Block Ciphers چیست ؟
Stream Ciphers و Block Ciphers چیست ؟
شاید شما هم مانند خیلی از افرادی که پا به دنیای تست و نفوذ میزارن اسم مفاهیمی رو میشنوید که براتون عجیب هست یا به خوبی انها رو نمیتونید درک کنید.
امروز ما تصمیم گرفتیم راجب دو تا از مفاهیم مهم باهاتون صحبت کنید که مرتبط هستند با مبحث cryptography که اسم های آنها عبارت از Stream Cipher و Block Cipher که همانطور که گفتیم بسیار مهم هستند در ادامه راجبشون تا حدی خوبی صحبت خواهیم کرد. با ما همراه باشید تا انتهایی این مقاله.
Ciphers را توضیح دهید ؟
قبل از این که به سراغ Stream Cipher و Block Cipher برویم شما باید با مفهوم Ciphers آشنا شوید.
- همانطور که در بالا گفتیم تمام موارد این درس مربوط به cryptography هست که دلیل استفاده از cryptography به طور کلی این است
که از یک سیستم در برابر هکر با ایمن سازی ارتباط بین دو سیستم محافظت کنیم. به زبان ساده تر ارتباط دو سمت را امن میکنیم با بهتر بگیم securing communication رو برقرار میکنیم بین دو سمت.
فرایند cryptography با یک plaintext شروع میشود که در نتیجه ما ما با استفاده از یک الگوریتم رمزگذاری (encrypted ciphertext)، یک متن رمزگذاری (encryption) شده از plaintext داده شده ایجاد می کنیم. و خوب برای بازگرداندن پیام plaintext اصلی (original)، از یک الگوریتم رمزگشایی (decryption) استفاده می کنیم :
خوب حالا باید بهتون بگیم که الگوریتم های رمزگذاری و رمزگشایی (encryption and decryption) در cryptography به عنوان ciphers شناخته می شوند. ciphers از کلیدها برای رمزگذاری و رمزگشایی پیام ها استفاده می کنند. بر اساس استفاده از کلید، می توان رمزها را به دو دسته کلی تقسیم کرد : متقارن و نامتقارن.
Symmetric ciphers
Symmetric cipher از یک shared key برای فرآیند رمزگذاری و رمزگشایی استفاده می کند. به دلیل استفاده از یک کلید
Symmetric ciphers سریع هستند و زمانی که حجم داده زیاد است، می توان از آنها استفاده علاوه بر این، کلید مورد استفاده برای کل فرآیند secret است و فقط بین فرستنده و گیرنده مشترک (shared) است :
Asymmetric cipher
از طرف دیگر، یک asymmetric cipher از کلیدهای مختلفی برای فرآیند رمزگذاری و رمزگشایی استفاده می کند.
به دلیل استفاده از کلیدهای مختلف، در مقایسه با symmetric cipher زمان بیشتری می برد. بنابراین، یک رمز نامتقارن انتخاب خوبی است زمانی که داده های موجود کم باشد. مزیت قابل توجه حفظ محرمانگی و حفظ تمام داده ها است. علاوه بر این، ما می توانیم کلید مورد استفاده برای فرآیند رمزگذاری را با همه به اشتراک بگذاریم. با این حال، کلید فرآیند رمزگشایی secret است :
Stream Cipher یک الگوریتم رمزگذاری است که 1 بیت یا بایت plaintext را در یک زمان رمزگذاری می کند.
از یک جریان بی نهایت (infinite stream) از بیت های شبه تصادفی به عنوان کلید استفاده می کند. برای اینکه پیادهسازی stream cipher امن بماند، مولد شبه تصادفی آن باید غیرقابل پیش بینی باشد و کلید هرگز نباید دوباره استفاده شود stream cipher برای تقریب رمزگذاری ایدهآل طراحی شدهاند که به نام One-Time Pad شناخته میشود.
One-Time Pad، که قرار است از یک کلید کاملا تصادفی استفاده کند، می تواند به “perfect secrecy” دست یابد.
یعنی قرار است در برابر حملات brute force مصونیت کامل داشته باشد. مشکل One-Time Pad این است که برای ایجاد چنین cipher، کلید آن باید به اندازه plaintext یا حتی طولانی تر باشد. به عبارت دیگر، اگر فایل ویدیویی 500 مگابایتی دارید که میخواهید رمزگذاری کنید، به کلیدی با حداقل 4 گیگابیت نیاز دارید.
در ادامه..
در ادامه اگر بخواهیم یکی از معروف ترین stream cipher ها رو نام ببریم میتوان از RC4 – RC4 نام برد که بیشترین استفاده را در بین تمام stream cipher دارد. همچنین به عنوان ARCFOUR یا ARC4 شناخته می شود. تراشههای RC4 در پروتکلهای مختلفی مانند WEP و WPA (هر دو پروتکل امنیتی برای شبکههای بیسیم) و همچنین در TLS استفاده شدهاند.
- متأسفانه، مطالعات اخیر آسیبپذیریهایی را در RC4 نشان دادهاند که موزیلا و مایکروسافت را بر آن داشته تا توصیه کنند
که در صورت امکان آن را غیرفعال کنید. در واقع، RFC 7465 استفاده از RC4 را در تمام نسخه های TLS ممنوع می کند. در نتیجه این یافتههای اخیر به stream cipher دیگر (مانند SALSA، SOSEMANUK، PANAMA، و بسیاری دیگر که قبلاً وجود داشتهاند اما هرگز به محبوبیت RC4 دست نیافتهاند) اجازه میدهد تا ظهور کنند و احتمالاً جای آن را بگیرند.
Block Cipher را توضیح دهید ؟
block cipher یک الگوریتم رمزگذاری است که اندازه ثابتی از n بیت داده – معروف به بلوک – را در یک زمان رمزگذاری می کند. اندازه های معمول هر بلوک 64 بیت، 128 بیت و 256 بیت است.
به عنوان مثال، یک block cipher میتواند 64 بیتی، 64 بیت plaintext را بگیرد و آن را به 64 بیت ciphertext تبدیل کند. در مواردی که بیتهای plaintext کوتاهتر از اندازه بلوک است، طرحهای padding به بازی فراخوانی میشوند. اکثر symmetric ciphers مورد استفاده امروزه در واقع رمزهای بلوکی هستند. DES، Triple DES، AES، IDEA و Blowfish برخی از الگوریتم های رمزگذاری رایج هستند که در این گروه قرار می گیرند.
در ادامه اگر بخواهیم از معروف ترین Block Ciphers ها رو نام ببریم میتوان به موارد زیر اشاره کرد :
- DES – DES که مخفف Data Encryption Standard می باشد، در گذشته محبوب ترین block cipher در جهان بود و در چندین صنعت استفاده می شد. امروزه هنوز هم محبوب است، اما فقط به این دلیل که معمولاً در بحث های تاریخی الگوریتم های رمزگذاری گنجانده شده است. الگوریتم DES در سال 1977 به یک استاندارد در ایالات متحده تبدیل شد. با این حال، در حال حاضر ثابت شده است که در برابر حملات brute force و سایر روش های رمزنگاری آسیب پذیر است. DES یک رمز 64 بیتی است که با یک کلید 64 بیتی کار می کند. در واقع، 8 بیت از 64 بیت در کلید، بیت های برابری هستند، بنابراین اندازه کلید از نظر فنی 56 بیت است.
- 3DES : همانطور که از نامش پیداست، 3DES رمزی مبتنی بر DES است (cipher based). این عملاً DES است که سه بار اجرا می شود. هر عملیات DES می تواند از یک کلید متفاوت استفاده کند که طول هر کلید 56 بیت است. 3DES مانند DES دارای اندازه بلوک 64 بیتی است. اگرچه 3DES چندین برابر قوی تر از DES است، اما همچنین بسیار کندتر است (حدود 3 برابر کندتر). از آنجایی که بسیاری از سازمانها دریافتند که 3DES برای بسیاری از برنامهها بسیار کند است، هرگز به جانشین نهایی DES تبدیل نشد.
- AES – یک استاندارد دولت فدرال ایالات متحده از سال 2002، AES یا Advanced Encryption Standard مسلماً پرمصرف ترین block cipher در جهان است. اندازه بلوک آن 128 بیت است و از سه اندازه کلید ممکن – 128، 192 و 256 بیت پشتیبانی می کند. هرچه اندازه کلید طولانی تر باشد، رمزگذاری قوی تر است. با این حال، کلیدهای طولانی تر نیز منجر به فرآیندهای طولانی تر رمزگذاری می شوند.
- این یکی دیگر از block cipher محبوب است (اگرچه به اندازه AES به طور گسترده استفاده نمی شود). اندازه بلوک آن 64 بیت است و از یک کلید با طول متغیر پشتیبانی می کند که می تواند بین 32 تا 448 بیت باشد. یکی از مواردی که باعث جذابیت Blowfish می شود این است که Blowfish ثبت اختراع نشده و حق امتیاز ندارد.
- Twofish : این رمز مربوط به Blowfish است اما آنقدر محبوب نیست (هنوز). این یک رمز رمز بلوکی 128 بیتی است که از اندازه کلید تا 256 بیت پشتیبانی می کند.