Материал из РУВИКИ — свободной энциклопедии

Принцип Керкгоффса

При́нцип Керкго́ффса — правило разработки криптографических систем, согласно которому в засекреченном виде держится только определённый набор параметров алгоритма, называемый ключом, а сам алгоритм шифрования должен быть открытым. Другими словами, при оценке надёжности шифрования необходимо предполагать, что противник знает об используемой системе шифрования всё, кроме применяемых ключей. Широко применяется в криптографии. Впервые данный принцип сформулировал в XIX веке голландский криптограф Огюст Керкгоффс[1].

Шесть требований Керкгоффса[править | править код]

В 1883 голландский криптограф Огюст Керкгоффс изложил шесть принципов проектирования военных шифров в своей книге «Военная криптография». Шесть основных требований к криптосистеме, все из которых до настоящего времени определяют проектирование криптографически стойких систем, в переводе с французского звучат так[2]:

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

Второе из этих требований и стало известно как «принцип Керкгоффса».

История возникновения[править | править код]

Керкгоффс рассматривал криптографию как лучшую альтернативу стеганографическому кодированию, которое было распространено в девятнадцатом веке для сокрытия военных сообщений. Одна из проблем со схемами кодирования состоит в том, что они полагаются на секреты, хранящиеся человеком, такие как «словари», которые раскрывают, например, секретное значение слов. Обнаружение стеганографического словаря навсегда ставит под угрозу соответствующую систему кодирования. Другая проблема заключается в том, что риск раскрытия напрямую зависит от количества пользователей, владеющих секретом. В криптографии девятнадцатого века использовались простые таблицы, которые обеспечивали транспозицию буквенно-цифровых символов, как правило, с учетом пересечений строк и столбцов, которые могли быть изменены с помощью ключей, которые обычно были короткими, числовыми и могли быть зафиксированы в человеческой памяти. Секретные сообщения могут быть скомпрометированы только, если соответствующий набор таблицы, ключа и сообщения попадет в руки противника. Системы не подвергаются риску, потому что их компоненты, то есть буквенно-цифровые таблицы символов и ключи, могут быть легко изменены[3].

Объяснение принципа[править | править код]

Суть принципа[править | править код]

Сущность принципа заключается в том, что мощь криптосистемы не должна основываться на незнании взломщика принципов работы алгоритма[4]. Действительно, Брюс Шнайер полагает, что принцип Керкгоффса применим не только к кодам и шифрам, но и для систем безопасности в целом: каждый секрет создает потенциальную точку отказа. Другими словами, секретность является основной причиной хрупкости, и поэтому она может привести к катастрофическому краху системы. И наоборот, открытость обеспечивает гибкость системы. Принцип Керкгоффса направлен на то, чтобы сделать безопасность алгоритмов и протоколов независимой от их секретности; открытость не должна влиять на безопасность.[5]

Преимущества[править | править код]

Использование безопасной криптографии заменяет сложную проблему обеспечения безопасности сообщений гораздо более управляемой: хранением относительно небольших ключей в безопасности. Хранить используемые методы в секрете сложнее, особенно в долгосрочной перспективе, как и изменять их после развертывания системы[6].

Существует множество способов обнаружения внутренних деталей широко используемой системы. Наиболее мощным и эффективным способом вскрытия является бандитский криптоанализ. Криптоаналитик угрожает, шантажирует или пытает кого-нибудь, пока не получит ключ; может прибегать к вымогательству и взятничеству. Также существует возможность, что кто-то сможет дезассемблировать исходный код и восстановить алгоритм[4].

В свою очередь раскрытие ключей влечет за собой более простой и менее затратный процесс генерации и распространения новых ключей. То есть безопасность должна зависеть только от секретности ключа, а не от секретности используемых методов[7].

Применение[править | править код]

Большинство широко используемых в гражданской криптографии систем шифрования, в соответствии с принципом Керкгоффса, использует известные, не составляющие секрета криптографические алгоритмы. Но Агентство национальной безопасности хранит свои алгоритмы в секрете, и у них работают лучшие криптографы мира. И к тому же они обсуждают алгоритмы друг с другом, полагаясь на знание и компетенцию коллег. Соответственно, у них нет необходимости открывать алгоритмы для всех[4].

Безопасность через неясность[править | править код]

Безопасность через неясность — антагонист принципа Керкгоффса, заключающийся в том, что необходимо скрывать внутреннее устройство системы для обеспечения её безопасности. В некоторых компаниях принято хранить в тайне внутреннюю работу системы. Они утверждают, что безопасность через неясность делает продукт более безопасным и менее уязвимым для атак. Противоположным аргументом является то, что безопасность через неясность может привести ко многим реальным атакам. Разработчики не должны недооценивать хитрость злоумышленников и никогда не должны использовать данный принцип[8].

Сокрытие уязвимостей в алгоритмах снижает вероятность их исправления и увеличивает вероятность того, что они могут и будут использоваться злоумышленниками. Открытое обсуждение и анализ алгоритмов выявляют слабые стороны, о которых не думали первоначальные авторы, и тем самым приводят к созданию более совершенных и более безопасных алгоритмов.[9]

Максима Шеннона[править | править код]

Американский математик Клод Шеннон в статье «Теория связи в секретных системах», опубликованной в журнале Bell System Technical Journal в 1949 году, сформулировал этот принцип (вероятно, независимо от Керкгоффса) следующим образом: «Враг знает систему»[10]. В такой формулировке этот принцип называется максима Шеннона. Другими словами, нужно проектировать системы, исходя из предположения, что противник с ними полностью ознакомится.[11]

Примечания[править | править код]

Литература[править | править код]