تریویوم (سایفر)
تریویوم یک رمز جریانی همزمان است که به منظور ایجاد یک مبادله انعطافپذیر بین سرعت و تعداد درگاه در سختافزار، و اجرای کارآمد و منطقی نرمافزار طراحی شدهاست.
تریویوم توسط نویسندگان آن، Christophe De Cannière و Bart Preneel، به سختافزار مربوط به مسابقه eSTREAM ارسال شد و توسط پروژه eSTREAM به عنوان بخشی از پورتفولیو برای رمزهای سختافزاری سطح پایین (Profile 2) انتخاب شد. تریویوم به عنوان استاندارد بینالمللی ISO / IEC 29192-3 شناخته شده اما هنوز ثبت اختراع نشدهاست.
تریویوم از یک کلید ۸۰ بیتی و یک IV 80 بیتی حداکثر 2 64 بیت خروجی تولید میکند. این سادهترین داوطلب eSTREAM است. در حالی به دلیل سادگی کارکردش، مقاومت چشمگیری در برابر آنالیز رمز نشان میدهد، حملات اخیر حاشیه امنیتی را باریکتر نشان میدهند.
شرح[ویرایش]
استیت داخلی ۲۸۸ بیتی تریویوم شامل سه رجیستر شیفت با طولهای مختلف است. در هر دور، یک بیت با استفاده از ترکیبی غیرخطی به یکی از این سه رجیستر منتقل شده و یک بیت از خروجی تولید میشود. برای مقدار دهی اولیه رمز، کلید و IV در دوتا از این شیفت رجیسترها نوشته میشوند. حالت رمزگذاری 4 × ۲۸۸ = ۱۱۵۲ بار به روز میشود؛ به طوری که هر مقدار از استیت داخلی، به روشی غیرخطی و پیچیده، به تمام بیتهای کلید و IV وابستگی دارد.
در ۶۵ بیت اول هر کدام از رجیسترهای شیفت، ضربه ای ظاهر نمیشود؛ بنابراین هر بیت حالت جدید تا حداقل ۶۵ دور پس از تولید استفاده نمیشود. این، کلید عملکرد نرمافزار Trivium و انعطافپذیری آن در سختافزار است.
مشخصات[ویرایش]
Trivium میتواند با استفاده از سه معادله بازگشتی بسیار مختصر مشخص شود.[۱] هر متغیر عنصری از GF (2) است. آنها میتوانند به صورت بیت، با "+" به معنی XOR و "•" به معنی AND تعریف شوند.
- ai = ci−66 + ci−111 + ci−110 • ci−109 + ai−69
- bi = ai−66 + ai−93 + ai−92 • ai−91 + bi−78
- ci = bi−69 + bi−84 + bi−83 • bi−82 + ci−87
بیتهای خروجی r 0 … r 2 64 − 1 توسط عبارت زیر تولید میشوند:
- ri = ci−66 + ci−111 + ai−66 + ai−93 + bi−69 + bi−84
با توجه به کلید ۸۰ بیتی k 0 … k 79 و آی وی l بیتی v0 … vl−۱ (به صورتی که ۰ ≤ l ≤ ۸۰)، تریویوم به صورت زیر مقداردهی اولیه میشود:
- (a−1245 … a−1153) = (۰, ۰ … 0, k0 … k79)
- (b−1236 … b−1153) = (۰, ۰ … 0, v0 … vl−1)
- (c−1263 … c−1153) = (۱, ۱, ۱, ۰, ۰ … ۰)
جهت مپ کردن جریانی از بیتهای r به جریانی از بایتهای R، از روش little-endian استفاده میکنیم:
R i = Σ j = ۰ … 7 2 j r 8 i + j
کارایی[ویرایش]
پیادهسازی مستقیم سختافزار Trivium از ۳۴۸۸ درگاه منطقی استفاده میکند و در هر کلاک یک بیت تولید میکند. با این حال، از آنجا که هر بیت حالت حداقل تا ۶۴ دور استفاده نمیشود، ۶۴ بیت حالت میتواند بهطور موازی و با هزینه سختافزاری کمتری تولید شود. مبادلات متفاوتی نیز بین سرعت و مساحت امکانپذیر خواهد بود.
همین ویژگی امکان پیادهسازی کارآمدو پر بازده نرمافزار را فراهم میکند. تست کارایی انجام شده توسط eSTREAM به سرعت رمزگذاری انبوه، در حدود 4 cycles/byte در برخی پلتفرمهای x86 میپردازد، که به خوبی با 19 cycles/byte اجرای مرجع AES در همان پلتفرم مقایسه میشود.
امنیت[ویرایش]
تا تاریخ آوریل ۲۰۱۵[بروزرسانی], no cryptanalytic attacks better than brute-force attack are known, but several attacks come close. The cube attack requires 268 steps to break a variant of Trivium where the number of initialization rounds is reduced to 799.[۲] Previously other authors speculate that these techniques could lead to a break for 1100 initialisation rounds, or "maybe even the original cipher".[۳] This builds on an attack due to Michael Vielhaber that breaks 576 initialization rounds in only 212.3 steps.[۴]
منابع[ویرایش]
- ↑ «eSTREAM Phorum, 2006-02-20». بایگانیشده از اصلی در ۲۴ فوریه ۲۰۲۱. دریافتشده در ۱۸ مه ۲۰۲۰.
- ↑ Fouque, Pierre-Alain; Vannet, Thomas (2015-04-05). "Improving Key Recovery to 784 and 799 rounds of Trivium using Optimized Cube Attacks" (PDF). Cryptology ePrint Archive. ePrint 20150406:231124. Retrieved 2015-04-17.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Dinur, Itai; Shamir, Adi (2008-09-13). "Cube Attacks on Tweakable Black Box Polynomials" (PDF). Cryptology ePrint Archive. ePrint 20080914:160327. Retrieved 2008-12-04.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Michael Vielhaber (2007-10-28). "Breaking ONE.FIVIUM by AIDA an Algebraic IV Differential Attack".
پیوند به بیرون[ویرایش]
- صفحه eSTREAM در Trivium
- اجرای eSTREAM بایگانیشده در ۲۰ سپتامبر ۲۰۱۵ توسط Wayback Machine