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

При́нцип Керкго́ффса — правило разработки криптографических систем, согласно которому в засекреченном виде держится только определённый набор параметров алгоритма, называемый ключом, а сам алгоритм шифрования должен быть открытым. Другими словами, при оценке надёжности шифрования необходимо предполагать, что противник знает об используемой системе шифрования всё, кроме применяемых ключей. Широко применяется в криптографии. Впервые данный принцип сформулировал в 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]

Примечания

править
  1. La cryptographie militaire, 1883.
  2. Fabien Petitcolas (1997), English translation of "La cryptographie militaire"
  3. The Codebreakers: the story of secret writing, 1967, pp. 122—125.
  4. 1 2 3 Прикладная криптография, 1995, pp. 21.
  5. Mann, Charles C. (September 2002), "Homeland Insecurity", The Atlantic Monthly, Архивировано из оригинала 7 июля 2008, Дата обращения: 16 декабря 2018.
  6. The Ideal Cipher, 1998, 1999.
  7. Large-scale Distributed Computing and Applications: Models and Trends, 2010, pp. 204.
  8. Principles of Secure Processor Architecture Design, 2018, pp. 7.
  9. Security Through Obscurity Considered Dangerous, 2002, pp. 1.
  10. Communication Theory of Secrecy Systems, 1949, pp. 662.
  11. Decrypted Secrets: Methods and Maxims of Cryptology, 2007, pp. 29.

Литература

править