Caesar Cipher (Shift Cipher)
- 기원전 100년경의 로마장군이었던 Julius Ceasar가 사용하였다는 암호
- 26개의 알파벳에 대해 일정한 개수씩 밀어서 변환하는 방법
- 키의 값이 K일 때 암호화는 해당 알파벳의 K개 뒤에 있는 알파벳으로 바꿈
- 복호화는 해당 알파벳의 K개 앞에 있는 알파벳으로 바꿈
- 깨기 쉬움, Cipher Text Attack으로 깨기 쉬움
- 단일 치환 암호의 특수한 경우
- 가능한 K의 수가 적기 때문에 Brute force attack (전사 공격, 무작위 공격)에 취약
- 모든 키 중에서 바른 키를 찾는 방법 : Brute force attack, Exhaustive search, Round Robin
Substitution Cipher
- 단일 치환 암호
- 평문을 구성하는 알파벳을 다른 알파벳으로 변환하는 암호
- 그냥 서로 자리 바꾸기
- A → X 로 암호화 했다면, X → A 로 복호화하기 : 모든 알파벳들에 대한 대응 표가 key가 됨
- 암호문만 주어졌을 때, 평문을 알아내기 비교적 어려움
- 치환 방법의 수 : 26! ≈ 4 x 10^26 으로 안전
- known plaintext attack에 취약, chosen plaintext attack을 이요하면 더욱 쉽게 암호문을 해독할 수 있음
- known plaintext attack : 표를 만들어 칸을 채워나가며 다른 암호문을 비교적 쉽게 해독 가능
- chosen plaintext attack : 공격자가 평문 ABCED~WXYZ를 선택한 후 이에 대한 암호문을 얻어내면 복호화 표 전체를 쉽게 만들 수 있음
- ciphertext only attack으로도 어렵긴 하나 암호문 해독 가능, 특히 문장이 길수록 해독할 가능성 ↑
- 알파벳이나 알파벳 쌍의 등장 빈도 측정
- 많이 등장하는 단어 조사
- 위의 프로세스를 모두 복호화될 때까지 반복
- 일반적으로 영어에서 많이 쓰이는 알파벳/단어들이 있으므로 유추 가능
Vigenère Cipher
- 입력 문장을 일정한 개수의 알파벳으로 이루어진 블록으로 나눈 뒤, 각 블록별로 각 알파벳에 정수들을 더해 암호화하는 방법
- Ex. 만일 암호 key가 5, 2, 6, 10, 3, 4, 9, 1 이라면 다음과 같이 암/복호화가 일어난다.
- Known PlainText Attack으로 풀면 너무 쉬움
- Cipher Text Attack only으로 풀면 여러 번 반복 필요
- Brute force attack 수행 시
- 만일 공격자가 키의 길이(m)를 알면 최대 26^m번 반복해야 하고
- 각각의 자리에서 26가지 경우의 수가 있기 때문에
- 키의 길이를 모르면 최대 무한번 (26 + 26^2 + 26^3 + ...) 반복해야 키를 알 수 있음
- 키의 길이가 1일 때, 2일 때, 3일 때 ... 다 해봐야 하기 때문에
- 만일 공격자가 키의 길이(m)를 알면 최대 26^m번 반복해야 하고
- Subtitution Cipher을 깰 때 주로 사용하는 빈도 분석을 이용해서는 암호 해독하는 것이 불가능
- 같은 규칙으로 바뀌는게 아니기 때문에
- 역시 문장이 길면 다른 방식으로 키를 알아낼 수 있음 (빈도 분석도 가능..)
Permutation Cipher
- 입력 문장을 일정한 개수의 알파벳으로 이루어진 블록으로 나눈 뒤, 각 블록별로 같은 규칙으로 순서를 뒤바꾸는 방법 (재배열)
- Ex. 만일 블록의 크기가 5이고 ABCDE가 CEABD 순서로 바뀐다고 하면 다음과 같이 암/복호화가 일어남
- 블록의 크기가 커질수록 암호를 해독하는데 걸리는 시간 증가
- Knwon Plain Text Attack은 깨기 쉽고 Cipher Text Only Attck으로도 깰 수 있음
- 요즘 주로 쓰이는 대칭 암호 기술은 substitution cipher와 permutation cipher을 기반으로 만들어짐
Enigma
- 근대 이후로
- 전자 회로 나오기 전, 기계식 컴퓨터 O, 전자식 컴퓨터 X
- 독일이 Authur Scherbius가 발명한 암/복호화를 수행하는 기기
- 2차대전 때 군사 목적으로 사용되었지만 폴란드/영국/프랑스에 의해 해독 전략이 개발되었던 암호화 기계
- 회전하는 원반과 전기회로를 써서 강력한 암호를 만들고자 시도
- 암/복호화를 위해 사용되었던 물건들
- 에니그마 기계
- 코드북 (몰래 줌, 날짜별로 사용할 키가 수록, 키의 다양성 O, 보안위험 ↓)
- 기계식 vs 전자식
- 기계식 : 톱니바퀴로 연산
- 전자식 : 반도체로 연산
- 동작 순서
- 송신자 : 평문을 ENIGMA를 이용해 암호화하여 암호문으로 만듦
- ENIGMA : 코드북의 날짜별 지침에 따라 설정, 알파벳 3글자, shift cipher로 암호화
- 수신자 : 암호문을 무선통신으로 받고 ENIGMA로 복호화하여 평문으로 만듦
- 송신자 : 평문을 ENIGMA를 이용해 암호화하여 암호문으로 만듦
- 동작 원리
- 사용자가 키를 임의로 정하고
- 그 키를 이용해서 메세지를 암호화
- 매일 키를 새로 정해서 ( from 코드북)
- = Key Encryption Key = KEK = 키를 암호화 하는 키
- 오류 방지를 위해 사용자가 정한 키를 두 번 연달아서 붙인 뒤에 KEK로 암호화
- 이 키로 사용자가 정했던 키를 암호화
- 코드북을 송신자와 수신자가 모두 가지고 있어야 통신 가능
- 보안성 - 약점
- 메세지를 암호화는데 쓰는 키를 2번 반복
- KEK는 하루동안 동일하게 사용
- 메세지를 암호화 하는 데에 쓰는 키는 사람이 선택 (어쩔 수 없이 비슷하게 나올 수 밖에)
- 코드북 반드시 공유 필요
- 알고리즘 자체를 숨겼기 때문에 보안성을 검증 받을 수 없음 (Security by Obscurity, 숨기는 것에 의한 보안)
- 로터가 3개뿐이므로 메세지를 암호화하는 방법은 총 26^3 = 17576 가지
- 폴란드의 암호해독자 르예프스키가 Enigma를 6대 만들어서 암호를 2시간만에 해독 성공하게 함
- 위의 약점들로 인해 영국과 프랑스에 으해 Enigma를 해독할 수 있는 기계 개발
암호 알고리즘과 키
- 암호 알고리즘과 키는 분리해서 생각해야 함
- 메세지를 암호화 할 때마다 알고리즘을 바꾸는 것은 매우 비효율적인 일
- 암호 알고리즘은 반복해서 사용 + 메세지를 암호화할 때 쓰는 키는 매번 변경 → 효율서오가 안전성 모두 만족시킴
- 알고리즘을 비밀로 하여 안전하게 하는 것이 아니라 키를 비밀로 하여 안전하게 하도록 해야 함
- 요즘은 대칭키&공개키 알고리즘을 대부분 사용
'Computer Science > Network Security' 카테고리의 다른 글
[CS][알기 쉬운 정보보호개론 3판] Chapter05. 블록 암호 모드 (1) | 2023.10.17 |
---|---|
[CS][알기 쉬운 정보보호개론 3판] Chapter04. 대칭 암호 (0) | 2023.10.16 |
[CS][네트워크보안] Chapter2. 암호의 세계 (0) | 2023.10.13 |
[CS][네트워크보안] Chapter1. 스마트 시대와 정보 보호 (1) | 2023.10.09 |
[CS][네트워크보안] "네트워크보안" 수강을 시작하며 (0) | 2023.10.08 |