케르크호프스의 원리
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
케르크호프스의 원리는 암호 설계의 중요한 원칙으로, 암호 시스템의 안전성은 키의 비밀성에만 의존해야 한다는 것이다. 1883년 오귀스트 케르크호프스가 제시한 여섯 가지 설계 원칙 중 하나로, 암호 방식은 적에게 노출되어도 문제가 없어야 한다는 내용을 담고 있다. 이 원리는 컴퓨터의 등장으로 일부 적용이 달라졌지만, "적은 시스템을 알고 있다"는 클로드 섀넌의 말처럼 현대 암호학에서도 중요하게 여겨진다. 케르크호프스의 원칙은 암호 방식뿐 아니라 전자 서명, 전자 화폐 등 암호 프로토콜과 보안 제품에도 적용되며, 알고리즘 공개를 통해 안전성을 검증하는 것이 중요하게 여겨진다.
더 읽어볼만한 페이지
케르크호프스의 원리 | |
---|---|
개요 | |
유형 | 암호학 원리 |
고안자 | 오귀스트 케르크호프스 |
발표 시기 | 1883년 |
다른 이름 | 케르크호프스의 가정, 케르크호프스의 공리, 커크호프의 원리 |
내용 | |
핵심 내용 | 암호 시스템의 보안성은 키의 비밀성에만 의존해야 한다. 알고리즘 자체는 공개되어도 안전해야 한다. |
중요성 | 암호 시스템 설계의 기본 원칙 중 하나이며, 널리 받아들여지고 있다. |
상세 내용 | |
설명 | 암호 시스템 설계 시 암호 알고리즘의 세부 사항이 알려지더라도 키가 안전하게 보호된다면 시스템은 안전해야 한다는 원칙이다. |
장점 | 알고리즘의 광범위한 검토 및 개선을 가능하게 한다. 알고리즘이 유출되더라도 키만 변경하면 시스템을 계속 사용할 수 있다. 다양한 환경에서 안전성을 유지할 수 있다. |
보안 방법 | 키의 안전성에만 의존해야 한다 |
관련 개념 | |
보안 취약점 | 보안을 통한 난독화 (반대 개념) |
2. 기원
1883년, 오귀스트 케르크호프스는 ''La Cryptographie Militaire''라는 군사 과학 저널에 군사용 암호의 6가지 설계 원칙에 대한 두 개의 글을 발표했다.[16][17][18]
전신의 발명은 군사 통신에 큰 변화를 가져왔고, 보호해야 할 메시지가 급증하면서, 암호책 없이 쉽게 사용할 수 있는 야전 암호 개발로 이어졌다.[3] 이러한 환경이 케르크호프스가 원칙을 개발하는 배경이 되었다.
케르크호프스의 원리는 암호 방식이 스파이에 의해 도난당하거나, 암호 장치가 적에게 포획되어 해석될 수 있다는 경험에 기반한다.
클로드 섀넌은 케르크호프스의 원리를 "'''적은 시스템을 알고 있다'''"라는 간결한 말로 표현했다.[15]
2. 1. 케르크호프스의 6가지 원칙
오귀스트 케르크호프스가 1883년에 발표한 ''La Cryptographie Militaire''라는 군사 과학 저널에는 군사용 암호 설계에 관한 6가지 원칙이 제시되어 있다.[18] 내용은 다음과 같다.[7][8]# 암호 체계는 수학적으로는 해독 불가능하지 않더라도, 실질적으로 그래야 한다.
# 암호 체계는 비밀에 부쳐질 필요가 없어야 하며, 적의 손에 떨어지더라도 문제가 없어야 한다.
# 키는 글로 쓰여지지 않더라도 교환 혹은 보관할 수 있어야 한다. 당사자들의 의지에 의해서 바뀌거나 수정될 수 있어야 한다.
# 전신에 적용할 수 있어야 한다.
# 이동이 가능해야 하며, 암호 체계의 사용과 기능을 위해 여러 사람의 협력을 필요로 하지 않아야 한다.
# 마지막으로, 시스템의 활용을 요구하는 여러 상황들이 주어졌을 때, 암호 체계는 이용이 쉬워야 하며, 정신적인 압박감이나 여러 규칙들의 관찰을 필요로 하지 않아야 한다.
이 원칙들은 현대 암호학에서도 중요하게 여겨지며, 특히 두 번째 원칙은 "케르크호프스의 원리"로 불리며 널리 알려져 있다. 클로드 섀넌은 이를 "'''적은 시스템을 알고 있다'''"라는 말로 요약했다.[15]
3. 원리의 해설
간단히 말해, 암호체계의 안전성은 키의 비밀성에만 의존해야 한다.[19] 정보를 비밀스럽게 코딩하고 전송하는 방법은 설령 그것이 어떻게 동작하는지 모든 사람에게 알려지더라도 안전해야 한다.
케르크호프스는 스테가노그래피 암호화 방식에 대한 대안이자 더 나은 방식으로 암호학을 보았다. 스테가노그래피는 19세기에 군사 메시지의 의미를 숨기는 데 흔히 사용되었는데, 단어의 비밀 의미를 드러내는 "사전"과 같이 사람이 보유하는 비밀에 의존한다는 문제점이 있었다. 이러한 사전은 일단 노출되면 해당 암호화 시스템을 영구적으로 손상시켰다. 또한 비밀을 가진 사용자의 수가 증가함에 따라 노출 위험도 증가했다.
반면, 19세기 암호학은 일반적으로 짧고, 숫자이며, 인간의 기억에 맡길 수 있는 키에 의해 수정될 수 있는, 행-열 교차점을 제공하는 알파벳 문자 전치를 위한 간단한 표를 사용했다. 시스템은 테이블과 키 자체가 의미를 전달하지 않기 때문에 "해독 불가능"하다고 간주되었다. 비밀 메시지는 일치하는 테이블, 키, 메시지 세트가 관련 기간 내에 적의 손에 들어갈 경우에만 손상될 수 있었다. 케르크호프스는 전술 메시지가 몇 시간 정도만 유효하다고 보았다. 시스템 구성 요소(예: 알파벳 문자 표 및 키)는 쉽게 변경할 수 있었기 때문에 시스템이 반드시 손상되는 것은 아니었다.
케르크호프스의 원리는 암호 방식이 비밀로 유지되더라도 스파이에 의해 설계도가 도난당하거나 암호 장치째 적에게 포획되어 언젠가는 적에게 해석될 수 있다는 경험에 기반한다. 1883년에 발표된 논문에서는 군용 암호에 관한 다음 6가지 조건이 제시되었으며[14], 그 중 두 번째 조건이 현재 "케르크호프스의 원리"라고 불린다.
번호 | 내용 |
---|---|
1 | 암호 방식은 현실적으로 (수학적으로가 아니더라도) 역변환 불가능할 것 |
2 | 암호 방식은 비밀일 필요가 없으며, 적의 손에 들어가도 문제가 없을 것 |
3 | 키는 문서를 보지 않고도 전달·기억할 수 있는 것이며, 통신원이 자유롭게 변경할 수 있을 것 |
4 | 전기 통신에 적합할 것 |
5 | 휴대 가능하며, 운반 및 조작에 많은 인원을 필요로 하지 않을 것 |
6 | 마지막으로, 이용되는 상황 (군사 목적)을 고려하여 사용하기 쉽고, 손이 많이 가지 않으며, 다수의 규칙을 지킬 필요도 없을 것 |
이 원리는 현대 암호에서 중요하게 여겨진다. "암호의 안전성"은 암호문에서 암호 방식을 추측하는 어려움이 아니라, 암호 방식이 알려져 있다고 가정했을 때 암호문 (또는 평문)을 입수했을 경우 평문이나 암호 키를 추측하는 어려움을 의미한다. 섀넌은 케르크호프스의 원리를 "'''적은 시스템을 알고 있다'''"("the enemy knows the system")는 간결한 말로 표현했다.[15] 현재는 섀넌의 표현이 더 널리 알려져 있다.
암호의 안전성을 증명하는 것은 어려운 문제이며, 설계자 자신이나 특정 평가 기관만의 평가로는 안전성을 확신할 수 없다. 따라서 알고리즘을 공개하여 누구나 암호의 안전성을 검토할 수 있도록 하는 것이 암호 규격으로서 널리 보급되기 위한 요건으로 여겨지고 있다.
3. 1. 비밀 키의 이점
안전한 암호 체계를 사용하는 것은 메시지를 안전하게 지키는 어려운 문제를, 메시지에 비해 상대적으로 작은 키를 안전하게 유지하는 더 쉬운 문제로 바꾸는 것으로 볼 수 있다. 암호 체계와 같이 크고 복잡한 시스템 전체를 장기적으로 비밀로 유지하는 것은 매우 어렵다. 하지만, 어떤 시스템이 키를 제외한 모든 것이 알려져도 안전하다면, 키를 안전하게 관리하는 문제만 신경 쓰면 된다.[9]널리 사용되는 시스템의 내부적인 세부 사항을 알아내는 데에는 여러 방법이 있다. 가장 확실한 방법은 누군가가 직원이나 고객에게 뇌물을 주거나 협박해서 시스템을 설명하도록 하는 것이다. 예를 들어, 전쟁 중에는 한쪽이 다른 쪽의 장비나 사람을 붙잡을 수 있다. 각 진영은 정보를 모으기 위해 스파이도 활용할 것이다.[9]
어떤 방법이 소프트웨어를 포함한다면, 누군가는 메모리 덤프를 하거나 디버거를 이용해 그 방법을 이해하려고 할 수 있다. 하드웨어가 사용된다면, 하드웨어를 사거나 훔쳐서 그것을 테스트하기 위한 프로그램이나 장비를 만들 수 있다. 하드웨어는 또한 분해될 수도 있고, 회로의 세부 사항을 현미경으로 볼 수도 있다.[9]
3. 2. 보안성의 유지
케르크호프스의 원리에서 일반화된 내용은 다음과 같다. "시스템 보안을 보장하기 위해 유지해야 하는 비밀이 적고 단순할수록 시스템 보안을 유지하기가 더 쉽다." 브루스 슈나이어는 모든 보안 시스템이 가능한 한 우아하게 실패하도록 설계되어야 한다는 믿음과 연관시킨다.[20]Kerckhoffs' principle applies beyond codes and ciphers to security systems in general: every secret creates a potential failure point. Secrecy, in other words, is a prime cause of brittleness—and therefore something likely to make a system prone to catastrophic collapse. Conversely, openness provides ductility.영어
모든 보안 시스템은 몇 가지 비밀을 유지하는 것에 결정적으로 의존한다. 그러나 케르크호프스의 원리는 실수로 공개될 경우 변경하는 데 비용이 가장 적게 드는 것을 비밀로 유지해야 한다고 지적한다.[11]
예를 들어, 어떤 암호화 알고리즘은 사용자 간에 널리 배포되는 하드웨어 및 소프트웨어로 구현될 수 있다. 보안이 해당 알고리즘을 비밀로 유지하는 데 달려 있다면, 공개는 새로운 알고리즘의 구현을 개발, 테스트 및 배포하는 데 주요 물류적 어려움을 초래한다. 즉, "취약"해진다. 반면에 알고리즘을 비밀로 유지하는 것이 중요하지 않고, 알고리즘과 함께 사용되는 ''키''만 비밀로 유지해야 한다면, 키가 공개되어도 새 키를 생성하고 배포하는 더 간단하고 비용이 적게 드는 프로세스를 거치면 된다.[12]
4. 응용
케르크호프스의 원리는 암호 프로토콜 (전자 서명, 전자 화폐, 전자 투표 등) 및 보안 제품 전반에 적용된다.[15] 공격자가 소스 코드나 설계도를 훔쳐 분석하더라도 안전한 보안 제품을 만들어야 한다는 것이다. 오픈 소스 소프트웨어는 소스 코드를 공개하여 유출 시에도 안전성을 검증받을 수 있다는 점을 장점으로 내세운다.
하지만 현실에서는 소스 코드 공개만으로 안전성을 보장하기 어렵거나, 비공개가 더 안전하다고 판단되는 경우가 많다. 따라서 케르크호프스의 원리를 따르기보다 방식의 상세 내용을 공개하지 않는 제품이나 시스템을 제공하는 사례도 흔하다.
4. 1. 현대 암호학
현대 암호학에서 케르크호프스의 원리는 중요하게 여겨진다. "암호의 안전성"은 암호 방식을 숨기는 것이 아니라, 암호 방식이 알려져도 평문이나 암호 키를 알아내기 어렵게 만드는 것을 의미한다.[14] 클로드 섀넌은 이 원리를 "'''적은 시스템을 알고 있다'''"라는 말로 표현했다.[15]암호의 안전성을 증명하는 것은 어렵기 때문에, 알고리즘을 공개하여 누구나 검토할 수 있게 하는 것이 암호가 널리 사용되기 위한 조건으로 여겨진다.
대부분의 민간 암호는 케르크호프스의 원칙에 따라 공개된 알고리즘을 사용한다. 반면, 기밀 정부나 군사 정보를 보호하는 암호는 비밀로 유지되기도 하지만(1형 암호화 참조), 반드시 비밀로 유지해야 하는 것은 아니다. 다층적 보안을 위해 공개 알고리즘만큼 견고하게 설계하고 비밀로 유지하는 결정을 내릴 수 있다.
4. 2. 확장된 적용
브루스 슈나이어는 모든 보안 시스템이 가능한 한 우아하게 실패하도록 설계되어야 한다는 믿음과 연관시키며, 케르크호프스의 원리를 다음과 같이 일반화했다. "시스템 보안을 보장하기 위해 유지해야 하는 비밀이 적고 단순할수록 시스템 보안을 유지하기가 더 쉽습니다."[10]The principle applies beyond codes and ciphers to security systems in general: every secret creates a potential failure point. Secrecy, in other words, is a prime cause of brittleness—and therefore something likely to make a system prone to catastrophic collapse. Conversely, openness provides ductility.|원칙은 코드 및 암호 그 이상, 일반적인 보안 시스템에도 적용됩니다. 모든 비밀은 잠재적인 실패 지점을 만듭니다. 다시 말해, 비밀 유지는 취약성의 주요 원인이며, 따라서 시스템을 파국적인 붕괴에 취약하게 만들 가능성이 높습니다. 반대로 개방성은 연성을 제공합니다.영어
모든 보안 시스템은 몇 가지 비밀을 유지하는 것에 결정적으로 의존한다. 그러나 케르크호프스의 원리는 실수로 공개될 경우 변경하는 데 비용이 가장 적게 드는 것을 비밀로 유지해야 한다고 지적한다.[11]
예를 들어, 암호화 알고리즘은 사용자 간에 널리 배포되는 하드웨어 및 소프트웨어로 구현될 수 있다. 보안이 해당 알고리즘을 비밀로 유지하는 데 달려 있다면, 공개는 새로운 알고리즘의 구현을 개발, 테스트 및 배포하는 데 주요 물류적 어려움을 초래한다. 즉, "취약"해진다. 반면에 알고리즘을 비밀로 유지하는 것이 중요하지 않고, 알고리즘과 함께 사용되는 ''키''만 비밀로 유지해야 한다면, 키가 공개되어도 새 키를 생성하고 배포하는 더 간단하고 비용이 적게 드는 프로세스를 거치면 된다.[12]
샤논의 케르크호프스의 원칙인 "적은 시스템을 알고 있다"는 암호 방식뿐만 아니라, 전자 서명, 전자 화폐, 전자 투표 등의 암호 프로토콜에도 적용할 수 있다. 샤논의 케르크호프스의 원칙은 더 나아가 암호 프로토콜 외의 보안 제품에도 확장할 수 있다.
이 경우 케르크호프스의 원칙은 공격자가 보안 제품의 소스 코드나 설계도 등을 훔쳐 분석하더라도 안전한 보안 제품을 만들어야 한다는 것을 의미한다.
오픈 소스 소프트웨어에서는 더욱 적극적으로 소스 코드를 공개하여 소스 코드 등이 유출되더라도 해당 제품이 정말 안전한지 전 세계 연구자들이 검토할 수 있다는 것을 장점 중 하나로 생각한다.
그러나 실제 제품이나 실제 시스템에서는 소스 코드 등을 모두 공개하면 안전성을 보장하는 것이 원칙적으로 불가능한 경우나, 최소한 공개하지 않는 편이 안전성이 높다고 생각하는 사람이나 법인 등이 2018년 11월 현재까지도 다수 존재하며, 그러한 고객에게 케르크호프스의 원리를 설명하고 받아들이게 하는 대신, 방식의 상세 내용은 미공개인 제품이나 시스템을 제공하는 사례도 많다.
5. 난해함을 통한 보안과의 관계
기업, 때로는 DVD의 콘텐츠 스크램블 시스템(CSS) 암호화와 같은 표준 기구에서 시스템의 내부 작동 방식을 비밀로 유지하는 것은 비교적 흔한 일이다. 일부에서는 이러한 "보안을 통한 난해함"이 제품을 더 안전하고 공격에 덜 취약하게 만든다고 주장한다. 반론은 내부를 비밀로 유지하면 단기적으로 보안이 향상될 수 있지만, 장기적으로는 공개되고 분석된 시스템만 신뢰해야 한다는 것이다.
스티븐 M. 벨빈과 랜디 부시는 다음과 같이 논평했다.[13]
Security through obscurity is considered risky영어 (난해함을 통한 보안은 위험하다고 간주된다)
알고리즘, 소프트웨어 및/또는 하드웨어에서 보안 취약점을 숨기면 수정될 가능성이 줄어들고 악용될 가능성이 높아진다. 약점과 취약점에 대한 논의를 막거나 금지하는 것은 컴퓨터 시스템, 네트워크 및 시민의 보안에 매우 위험하고 해롭다.
Open discussion promotes better security영어 (열린 토론은 더 나은 보안을 장려한다)
암호학과 암호 분석의 오랜 역사는 알고리즘에 대한 열린 토론과 분석을 통해 원래 저자가 생각하지 못했던 약점이 드러나 더 좋고 안전한 알고리즘으로 이어진다는 것을 여러 번 보여주었다. 케르크호프는 1883년 암호 시스템에 대해 Il faut qu'il n'exige pas le secret, et qu'il puisse sans inconvénient tomber entre les mains de l'ennemi.|대략, "시스템은 비밀을 요구하지 않아야 하며, 적의 손에 들어가도 문제가 없어야 한다."프랑스어라고 언급했다.
참조
[1]
논문
Communication Theory of Secrecy Systems
https://archive.org/[...]
1949-10-04
[2]
논문
Security through obscurity
http://catless.ncl.a[...]
2009-06-23
[3]
웹사이트
'[3.0] The Rise Of Field Ciphers'
https://vc.airvector[...]
2024-01-11
[4]
웹사이트
August Kerckhoffs: the father of computer security - History
https://china.exed.h[...]
HEC Paris
2022-11-26
[5]
간행물
Electronic version and English translation of "La cryptographie militaire"
http://petitcolas.ne[...]
2004-06-29
[6]
간행물
The Codebreakers: the story of secret writing
Scribners
[7]
논문
La cryptographie militaire
https://www.petitcol[...]
1883-01
[8]
논문
La cryptographie militaire
https://www.petitcol[...]
1883-02
[9]
서적
Cryptography: Fundamentals and Applications
1993
[10]
간행물
Homeland Insecurity
https://www.theatlan[...]
2002-09
[11]
웹사이트
A Cryptographic Compendium: The Ideal Cipher
http://www.quadibloc[...]
2003
[12]
웹사이트
A Modern Interpretation of Kerckhoff
https://www.rambus.c[...]
2020-09-21
[13]
간행물
Security Through Obscurity Considered Dangerous
https://www.cs.colum[...]
Internet Engineering Task Force
2002-02
[14]
웹사이트
Journal des sciences militaires
http://www.petitcola[...]
Fabien Petitcolas
1883-02
[15]
논문
Communication Theory of Secrecy Systems
https://archive.org/[...]
1949-10-04
[16]
서적
https://archive.org/[...]
[17]
웹인용
http://petitcolas.ne[...]
[18]
문서
Auguste Kerckhoffs, La cryptographie militaire
http://www.petitcola[...]
1883-01
[19]
인용
Cryptography: Fundamentals and Applications, course notes
[20]
인용
Homeland Insecurity
http://www.theatlant[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com