Введение

Криптографический алгоритм

Криптографический алгоритм Solitaire был разработан Брюсом Шнайером по просьбе Нила Стивенсона для использования в его романе «Криптономикон», где полевые агенты используют его для безопасной связи, не полагаясь на электронику и не имея при себе компрометирующих инструментов. Он был задуман как ручная криптосистема, вычисляемая с помощью обычной колоды игральных карт. В «Криптономиконе» этот алгоритм изначально назывался Pontifex, чтобы скрыть тот факт, что он связан с использованием игральных карт. Одной из причин создания Solitaire является то, что в тоталитарных режимах колода карт гораздо доступнее (и менее компрометирующая), чем персональный компьютер с набором криптологических инструментов. Однако, как предупреждает Шнайер в приложении к «Криптономикону», теперь об этом алгоритме узнают почти все, кто интересуется криптоанализом, поэтому ношение колоды карт также может быть расценено как компрометирующее. Более того, анализ выявил недостатки в шифре, из-за чего он теперь считается небезопасным.

Криптоанализ

В 1999 году Пол Кроули обнаружил, что в ключевом потоке наблюдается смещение в сторону повторения символов, которые возникают примерно каждые 1/22,5 символа, а не ожидаемые 1/26. Хотя его безопасность может быть достаточной для очень коротких сообщений, в целом Solitaire считается небезопасным. Кроули также заметил, что в некоторых случаях существуют две различные начальные конфигурации колоды, которые приводят к одной и той же конфигурации после выполнения алгоритма генерации ключевого потока. Например, если джокер A находится либо внизу, либо вверху колоды, он станет второй картой после первого шага. Это означает, что алгоритм не всегда обратим, как изначально утверждал Шнайер. В 2019 году Дэниел Шиу предложил модификации алгоритма, которые повысили бы его безопасность, но усложнили бы ручную реализацию.