При исследовании пакета криптографического программного обеспечения всегда остается вопрос: почему вы должны доверять этой программе? Даже если вы самостоятельно исследовали исходный текст, но ведь не каждый имеет опыт в криптографии, чтобы судить о степени защиты. Даже если вы опытный шифровальщик, вы можете пропустить небольшие слабости в алгоритмах.
Когда я учился в колледже в начале семидесятых, я верил, что изобрел прекрасную схему шифрования. Простой псевдослучайный поток чисел добавлялся к потоку текста, чтобы создать зашифрованный текст. В результате, по-видимому, частотный анализ зашифрованного текста станет невозможным, и такой текст будет недоступен для расшифровки даже наиболее мощным правительственным службам. Я был настолько уверен в этом достижении. Излишне самоуверен.
Спустя несколько лет я обнаружил эту самую схему в нескольких статьях и учебниках по криптографии. Другой специалист размышлял о той же самой схеме. К сожалению, она была представлена как одна из простейших в качестве примера об использовании элементарной криптографической технологии для ее вскрытия. Столь много для моей прекрасной схемы.
Из этого скромного опыта я понял, как легко ошибиться в оценке качества защиты при изобретении алгоритма шифрования. Большинство людей не понимают, как дьявольски трудно изобрести алгоритм шифрования, который мог бы долго противостоять и отражать атаки сильного противника. Множество инженеров-программистов разработали одинаково наивные схемы шифрования (часто одинаковые), и некоторые из них были включены в коммерческие криптографические программные пакеты и продавались за хорошие деньги тысячам доверчивых пользователей.
Это похоже на продажу самофиксирующихся ремней безопасности, которые смотрятся хорошо и удобны, но фиксируются в открытом состоянии даже при самой медленной проверке. Зависимость от таких ремней может быть хуже, чем даже не использовать ремни совсем. Никто не предполагает, что они действительно плохи вплоть до настоящей аварии. Зависимость от слабого криптографического программного обеспечения может привести к необходимости размещения секретной информации с долей риска. Ведь вы не смогли бы иначе выполнить это, если бы у вас не было никакого криптографического программного обеспечения вообще. Возможно, вы даже никогда и не обнаружите, что ваши данные были скомпрометированы.
Иногда коммерческие пакеты используют Федеральный Стандарт Шифрования Данных (DES), хороший стандартный алгоритм рекомендуемый правительством для коммерческого применения (но не для секретной информации, что в значительной степени странно — хм... ). Существует несколько "режимов операции", которые DES может использовать, некоторые из них лучше, другие хуже. Правительство специально не рекомендует использовать самый слабый и простейший режим для сообщений, режим Electronic Codebook (ЕСВ). Оно рекомендуют более сильные и более сложные режимы Cipher Feedback (CFB) или Cipher Block Chaining (СВС).
К сожалению, большинство рассмотренных мною коммерческих пакетов для шифрования применяют режим ЕСВ. Когда я разговаривал с авторами ряда подобных систем, они говорили мне, что никогда не слышали о режимах СВС и CFB, и ничего не знали о слабостях режима ЕСВ. Тот факт, что они даже не изучили криптографию в объеме, достаточном для знания элементарных принципов, не убеждает. Те же самые программные пакеты часто включают в себя второй более быстрый алгоритм шифрования, который может использоваться вместо медленного DES. Автор такого пакета нередко полагает, что его собственный более быстрый алгоритм является столь же надежным, как и DES, но после подробных расспросов я обычно выясняю, что это просто-напросто разновидность моей знаменитой схемы времен колледжа. А иногда он может даже не рассказать, как работает его схема, но будет уверять меня, что это прекрасная схема и я должен ему верить. Несомненно, он полагает, что его алгоритм великолепен, но как я могу верить этому, не видя самого алгоритма?
Со всей честностью я должен подчеркнуть, что в большинстве случаев такие программы выпускаются компаниями, которые не специализируются в криптографической технологии.