현대 암호는 어떤 원칙으로 만들어지는 것일까요?
현대 암호 설계 원칙의 기반은 바로 Kerckhoffs Principle( 케르크호프스의 원칙 )입니다.
19세기 네덜란드 암호학자인 Kerckhoffs이 주장한 원칙이며
" 암호에서 키를 제외한 모든 정보는 공격자에게 공개된다고 가정하고 설계해야 한다. "입니다.
그런데 여기서 의문이 들 수 있습니다.
"카이사르 암호 같은 고대 암호는 설계(암호화 방식)가 굉장히 단순한데 공개 안 하는 게 더 안전하지 않나요?"
물론 맞는 말입니다. 카이사르 암호라는 정보를 알고 공격하는 경우와 아닌 경우 문제 접근 방법부터 차이가 날 테니까요.
하지만 설계도를 공개하지 않았다고 동작 원리를 파악하지 못하는 것은 아닙니다.
예를 들어, 롤러코스터는 비교적 복잡한 기구입니다. 그러나 이를 타고 있는 동안 어떻게 움직이는지, 어떻게 높이를 오르내리는지, 어떻게 커브를 돌아가는지 등을 직접 경험함으로써 대략적인 동작 원리를 이해할 수 있습니다.
또한 리버싱 엔지니어링( Reverse Engineering )이라는 게 있습니다.
제품의 동작 원리를 이해하기 위해 기존의 제품이나 소프트웨어를 분석하고 역으로 추적하는 과정을 말합니다.
주로 소프트웨어, 하드웨어, 전자 제품 등의 분야에서 활용되며, 이미 존재하는 제품의 동작 원리와 구조를 이해하기 위해 사용됩니다. 이는 경쟁사의 제품 분석이나 호환성 문제 해결에 활용될 수 있습니다.
결국 현대 암호란
암호 구조에 대해 알고 있어도 컴퓨터도 어려워하는(푸는데 시간이 오래 걸리는) 수학적 문제를 기반으로 설계됩니다.
글을 쓰는 기점이 2023년인데, 현재 양자컴퓨터의 상용화에 대비하기 위한 암호들도 있습니다.
물리학의 양자역학을 이용한 양자암호라는 게 있고 수학적으로 설계된 양자내성암호라는 게 있습니다. 나중에 기회가 되면 교양형식으로 뒤에서 다루게 될 것 같습니다.
아래 내용은 이런 게 있습니다 하고 가볍게 읽고 넘어가도 문제없습니다.
다만 영화 이미테이션 게임에서 "C.I.L.L.Y" 라는 내용이 나오는데 영화를 보셨다면 어떤 공격자 능력치를 가지게 된건지 생각해보셔도 좋을 것 같습니다.
약간의 스포일러지만 C.I.L.L.Y라는 반복되는 정보를 통해 주인공이 추리해야할 키공간 크기가 엄청나게 줄어들죠.
현대 암호학에서 공격자 유형을 세 가지로 나눕니다.
- Black-box 공격자
- 공격자는 암호 연산 장치 내부의 정보를 알 수 없고 오로지 입력문과 출력문만 관찰할 수 있습니다.
- Gray-box 공격자
- 공격자는 연산의 일부정보를 관찰 가능하며 여기에 부채널 정보 또한 얻을 수 있습니다. 부채널 정보는 전력 소비량, 소리, 전자기파 등 연산 시 발생하는 부가적인 정보라고 생각하시면 됩니다. 이를 이용해서 공격하는 기법을 부채널 공격이라고 합니다.
- 지난 8월 키보드 타이핑 소리만으로 딥러닝을 이용해 사용자가 어떤 텍스트를 입력했는지 분석할 수 있다는 기사를 본 적이 있는데 여기서 타이핑 소리가 부채널 정보이고 이를 이용한 공격을 부채널 공격이라고 합니다.
- White-box 공격자
- 연산의 모든 과정을 관찰할 수 있는 가장 센 공격자로 빌런계의 셀레스티얼이랄까요??
- 화이트박스 암호라는 것도 있습니다. 아직 사용하기엔 한계가 많은 암호이며 연구를 계속 진행 중입니다.
이뿐만 아니라 공격자의 능력치에 따라서도 분류합니다.
- 암호문 단독 공격(Ciphertext-Only Attack)
- 암호문에 대한 정보만 주어져 있고 이에 대한 평문을 복원하는 공격
- 기지 평문 공격 (Known-Plaintext Attack)
- 동일한 키로 암호화한 평문 암호문 쌍이 주어졌을 때, 동일한 키를 활용하여 만든 암호문에 대한 평문을 복원하는 공격
- 선택 평문 공격(Chosen-Plaintext Attack)
- 공격자가 원하는 평문에 대한 암호문을 얻을 수 있고, 새로운 암호문에 대해 평문을 복원하는 공격
- 선택 암호문 공격 (Chosen-Ciphertext Attack)
- 공격자가 원하는 암호문에 대한 평문을 얻을 수 있고, 새로운 암호문에 대해 평문을 복원하는 공격
'암호학 강의' 카테고리의 다른 글
[암호학] 스트림 암호(Stream cipher)와 블록 암호(Block cipher) (1) | 2023.10.27 |
---|---|
[암호학] 대칭키 암호와 비대칭키(공개키) 암호 (0) | 2023.10.25 |
[암호학] 카이사르 암호와 빈도 분석 (1) | 2023.10.23 |
[암호학] 암호란 무엇인가요? (1) | 2023.10.19 |
[암호학] OT (0) | 2023.10.17 |