Выбор алгоритма

Когда приходит время оценивать и выбирать алгоритм, возможны различные варианты:

  • Можно выбрать опубликованный алгоритм, основываясь на том, что опубликованный алгоритм был тщательно изучен многими криптографами, если до сих пор никто не взломал алгоритм, то он должен быть достаточно хорош.

  • Можно доверять производителю, основываясь на вере в то, что хорошо известный производитель дорожит своей репутацией и вряд ли рискнет ей, продавая аппаратуру или программы с некачественными алгоритмами.

  • Можно доверять личному консультанту, основываясь на вере в то, что беспристрастный консультант способен правильно оценить различные алгоритмы.

  • Можно доверять правительству, основываясь на вере в то, что правительство не обманет своих граждан.

  • Можно написать свои собственные алгоритмы, основываясь на вере в то, что криптографические способности авторов лучше, чем у кого-то другого, и что верить нельзя никому кроме себя.

Проблематичен любой из этих вариантов, но первый кажется наиболее разумным. Доверчивость по отношению к производителю, правительству или консультанту опасна. Большинство тех, кто называет себя консультантами по безопасности (даже сотрудники фирм с громкими именами), обычно ничего не знают о шифровании. Большинство производителей продуктов, обеспечивающих безопасность, ничем не лучше. Самые лучшие криптографы мира работают в NSA, но они не скажут вам, что они знают. У них свои интересы, не совпадающие с интересами простых граждан. Каким бы вы ни были гением, создание своего алгоритма и его использование без объективного анализа откровенно глупо.

Алгоритмы, описанные в этой книге, открыты. Большинство появилось в открытой литературе, и многие алгоритмы были подвергнуты криптоанализу экспертами в этой области. Я перечисляю все опубликованные результаты, как позитивные, так и негативные. У меня нет доступа к результатам криптоанализа, выполненного какой-нибудь военной организацией (которые, вероятно, лучше, чем академические учреждения - у них больше опыта и лучше финансирование), так что, возможно, эти алгоритмы взломать легче, чем кажется. Даже если так, вероятность того, что они более безопасны, чем алгоритм тайно созданный и реализованный в бункере какой-то корпорации.

Уязвимой место этих рассуждений - это то, что нам неизвестны возможности различных военных криптоаналитических организаций.

Какие алгоритмы может вскрыть NSA? Большинству из нас узнать это все равно не удастся. Если в момент ареста у вас будет компьютерный жесткий диск, шифрованный с помощью DES, вряд ли ФБР предъявит расшифрованный открытый текст на суд - то, что они вскрыли алгоритм, скорее всего является большим секретом, чем любая раскрытая информация. В ходе Второй мировой войны союзники не использовали расшифрованные немецкие сообщения, пока им не удавалось добыть эту информацию и из других источников. Единственный способ заставить NSA признать возможность взломать конкретный алгоритм - это зашифровать что-то настолько значительное, что опубликование секрета будет стоить признания возможности вскрывать алгоритм. Или, еще лучше, придумайте что-то действительно смешное и пошлите эту шутку шифрованной электронной почтой таинственными символами в подозрительные страны. Сотрудники NSA тоже люди, я сомневаюсь, что даже им удастся сохранить в тайне хорошую шутку.

Хорошим предположением является то, что NSA может прочитать любое избранное сообщение, но не может прочитать все сообщения, которые оно выбирает. Ресурсы NSA ограничены, и агентству придется выбирать сообщение для вскрытия среди многих других. Другим хорошим предположением является то, что они предпочтут выламывать суставы для взлома кодов. Такой исход настолько вероятен, что они прибегнут к взлому кодов только, если они не захотят разглашать прочитанный секрет.

В любом случае, лучшее, что большинство из нас может сделать, - это выбрать один из открытых алгоритмов, который сумел устоял в ходе открытого тщательного исследования и криптоанализа.