Қағаз карталармен шифрлау алгоритмі: «Солитер» және оның қауіпсіздігі
Solitaire (cipher)
Solitaire шифрі алгоритмі: қағаз карталармен қолмен жасалатын, құпия хабар алмасуға арналған қарапайым, бірақ қауіпсіз жүйе. Cryptonomicon романында қолданылған.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Криптографиялық алгоритм
Cryptographic algorithm
Solitaire криптографиялық алгоритмін Брюс Шнайер Нил Стивенсонның өтініші бойынша өзінің Cryptonomicon романында пайдалану үшін жасаған. Романдағы барлау агенттері оны электрондық құралдарға тәуелді болмай немесе қылмыстық дәлел болатын заттарды алып жүрмей, құпиялы түрде байланысу үшін қолданады. Бұл алгоритм – қалыпты ойын карталарының жиынтығымен қолмен есептеуге арналған криптожүйе ретінде құрастырылған. Cryptonomicon романында бұл алгоритм бастапқыда Pontifex деп аталды, осылайша оның ойын карталарын қолданатыны жасырылды. Solitaire алгоритмін жасаудың бір себебі – тоталитарлық режимде карталар жиынтығы криптологиялық бағдарламалар жиынтығымен жабдықталған компьютерге қарағанда әлдеқайда қолжетімді әрі қауіпсіз. Алайда, Шнайер Cryptonomicon романының қосымшасында ескерткендей, криптоанализ саласындағы мамандардың барлығы дерлік бұл алгоритм туралы біледі, сондықтан карталар жиынтығын алып жүру де күдікті қылық ретінде қарастырылуы мүмкін. Сонымен қатар, жүргізілген талдаулар шифрдегі қателіктерді көрсетті, нәтижесінде ол қазіргі таңда қауіпсіз емес деп есептеледі.
The Solitaire cryptographic algorithm was designed by Bruce Schneier at the request of Neal Stephenson for use in his novel Cryptonomicon, in which field agents use it to communicate securely without having to rely on electronics or having to carry incriminating tools. It was designed to be a manual cryptosystem calculated with an ordinary deck of playing cards. In Cryptonomicon, this algorithm was originally called Pontifex to hide the fact that it involved playing cards. One of the motivations behind Solitaire's creation is that in totalitarian environments, a deck of cards is far more affordable (and less incriminating) than a personal computer with an array of cryptological utilities. However, as Schneier warns in the appendix of Cryptonomicon, just about everyone with an interest in cryptanalysis will now know about this algorithm, so carrying a deck of cards may also be considered incriminating. Furthermore, analysis has revealed flaws in the cipher such that it is now considered insecure.
Криптоанализ
1999 жылы Пол Кроули кілт ағынында кейбір таңбалардың қайталануға бейім екенін анықтады, олар күтілген 1/26-дан гөрі шамамен әр 1/22,5 таңба сайын кездеседі. Оның қауіпсіздігі өте қысқа хабарламалар үшін жеткілікті болғанымен, жалпы алғанда Solitaire қауіпсіз емес деп есептеледі. Кроули сондай-ақ, кейбір жағдайларда кілт ағыны алгоритмі орындалғаннан кейін екі түрлі колода конфигурациясының бірдей нәтиже беруін байқады. Мысалы, A жокері колоданың төменгі немесе жоғарғы бөлігінде болса, ол 1-қадамнан кейін екінші карта болады. Бұл алгоритмнің Schneier бастапқыда айтқандай, әрқашан кері қайтарылмайтынын көрсетеді. 2019 жылы Дэниел Шиу алгоритмнің қауіпсіздігін арттыратын, бірақ қолмен іске асыруды қиындататын өзгерістер ұсынды.
In 1999 Paul Crowley discovered that there is a bias towards repeating characters in the keystream, which occur about every 1/22.5 characters rather than the expected 1/26. While its security may perhaps be adequate for very short messages, in general Solitaire is considered insecure. Crowley also noticed that in some cases, there are two different deck configurations which result in the same configuration after executing the keystream algorithm. For instance, when the A joker is either on the bottom of the deck or on the top of the deck it will become the second card after step 1. This means the algorithm is not always reversible as Schneier had originally claimed. In 2019 Daniel Shiu proposed modifications to the algorithm which would increase its security, at the cost of making it more difficult for the user to implement manually.