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

[بندانگشتی|300px|چپ| یک [:en:tabula recta|tabula recta برای استفاده در رمزنگاری 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" خواهد بود.

```bash
Plaintext:  ATTACK AT DAWN...
 Key:        QUEENL YA TTACK AT DAWN....
 Ciphertext: QNXEPV YT WTWP...
```

بنابراین متن رمز شده "QNXEPVYTWTWP" خواهد بود.

## تحلیل رمز
با استفاده از پیغام "meet at the fountain" و با کلمه کلیدی "KILT" داریم:
```bash
plaintext:  MEETATTHEFOUNTAIN (unknown)
 key:        KILTMEETATTHEFOUN (unknown)
 ciphertext: WMPMMXXAEYHBRYOCA (known)
```


ما کلمات مشترک، کلمات دو حرفی و کلمات سه حرفی را بررسی می‌کنیم. برای مثال، "THE":

```bash
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
```

قطعات متن اولیه با ترتیب احتمال مرتب‌سازی می‌شوند.

```bash
unlikely <----> promising

EQW DFL TFT ... ... ETA OUN FAX
```


می دانیم که قطعه متن آشکار اولیه با شیفت به تعداد حروف کلمه کلیدی در کلید ظاهر می‌شود. به‌طور مشابه قطعه حدس زده شده از کلید ("THE") در متن آشکار با شیفت به چپ ظاهر می‌شود. بنابراین با حدس زدن طول کلمه کلیدی (احتمالاً بین 3 تا 12 حرف) می‌توانیم به متن آشکار و کلید پی ببریم.

همین کار را با "OUN" انجام می دهیم:

```bash
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 تا در متن آشکار شیفت می دهیم:

```bash
ciphertext: WMPMMXXAEYHBRYOCA
key: ..LTM.ETA.THE.OUN
plaintext: ..ETA.THE.OUN.AIN
```


در این مرحله احتمالاً کلمه کلیدی 4 کاراکتری است ("..LT") و ما باید بخشی از پیغام را به دست آورده باشیم:

```bash
M.ETA.THE.OUN.AIN
```


از آنجایی که حدس‌های متن آشکار ما بر روی 4 کاراکتر سمت چپ دارد، می‌توانیم حدس‌های درست و غلط بزنیم و جاهای خالی را پر کنیم:

```bash
MEETATTHEFOUNTAIN
```

سادگی تحلیل رمز به خاطر فیدبکی است که از رابطه بین متن آشکار و کلید ناشی می‌شود. یک حدس 3 کاراکتری، 6 کاراکتر دیگر را آشکار می‌کند که به نوبه خود کاراکترهای بیشتری را آشکار می‌کنند و تأثیر آبشاری ایجاد می‌کند که به رد کردن سریع حدس‌های غلط کمک می‌کند.
## autokey در رمزنگاری‌های مدرن
رمزنگاری‌های مدرن Autokey از متودهای بسیار متنوع رمزنگاری استفاده می‌کنند، اما همه این رمزنگاری‌ها یا از بایت‌های کلید یا بایت‌هایی از متن آشکار استفاده می‌کنند. بیشتر رمزهای دنباله‌ای بر اساس ژنراتور عدد شبه تصادفی ساخته شده اند: از کلید برای مقدار دهی اولیه ژنراتور استفاده می‌شود، و سپس بایت‌هایی از کلید یا متن آشکار برای تولید بایت‌های بیشتر به ژنراتور تغذیه می‌شود.
برخی از رمزهای دنباله‌ای خودهماهنگ  هستند؛ چراکه بایت‌های بعدی کلید معمولاً فقط به N بایت قبلی پیغام وابسته است. اگر یک بایت در پیغام گم یا مخدوش شود، تنها زمانی که N بایت پردازش شده باشد جریان کلید نیز مخدوش می‌شود. در این نقطه جریان کلید به حالت نرمال باز می گردد و بقیه پیغام به درستی رمزگشایی می‌شود. 
## جستارهای وابسته
* Chaocipher

## پانویس

## منابع

* Bellaso, Giovan Battista, *Il vero modo di scrivere in cifra con facilità, prestezza, et securezza di Misser Giovan Battista Bellaso, gentil’huomo bresciano*, Iacobo Britannico, Bressa 1564.
* Vigenère, Blaise de, *Traicté des chiffres ou secrètes manières d’escrire*, Abel l’Angelier, Paris 1586. ff. 46r-49v.
* LABRONICUS (Buonafalce, A), *Early Forms of the Porta Table*, “The Cryptogram”, vol. LX n. 2, Wilbraham 1994.
* Buonafalce, Augusto, *Bellaso’s Reciprocal Ciphers*, “Cryptologia” 30 (1):39-51, 2006.
* LABRONICUS (Buonafalce, A), *Vigenère and Autokey. An Update*, “The Cryptogram”, vol. LXXIV n. 3, Plano 2008.

## پیوند به بیرون
* Secret Code Breaker - AutoKey Cipher Decoder and Encoder
* A Javascript implementation of the Autokey cipher

رده:رمز دنباله‌ای
رده:رمزنگاری
رده:رمزهای کلاسیک