رمزنگاری جریانی
رمزنگاری جریانی با تولید یک جریان کلید شبهتصادفی از یک کلید محرمانه و ترکیب آن با متن اصلی، معمولاً یک بیت یا بایت در هر زمان، دادهها را رمزگذاری میکند و پد یکبار مصرف کاملاً امن را با یک کلید کوتاه شبیهسازی میکند.
Definition
رمزنگاری جریانی یک طرح رمزنگاری متقارن است که یک جریان کلید شبهتصادفی طولانی را از یک کلید محرمانه (و معمولاً یک نانس) تولید میکند و با ترکیب جریان کلید با متن اصلی، که معمولاً با XOR بیتی است، رمزگذاری میکند.
Scope
این موضوع به طراحی و تحلیل رمزنگاریهای جریانی میپردازد: مولدهای جریان کلید ساخته شده از ثباتهای تغییر بازخورد خطی، ساختارهای ترکیبی و فیلتر، و طراحیهای مدرن نرمافزارمحور مانند ChaCha20 و مجموعه eSTREAM. این موضوع به ارتباط با پد یکبار مصرف، نیاز حیاتی به عدم استفاده مجدد از جریان کلید، و حملات ناشی از استفاده مجدد از جریان کلید یا مولدهای ضعیف میپردازد. این موضوع رمزنگاریهای بلوکی را شامل نمیشود، اگرچه یک رمزنگاری بلوکی در حالت شمارنده عملاً به عنوان یک رمزنگاری جریانی عمل میکند.
Core questions
- چگونه میتوان یک کلید کوتاه را به یک جریان کلید طولانی و غیرقابل پیشبینی تبدیل کرد که یک پد یکبار مصرف را تقلید کند؟
- چرا استفاده مجدد از جریان کلید فاجعهبار است و نانسها چگونه از آن جلوگیری میکنند؟
- چه چیزی یک مولد جریان کلید را از نظر رمزنگاری قوی میکند نه صرفاً از نظر آماری تصادفی؟
- رمزنگاریهای جریانی مدرن مانند ChaCha20 چگونه بدون سختافزار اختصاصی به سرعت دست مییابند؟
- چه حملات کلاسیکی (همبستگی، جبری) طراحیهای ضعیف مبتنی بر LFSR را میشکنند؟
Key concepts
- جریان کلید
- پد یکبار مصرف
- ثبات تغییر بازخورد خطی
- نانس و بردار مقداردهی اولیه
- استفاده مجدد از جریان کلید (پد دو بار مصرف)
- ChaCha20 و Salsa20
- حملات همبستگی
- رمزنگاریهای همزمان در مقابل خودهمزمانشونده
Key theories
- پد یکبار مصرف و امنیت کامل
- رمزگذاری با XOR کردن با یک کلید واقعاً تصادفی به طول پیام، به امنیت کامل شانون دست مییابد؛ رمزنگاریهای جریانی این را با جایگزینی یک جریان کلید شبهتصادفی به جای پد واقعاً تصادفی غیرعملی، تقریبی میکنند.
- تولید جریان کلید و شبهتصادفی بودن رمزنگاری
- یک رمزنگاری جریانی امن یک مولد شبهتصادفی است: جریان کلید آن باید از نظر محاسباتی از تصادفی بودن غیرقابل تشخیص باشد، به طوری که هیچ مهاجم کارآمدی نتواند بیتهای جریان کلید آینده را حتی پس از مشاهده بسیاری از آنها پیشبینی کند.
Mechanisms
یک رمزنگاری جریانی همزمان، یک حالت داخلی را از کلید و نانس مقداردهی اولیه میکند، سپس به طور مکرر حالت را بهروزرسانی کرده و خروجی جریان کلید را مستقل از متن اصلی منتشر میکند. جریان کلید با متن اصلی XOR میشود تا رمزگذاری شود و با متن رمزگذاری شده XOR میشود تا رمزگشایی شود. طراحیهای مبتنی بر ثباتهای تغییر بازخورد خطی در سختافزار سریع هستند اما برای مقاومت در برابر حملات جبری به ترکیبکنندههای غیرخطی نیاز دارند؛ رمزنگاریهای نرمافزاری مانند ChaCha20 از عملیات جمع-چرخش-XOR (ARX) بر روی یک حالت بزرگ برای سرعت و امنیت استفاده میکنند.
Clinical relevance
ChaCha20 (با احراز هویت Poly1305) به طور گسترده در TLS 1.3، OpenSSH، WireGuard و پیامرسانی موبایل مستقر شده است، جایی که در دستگاههای فاقد شتابدهنده سختافزاری AES، به AES ترجیح داده میشود. رمزنگاریهای جریانی برای رسانههای جریانی و پیوندهای با تأخیر کم بسیار مناسب هستند. از لحاظ تاریخی، رمزنگاری جریانی RC4 از SSL/TLS اولیه و Wi-Fi WEP محافظت میکرد تا اینکه سوگیریهای آن منجر به منسوخ شدن آن شد.
Evidence & guidelines
ChaCha20-Poly1305 در RFC 8439 استاندارد شده و برای TLS تأیید شده است. RC4 به دلیل سوگیریهای جریان کلید توسط RFC 7465 در TLS ممنوع شده است. پروژه eSTREAM (2004-2008) مجموعهای از رمزنگاریهای جریانی تأیید شده را تولید کرد. قانون اصلی در تمام استانداردها این است که یک جفت (کلید، نانس) هرگز نباید دوباره استفاده شود.
History
رمزنگاریهای جریانی از رمزنگاری ورنام (1917) و پد یکبار مصرف نشأت میگیرند. سیستمهای نظامی جنگ سرد از مولدهای جریان کلید مبتنی بر ثباتهای تغییر استفاده میکردند. RC4، که توسط ران ریوست در سال 1987 طراحی شد، به طور گستردهای مورد استفاده قرار گرفت اما در نهایت در کاربردهای پروتکلی خود شکسته شد. رقابت eSTREAM و خانواده Salsa20/ChaCha20 دانیل برنستاین (2008) نسل مدرن و نرمافزارپسند را تعریف کردند که اکنون در پروتکلهای اینترنتی مورد علاقه است.
Key figures
- Claude Shannon
- Daniel J. Bernstein
- Ronald Rivest
- Adi Shamir
Related topics
Seminal works
- shannon1949
- katz2020
- menezes1996
Frequently asked questions
- اگر جریان کلید یک رمزنگاری جریانی دوباره استفاده شود چه اتفاقی میافتد؟
- XOR کردن دو متن رمزگذاری شده با یک جریان کلید، جریان کلید را حذف میکند و XOR دو متن اصلی را باقی میگذارد — که اغلب هر دو پیام را فاش میکند. به همین دلیل است که هر رمزگذاری باید از یک نانس جدید استفاده کند تا جریان کلید هرگز تحت یک کلید ثابت تکرار نشود.
- آیا رمزنگاریهای جریانی کمتر از رمزنگاریهای بلوکی امن هستند؟
- ذاتاً نه. رمزنگاریهای جریانی مدرن مانند ChaCha20 به اندازه AES امن در نظر گرفته میشوند و گاهی اوقات در نرمافزار سریعتر هستند. ناامنی ناشی از سوءاستفاده (استفاده مجدد از جریان کلید) یا طراحیهای قدیمی ضعیف مانند RC4 است، نه از مفهوم رمزنگاری جریانی.