1. Enigma란?
Enigma는 독일의 Arthur Scherbius에 의해 고안된 암호화와 복호화를 수행하는 기계
Enigma는 고대 그리스어로 ‘수수께끼’를 뜻하는 아이니그마라는 말에서 따온 것
Enigma는 키보드, 램프, 플러그보드, 로터, 등으로 조합한 기계로 암호화와 복호화를 수행
송신자와 수신자는 enigma를 각각 1대씩
송신자는 enigma를 이용해 평문(메시지)을 암호화하고 완성된 암호문을 무선으로 수신자에게 보냄
수신자는 받은 암호문을 자신의 enigma로 복호화 해서 평문(메시지)을 얻음
2. Enigma의 암호통신 및 구성요소
송신자와 수신자는 같은 키를 사용해야 하므로 codebook이라고 하는 두꺼운 책자를 공유
codebook- 송신자와 수신자가 사용하는 날짜별 키(KEK) 기록
※ KEK(Key Encrypting Key)
날짜별 키.
통신키의 암호화에 이용( 키를 암호하기 위한 키)
날짜에 해당하는 기어 종류, 기어 설정, 플러그 연결,등 기록되어 있음
(2) 키보드
Enigma의 키보드의 키를 누르게 되면 전기신호가 복잡한 회로를 거쳐 램프에 불이 들어오게 되는데, 이때 입력한 값과 출력한 값(램프에 들어오는 값)은 다름
(3) 플러그보드
플러그보드는 연결선을 바꿈으로써 문자의 대응을 다양하게 변화시키기 위한 부품
Codebook에 따른 날짜 별 키로 플러그보드의 연결선이 정해지며 설정한 뒤에는 하루동안 변경X
(4) 로터
로터는 앞과 뒤의 단자가 전선으로 연결되어 있는 원반 모양의 부품
회로의 중간에 3개 있음
로터 하나하나의 연결선은 변경할 수 없고 문자를 입력할 때마다 자동으로 회전
각 로터의 주변에는 표시 문자가 적혀 있고, 문자에 대응하는 설치 각도를 설정 가능
키보드의 글자를 하나씩 입력할 때마다 첫번째 로터가 하나씩 도는데 첫번째 로터가 한바퀴를 다 회전하면 두번째 로터가 하나 회전하고, 두번째 로터가 한바퀴 다 회전하면 세번째 로터가 하나 회전
3. Enigma의 암호화 과정 (1)~(5)
(1) Enigma의 설정
송신자는 codebook에 있는 해당 날의 날짜별 키를 찾아내고 그 키에 맞춰 enigma를 설정한다. 즉, 플러그보드의 연결선을 연결하고, codebook에 지정된 로터 3개를 선택한 뒤에 이를 enigma 기계에 끼워넣고 설정된 각도로 설정한다.
(2) 통신키 암호화 및 메모
송신자는 통신키 즉, 알파벳 3문자를 정하여 암호화
통신키도 enigma를 이용해서 암호화해야 함 -> 통신키를 2번 연속해서 입력하여 암호화
ex) “uat”가 통신키라면 “uatuat”를 입력
1개의 문자를 칠 때마다 로터가 조금씩 회전하며 그 문자에 대응하는 문자 램프에 불이 들어오는 데 송신자는 불이 들어온 램프에 대응하는 문자를 메모
(3) Enigma의 재설정
송신자는 통신키에 따라 enigma를 재설정
(통신자의 알파벳 3문자 == 3개의 로터 설치 각도)
통신키 “uat”는 첫번째 로터를 u의 각도, 두번째 로터를 a의 각도, 세번째 로터를 t의 각도로 설정한다는 것을 의미
(4) 평문(메시지) 암호화
송신자는 평문을 1문자씩 키보드에 입력하고, 램프에 불이 들어오는 문자를 메모
(5) 결합
송신자는 암호화된 통신키와 암호화된 메시지를 결합하여 무선으로 송신
4. Enigma의 복호화 과정 (1)~(5)
(1) 분리
수신자는 수신한 통신문을 앞부분 6자(통신키)와 나머지 문자로 분리
수신자는 codebook을 참조해서 해당 날의 날짜별 키를 조사하여, 그 날짜별 키대로 enigma를 설정
(수신자의 설정과 동일)
수신자는 통신키 6자를 복호화
Enigma 키보드로 6자를 쳐서 불이 켜지는 각각의 문자를 메모
알파벳 3문자의 패턴이 2회 반복되면, 통신 오류가 발생하지 않았음을 알 수 있음
수신자는 구한 통신키를 이용하여 enigma를 재설정
수신자는 통신키 6자를 제외한 통신문의 나머지 문자들을 1 문자씩 키보드에 입력하고 램프에 불이 들어오는 문자를 메모
'Computer Science > Cryptography' 카테고리의 다른 글
[Cryptography] 윈도우 openssl 실행방법 (+ 윈도우 bit 확인 방법) (0) | 2020.12.18 |
---|---|
[Crytography] DES란? (0) | 2020.11.13 |
[Cryptography] Caesar cipher (0) | 2020.10.15 |
[Cryptography] 대칭암호와 비대칭 암호(Symmetric Cryptography and Asymmetric Cryptography) (0) | 2020.10.15 |
[Cryptography] Cryptography 기본 (0) | 2020.10.12 |