13.09.2018

Правила Керкгоффса (не путать с законами Кирхгофа)

Предположу, что многие слыщали про правило  Керкгоффса, которое упрощенно часто звучит как "стойкость криптографической системы должна зависеть только от секретности ключа, а не от секретности алгоритма". На самом же деле Керкгоффс сформулировал в конце 19-го века 6 принципов, которые должны соблюдаться при создании криптографических систем:

  1. Система должна быть практически, если не математически, невзламываемый.
  2. Система не должна требовать сохранения ее в тайне и попадание ее в руки врагов не должно вызывать проблем.
  3. Хранение и передача ключа должны быть осуществимы без помощи бумажных записей; участники должны располагать возможностью легко менять ключ по своему усмотрению.
  4.  Система должна быть совместима с телеграфной связью (напомню, что речь идет о конце 19-го века, когда единственным способом связи был телеграф).
  5. Система должна быть портативной и работа с ней не должна требовать более одного человека.
  6. Наконец, от системы требуется, учитывая возможные обстоятельства ее использования, чтобы она была проста в использовании и не требовала значительного напряжения ума или соблюдения большого количества правил.

Данные шесть принципов были впервые опубликованы в журнале "Военная наука" в 1883-м году (издается до сих пор). Две статьи, в январском и февральском выпусках, описывали существующие в 19-м веке системы шифрования и способы их криптоанализа. Там же Огюст Керкгоффс сформулировал и основы создания надежных криптографических систем, упомянутые выше.


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

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



Кстати, второй принцип Керкгоффса также упоминался и в известной работе Клода Шеннона "Теория связи в секретных системах", но немного в ином виде, получившим название максимы Шеннона - "противнику известна используемая система". Именно второй принцип и стал наиболее известным, что не умаляет важности и остальных, актуальных до сих пор. И это несмотря на то, что Керкгоффс формулировал свои идеи, опираясь на стратегию ведения войн, принятую еще до Первой мировой.

Я эту заметку написал после некоторой дискуссии, которая возникла на днях у меня с одним из стартаперов, который решил разработать систему защиты, опираясь на принцип "security through obscurity", который как раз и противоречит второму правилу Керкгоффса. Кроме того, я пробежался глазами по десятку отечественных учебников по криптографии и ни в одном, что удивительно, не упоминаются все шесть принципов, ограничиваясь только вторым.

ЗЫ. Кстати, не стоит путать Керкгоффса и Кирхгофа. Первый предложил принципы создания криптографических систем, актуальные до сих пор. И звали его Огюст. А второй был великим физиком, который сформулировал правила (часто именуемые законами) в области электричества. И звали его Густав. Но это так, из области общих знаний. 

1 коммент.:

Target комментирует...

Маскировка применяется периодически, но она актуальна для низкого уровня конфиденциальности. В текущей ситуации тотального контроля пользователей сети Интернет и нарушения 23 статьи Конституции РФ более актуальна задача - создание системы шифрования для массового использования в "открытых" информационных сетях с децентрализованной мажоритарной системой генерации и распространения ключей, в которой невозможно получить ключ из одного источника. Скачал программу, при генерации ключей используется несколько источников других таких же пользователей выбранных случайно, система "живет" как ботсеть, используя все устройства пользователей. "Убить" ее полностью можно только отключив весь Интернет. Для поддержки репозитория ключей вероятно подойдет технология распределенных реестров. Вопрос кто и как скоро разработает такую программу. Зарабатывать таргетированной рекламой в этом случае будет сложнее. Содержание сообщений не прочитаешь, скоринг не проведешь, но статья 23 Конституции РФ будет обеспечиваться. Конечно, стойкость шифра не будет идеальной, потому что придется использовать алгоритмы асимметричной криптографии для распределения ключей и генератор ключей не будет "идеальным". Но сейчас же используют? Даже ГОСТ имеется. Будет вписываться в правило по "практической" стойкости. А если применить механизм генерации/обмена ключами при личном контакте участников обмена (устройств), т.е. "секретный" канал обмена ключами, то можно получить почти "идеальную" стойкость (например, между родственниками или работниками одной государственной или иной организации). Остается вопрос доверия разработчику. Тут только открытый код поможет.