Принцип Керкгоффса
При́нцип Керкго́ффса — правило разработки криптографических систем, согласно которому в засекреченном виде держится только определённый набор параметров алгоритма, называемый ключом, а сам алгоритм шифрования должен быть открытым. Другими словами, при оценке надёжности шифрования необходимо предполагать, что противник знает об используемой системе шифрования всё, кроме применяемых ключей. Широко применяется в криптографии. Впервые данный принцип сформулировал в XIX веке голландский криптограф Огюст Керкгоффс[1].
Шесть требований Керкгоффса
В 1883 голландский криптограф Огюст Керкгоффс изложил шесть принципов проектирования военных шифров в своей книге «Военная криптография». Шесть основных требований к криптосистеме, все из которых до настоящего времени определяют проектирование криптографически стойких систем, в переводе с французского звучат так[2]:
- Система должна быть по существу (…) не поддающейся расшифровке.
- Система не должна требовать секретности (…).
- Его должно быть легко передавать, и вы должны уметь запоминать ключи, не записывая их (…).
- Система должна быть совместима с телеграфной связью.
- Система должна быть портативной, и для ее эксплуатации не должно требоваться более одного человека.
- Система должна быть простой в использовании (…).
Оригинальный текст (фр.)
- Le système doit être matériellement, sinon mathématiquement, indéchiffrable ;
- Il faut qu’il n’exige pas le secret, et qu’il puisse sans inconvénient tomber entre les mains de l’ennemi ;
- La clef doit pouvoir en être communiquée et retenue sans le secours de notes écrites, et être changée ou modifiée au gré des correspondants ;
- Il faut qu’il soit applicable à la correspondance télégraphique ;
- Il faut qu’il soit portatif, et que son maniement ou son fonctionnement n’exige pas le concours de plusieurs personnes ;
- Enfin, il est nécessaire, vu les circonstances qui en commandent l’application, que le système soit d’un usage facile, ne demandant ni tension d’esprit, ni la connaissance d’une longue série de règles à observer.
Второе из этих требований и стало известно как «принцип Керкгоффса».
История возникновения
Керкгоффс рассматривал криптографию как лучшую альтернативу стеганографическому кодированию, которое было распространено в девятнадцатом веке для сокрытия военных сообщений. Одна из проблем со схемами кодирования состоит в том, что они полагаются на секреты, хранящиеся человеком, такие как «словари», которые раскрывают, например, секретное значение слов. Обнаружение стеганографического словаря навсегда ставит под угрозу соответствующую систему кодирования. Другая проблема заключается в том, что риск раскрытия напрямую зависит от количества пользователей, владеющих секретом. В криптографии девятнадцатого века использовались простые таблицы, которые обеспечивали транспозицию буквенно-цифровых символов, как правило, с учетом пересечений строк и столбцов, которые могли быть изменены с помощью ключей, которые обычно были короткими, числовыми и могли быть зафиксированы в человеческой памяти. Секретные сообщения могут быть скомпрометированы только, если соответствующий набор таблицы, ключа и сообщения попадет в руки противника. Системы не подвергаются риску, потому что их компоненты, то есть буквенно-цифровые таблицы символов и ключи, могут быть легко изменены[3].
Объяснение принципа
Суть принципа
Сущность принципа заключается в том, что мощь криптосистемы не должна основываться на незнании взломщика принципов работы алгоритма[4]. Действительно, Брюс Шнайер полагает, что принцип Керкгоффса применим не только к кодам и шифрам, но и для систем безопасности в целом: каждый секрет создает потенциальную точку отказа. Другими словами, секретность является основной причиной хрупкости, и поэтому она может привести к катастрофическому краху системы. И наоборот, открытость обеспечивает гибкость системы. Принцип Керкгоффса направлен на то, чтобы сделать безопасность алгоритмов и протоколов независимой от их секретности; открытость не должна влиять на безопасность.[5]
Преимущества
Использование безопасной криптографии заменяет сложную проблему обеспечения безопасности сообщений гораздо более управляемой: хранением относительно небольших ключей в безопасности. Хранить используемые методы в секрете сложнее, особенно в долгосрочной перспективе, как и изменять их после развертывания системы[6].
Существует множество способов обнаружения внутренних деталей широко используемой системы. Наиболее мощным и эффективным способом вскрытия является бандитский криптоанализ. Криптоаналитик угрожает, шантажирует или пытает кого-нибудь, пока не получит ключ; может прибегать к вымогательству и взятничеству. Также существует возможность, что кто-то сможет дезассемблировать исходный код и восстановить алгоритм[4].
В свою очередь раскрытие ключей влечет за собой более простой и менее затратный процесс генерации и распространения новых ключей. То есть безопасность должна зависеть только от секретности ключа, а не от секретности используемых методов[7].
Применение
Большинство широко используемых в гражданской криптографии систем шифрования, в соответствии с принципом Керкгоффса, использует известные, не составляющие секрета криптографические алгоритмы. Но Агентство национальной безопасности хранит свои алгоритмы в секрете, и у них работают лучшие криптографы мира. И к тому же они обсуждают алгоритмы друг с другом, полагаясь на знание и компетенцию коллег. Соответственно, у них нет необходимости открывать алгоритмы для всех[4].
Безопасность через неясность
Безопасность через неясность — антагонист принципа Керкгоффса, заключающийся в том, что необходимо скрывать внутреннее устройство системы для обеспечения её безопасности. В некоторых компаниях принято хранить в тайне внутреннюю работу системы. Они утверждают, что безопасность через неясность делает продукт более безопасным и менее уязвимым для атак. Противоположным аргументом является то, что безопасность через неясность может привести ко многим реальным атакам. Разработчики не должны недооценивать хитрость злоумышленников и никогда не должны использовать данный принцип[8].
Сокрытие уязвимостей в алгоритмах снижает вероятность их исправления и увеличивает вероятность того, что они могут и будут использоваться злоумышленниками. Открытое обсуждение и анализ алгоритмов выявляют слабые стороны, о которых не думали первоначальные авторы, и тем самым приводят к созданию более совершенных и более безопасных алгоритмов.[9]
Максима Шеннона
Американский математик Клод Шеннон в статье «Теория связи в секретных системах», опубликованной в журнале Bell System Technical Journal[англ.] в 1949 году, сформулировал этот принцип (вероятно, независимо от Керкгоффса) следующим образом: «Враг знает систему»[10]. В такой формулировке этот принцип называется максима Шеннона. Другими словами, нужно проектировать системы, исходя из предположения, что противник с ними полностью ознакомится.[11]
Примечания
- ↑ La cryptographie militaire, 1883.
- ↑ Fabien Petitcolas (1997), English translation of "La cryptographie militaire"
- ↑ The Codebreakers: the story of secret writing, 1967, pp. 122—125.
- ↑ 1 2 3 Прикладная криптография, 1995, pp. 21.
- ↑ Mann, Charles C. (September 2002), "Homeland Insecurity", The Atlantic Monthly, Архивировано из оригинала 7 июля 2008, Дата обращения: 16 декабря 2018.
- ↑ The Ideal Cipher, 1998, 1999.
- ↑ Large-scale Distributed Computing and Applications: Models and Trends, 2010, pp. 204.
- ↑ Principles of Secure Processor Architecture Design, 2018, pp. 7.
- ↑ Security Through Obscurity Considered Dangerous, 2002, pp. 1.
- ↑ Communication Theory of Secrecy Systems, 1949, pp. 662.
- ↑ Decrypted Secrets: Methods and Maxims of Cryptology, 2007, pp. 29.
Литература
- Shannon C. E. Communication Theory of Secrecy Systems (англ.). — Bell System Technical Journal, 1949. — October. — P. 656 - 715. — ISSN 0005-8580.
- Friedrich L. Bauer. Decrypted Secrets: Methods and Maxims of Cryptology (англ.). — 4th, Revised & Extended Edition. — Springer, 2007. — 504 p. — ISBN 9783662047378.
- Steven Bellovin, Randy Bush. Security Through Obscurity Considered Dangerous. — Internet Engineering Task Force (IETF), 2002. — 28 августа.
- Брюс Шнайер. Прикладная криптография. Протоколы, алгоритмы и исходные тексты на языке С (неопр.). — 2-е издание. — Триумф, 1995. — ISBN 5-89392-055-4. Архивная копия от 18 декабря 2018 на Wayback Machine
- David Kahn. The Codebreakers: the story of secret writing. — 1st edition. — The Macmillan Company, 1967. — ISBN 0684831309.
- Auguste Kerckhoffs. La cryptographie militaire. — Journal des sciences militaires, 1883.
- Ron Ross, Richard Graubart, Deborah Bodeau, Rosalie McQuaid. Systems Security Engineering: Cyber Resiliency Considerations for the Engineering of Trustworthy Secure Systems. — 2018.
- Jakub Szefer. Principles of Secure Processor Architecture Design (англ.). — Morgan & Claypool, 2018. — 173 p. — (Synthesis Lectures on Computer Architecture). — ISBN 9781681730011.
- Corina Stratan, Valentin Cristea, Ciprian Dobre. Large-scale Distributed Computing and Applications: Models and Trends. — First edition. — Information Science Reference, 2010. — ISBN 9781615207039.
- Savard, John J. G. A Cryptographic Compendium. The Ideal Cipher. — 1998, 1999.