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

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

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

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

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

Объяснение принципа

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

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

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

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

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

Безопасность через неясность 

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

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

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

Примечания

Литература 
 
 
 
  
 
 
 
 
 
 

Криптография
Обеспечение безопасности