رمزنگاری کلید خودکار

رمزنگاری کلید خودکار (به انگلیسی: autokey) یک روش رمزنگاری است که پیغام ( متن آشکار) را با کلید ترکیب می‌کند. دو نوع رمزنگاری کلید خودکار وجود دارد: key autokey و text autokey. رمزنگاری key autokey از اعضای جریان کلید قبلی برای تعیین عنصر بعدی در جریان کلید استفاده می‌کند. رمزنگاری text autokey از متن پیغام‌های قبلی برای تعیین عنصر بعدی در جریان کلید استفاده می‌کند.
در رمزنگاری مدرن، تمام رمزنگاری‌های خودهماهنگ رمز دنباله‌ای همگی از نوع کلید خودکار هستند.

تاریخچه

اولین رمزنگاری autokey توسط Girolamo Cardano ارائه شد که یک نقص اساسی داشت. همانند بسیاری از رمزنگاری‌های autokey، این روش نیز از خود متن آشکار برای رمزنگاری متن آشکار استفاده می‌کند؛ با این وجود، از آنجا که در این روش از هیچ کلید اضافی استفاده نمی‌شود، هر کسی که پیغام رمز شده را بگیرد، در صورت دانستن نوع الگوریتم رمزنگاری مورد استفاده می‌تواند به پیغام اولیه پی ببرد. رمزنگاران تلاش‌هایی برای طراحی سیستمی که به این سادگی شکست نخورد و در عین حال رمزگشایی در آن برای گیرنده پیغام سخت نباشد انجام دادند و در نهایت Giovan Battista Bellaso در سال ۱۵۴۶ با استفاده از "جدول متقابل" با ۵ حرف و Blaise de Vigenère Bellaso در سال ۱۵۸۶ با جدولی مشابه ولی ۱۰ حرفی موفق به طراحی چنین سیستمی شدند.
یک نوع رایج از autokey با tabula recta که مربعی با ۲۶ کپی از حروف الفبا است آغاز می‌شود. همانند شکل خط اول با "A" آغاز می‌شود، خط دوم با "B" و ... . برای رمز کردن یک متن آشکار، خطی که دارای اولین حرف برای رمز شدن است و ستونی که اولین حرف کلید است را موقعیت یابی می‌کند. نقطه تقاطع این سطر و ستون حرف رمز شده‌است.
Giovan Battista Bellaso از حرف اول هر کلمه به عنوان پایه‌ای برای شروع text-Autokey استفاده می‌کند. Blaise de Vigenère از یک حرف توافق شده به عنوان پایه استفاده می‌کرد.
رمزنگاری autokey که توسط American Cryptogram Association استفاده می‌شود، با یک کلمه کلیدی کوتاه شروع می‌شود و و پیغام را به انتهای آن اضافه می‌کند. بنابراین اگر کلمه کلیدی "QUEENLY" و متن پیغام "ATTACK AT DAWN" باشد، کلید "QUEENLYATTACKATDAWN" خواهد بود.
 Plaintext:  ATTACK AT DAWN...
 Key:        QUEENL YA TTACK AT DAWN....
 Ciphertext: QNXEPV YT WTWP...
بنابراین متن رمز شده "QNXEPVYTWTWP" خواهد بود.

تحلیل رمز

با استفاده از پیغام "meet at the fountain" و با کلمه کلیدی "KILT" داریم:
 plaintext:  MEETATTHEFOUNTAIN (unknown)
 key:        KILTMEETATTHEFOUN (unknown)
 ciphertext: WMPMMXXAEYHBRYOCA (known)
ما کلمات مشترک، کلمات دو حرفی و کلمات سه حرفی را بررسی می‌کنیم. برای مثال، "THE":
 ciphertext: WMP MMX XAE YHB RYO CA
 key:        THE THE THE THE THE ..
 plaintext:  DFL TFT ETA FAX YRK ..

 ciphertext: W MPM MXX AEY HBR YOC A
 key:. THE THE THE THE THE .
 plaintext:. TII TQT HXU OUN FHY.

 ciphertext: WM PMM XXA EYH BRY OCA
 key:        .. THE THE THE THE THE
 plaintext:  .. WFI EQW LRD IKU VVW
قطعات متن اولیه با ترتیب احتمال مرتب‌سازی می‌شوند.
unlikely <----> promising

EQW DFL TFT ... ... ETA OUN FAX
می دانیم که قطعه متن آشکار اولیه با شیفت به تعداد حروف کلمه کلیدی در کلید ظاهر می‌شود. به‌طور مشابه قطعه حدس زده شده از کلید ("THE") در متن آشکار با شیفت به چپ ظاهر می‌شود. بنابراین با حدس زدن طول کلمه کلیدی (احتمالاً بین 3 تا 12 حرف) می‌توانیم به متن آشکار و کلید پی ببریم.
همین کار را با "OUN" انجام می دهیم:
shift by 4:
 ciphertext: WMPMMXXAEYHBRYOCA
 key:        ......ETA.THE.OUN
 plaintext:  ......THE.OUN.AIN

 by 5:
 ciphertext: WMPMMXXAEYHBRYOCA
 key:        .....EQW..THE..OU
 plaintext:  .....THE..OUN..OG

 by 6:
 ciphertext: WMPMMXXAEYHBRYOCA
 key:        ....TQT...THE...O
 plaintext:  ....THE...OUN...M
همانطور که می بینید شیفت 4 تایی خوب به نظر می رسد (دو حالت شیفت دیگر Q بعید دارند). بنابراین "ETA" ظاهر شده را به اندازه 4 تا در متن آشکار شیفت می دهیم:
ciphertext: WMPMMXXAEYHBRYOCA
key: ..LTM.ETA.THE.OUN
plaintext: ..ETA.THE.OUN.AIN
در این مرحله احتمالاً کلمه کلیدی 4 کاراکتری است ("..LT") و ما باید بخشی از پیغام را به دست آورده باشیم:
 M.ETA.THE.OUN.AIN
از آنجایی که حدس‌های متن آشکار ما بر روی 4 کاراکتر سمت چپ دارد، می‌توانیم حدس‌های درست و غلط بزنیم و جاهای خالی را پر کنیم:
MEETATTHEFOUNTAIN
سادگی تحلیل رمز به خاطر فیدبکی است که از رابطه بین متن آشکار و کلید ناشی می‌شود. یک حدس 3 کاراکتری، 6 کاراکتر دیگر را آشکار می‌کند که به نوبه خود کاراکترهای بیشتری را آشکار می‌کنند و تأثیر آبشاری ایجاد می‌کند که به رد کردن سریع حدس‌های غلط کمک می‌کند.

autokey در رمزنگاری‌های مدرن

رمزنگاری‌های مدرن Autokey از متودهای بسیار متنوع رمزنگاری استفاده می‌کنند، اما همه این رمزنگاری‌ها یا از بایت‌های کلید یا بایت‌هایی از متن آشکار استفاده می‌کنند. بیشتر رمزهای دنباله‌ای بر اساس ژنراتور عدد شبه تصادفی ساخته شده اند: از کلید برای مقدار دهی اولیه ژنراتور استفاده می‌شود، و سپس بایت‌هایی از کلید یا متن آشکار برای تولید بایت‌های بیشتر به ژنراتور تغذیه می‌شود.
برخی از رمزهای دنباله‌ای خودهماهنگ (به انگلیسی:  self-synchronizing) هستند؛ چراکه بایت‌های بعدی کلید معمولاً فقط به N بایت قبلی پیغام وابسته است. اگر یک بایت در پیغام گم یا مخدوش شود، تنها زمانی که N بایت پردازش شده باشد جریان کلید نیز مخدوش می‌شود. در این نقطه جریان کلید به حالت نرمال باز می گردد و بقیه پیغام به درستی رمزگشایی می‌شود.