STAGE 2
1) 고전 암호
고전 암호
- 비교적 간단하게 암호화, 복호화를 수행하던 암호
- 대부분 컴퓨터를 사용하면 쉽게 복호화 가능 → 현대에는 사용되지 않음
- 치환 (Substitution), 전치 (Transposition)의 방법으로 설계
- 단순한 고전 암호는 치환 암호 또는 전치 암호 중 하나만 사용
- 복잡한 고전 암호는 두 원리를 모두 사용
치환 (Substitution)
- 평문의 문자를 다른 문자로 바꾸는 것
전치 (Transposition)
- 평문 문자들의 위치를 바꾸는 것
치환 암호
- 단일 문자 치환 암호 (Monoalphabetic Substitution)
- 다중 문자 치환 암호 (Polyalphabetic Substitution)
단일 문자 치환 암호
- 평문의 각 문자를 약속된 다른 문자로 치환하는 암호
- 복호화를 위해 치환의 대응 관계는 일대일 대응
카이사르 암호
- 단일 문자 치환 암호의 대표적인 예
- 평문의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 치환
- 복호화할 때는 암호문의 각 문자를 다시 원래 위치로 밀어서 평문을 구함
- 알파벳을 밀어낸 횟수만 알면 해독할 수 있음
- 키: 알파벳을 밀어낸 횟수
- 키 공간: 암호학에서 가능한 모든 키의 집합
- 알파벳은 총 26자이므로 가능한 키의 갯수는 26개
- 키 공간의 크기는 26
춤추는 인형과 코드북 암호
- 단일 문자 치환 암호
- 사람 한 명이 글자 하나에 대응
다중 문자 치환 암호
- 평문의 한 문자가 암호문에서 여러 종류의 문자로 치환될 수 있음
비제네르 암호
- 대표적인 다중 문자 치환 암호
- 미리 정해진 키워드를 통해 암호화, 복호화가 이루어짐
- 비제네르 표
- 예시: 'DREAMHACK'이라는 단어를 암호화할 때 'SKY'라는 미리 정해진 키워드를 사용
전치 암호 (Transposition Cipher)
- 평문을 구성하는 문자들의 순서를 재배열하여 암호문 생성
- 평문을 정해진 길이의 블록으로 나눔
- 규칙을 적용하여 블록 안의 문자를 재배치
스키테일 암호 (Scytale Cipher)
- 대표적인 전치 암호
- 나무봉을 이용한 암호
2) 고전 암호 공격
전수 키 탐색 공격 (Exhaustive Key Search Attack)
- 평문과 암호문을 알 때, 키 공간을 전부 탐색하며 주어진 암호문과 같은 암호문을 생성하는 키를 찾는 방법
- 키 공간의 크기가 작다면 빠른 시간안에 키를 찾고, 암호를 해독할 수 있음
- 카이사르 암호는 키 공간이 26 → 전수 키 탐색 공격에 취약
빈도수 공격 (Frequency Analysis)
- 단일 치환 암호는 평문의 문자와 암호문의 문자가 항상 일대일 대응을 이루기 때문에 평문의 통계적 특성이 유지됨
- 추측을 바탕으로 암호문을 복구하는 것
- 암호문이 어떤 언어로 구성되어 있어도 대상 언어의 특성을 안다면 시도해볼 수 있음
- 다중 치환 암호는 이러한 통계적 특성이 사라지기 때문에, 빈도수 공격으로부터 비교적 안전하다고 알려져 있음
QUIZ
Q1. 다중 치환 암호는 단일 치환 암호보다 전사적 공격으로 암호문을 복호화하기 어렵다.
Q2. 빈도수 분석은 단일 치환 암호를 대상으로 유효한 공격 기법이다.
3) 현대 암호
대칭키 암호 시스템 (Symmetric Key Cryptosystem)
- 송신자와 수신자가 같은 키를 공유해야 하는 암호 시스템
- 사전에 서로 키를 공유하는 과정이 반드시 필요
- 네트워크는 도청에 취약 → 키를 평문으로 공유하기에 부적절
- 키 공유 알고리즘 연구
- 블록 암호와 스트림 암호로 구분
키 공유 알고리즘 (Key-Sharing Algorithm)
- 키가 공유되는 과정을 도청해도 공유되는 키는 알지 못함
- 공개키 암호 시스템 개념 창안
공개키 암호 시스템 (Public Key Cryptosystem)
- 송신자와 수신자가 서로 다른 키를 사용
- 비대칭키 암호 시스템 (Asymmetric Cryptography) 이라고도 불림
- 송신자가 수신자의 공개키 (Public Key) 로 데이터를 암호화하여 수신자에게 전송
- 수신자가 자신의 비밀키 (Private Key) 로 복호화
혼돈
- 암호문에서 평문의 특성을 알아내기 힘든 성질
- 단일 치환 암호를 사용하여 같은 평문을 두 번 암호화하면 출력된 두 암호문은 서로 같음
- 단일 치환 암호는 혼돈 성질을 만족하지 못하는 암호
확산
- 평문의 작은 변화가 암호문의 큰 변화로 이어지는 성질
- 대부분의 고전 암호에서는 찾아보기 힘듦
블록 암호 (Block Cipher)
- 평문을 정해진 크기의 블록 단위로 암호화하는 암호
- 평문의 크기가 블록으로 균등하게 쪼갤 수 없다면 평문 뒤에 데이터를 추가하는 패딩(Padding)을 먼저 수행
- DES / AES
스트림 암호 (Stream Cipher)
- 송신자와 수신자가 공유하는 데이터 스트림을 생성하고 이를 평문에 XOR하는 암호
- 평문과 같은 길이의 스트림을 안전하게 공유할 수 있다는 가정
- 스트림 공유 채널에서 평문을 공유하면 되므로 암호화가 필요하지 않은 환경임을 의미
- 일반적으로 송신자와 수신자는 스트림 대신 시드(Seed)라 불리는 작은 값을 공유
- 스트림 암호는 단순한 연산으로만 구현되므로 속도가 매우 빠름
- 블록암호보다는 안전하지 못하다고 알려짐 → 연산 능력이 부족한 임베디드 기기나 속도가 중요한 환경에서만 제한적 사용
대칭키 암호 시스템의 장단점
- 공개키 암호 시스템에 비해 속도가 빠름
- 송신자와 수신자가 사전에 키를 교환해야 한다는 제약
- 그룹마다 여러 명이 있을 경우 사람마다 서로 다른 키를 생성해서 사용해야 함
- 새로운 상대와 통신할 때마다 계속 키 생성 필요
공개키 암호 시스템의 장단점
- 그룹 내의 사람들이 각자의 공개키와 비밀키를 만든 후 공개키만 공개하면 됨 → 사람의 2배수만큼 키 필요
- 한 번 키가 생성되면 새로운 상대와 통신하더라도 키를 다시 만들 필요 없음
- 다소 복잡한 연산이 필요하므로 속도가 느림
- 대칭키 암호와 같은 안전성을 제공하려면, 대칭키 암호보다 긴 키를 사용해야 함
- 대칭키 암호 시스템인 AES는 192 비트 이상의 키를 사용하면 충분히 안전
- 공개키 암호 시스템인 RSA는 2048 비트 이상의 키 사용을 권장
암호의 기능
- 기밀성 (Confidentiality)
- 허락된 사람만이 정보를 열람할 수 있게 하는 기능
- 허락된 사람: 일반적으로 키를 가지고 있는 사람
- 무결성 (Integrity)
- 송신자가 보낸 정보에 변조가 일어나지 않았음을 의미
- 인증 (Authentication)
- 정보를 주고 받는 상대방의 신원을 확인하는 기능
- 공인인증서가 대표적인 예
- 웹에서 아이디와 비밀번호를 입력하는 것도 인증의 영역에 속함
- 부인 방지 (Non-repudiation)
- 정보를 교환한 이후에 교환한 사실을 부인할 수 없게 하는 기능
QUIZ
Q1. 비제네르 암호에서 키워드 SKY로 MINDBLUE를 암호화하면 ESLVLJMO이고 MINTBLUE를 암호화하면 ESLLLJMO이다. 이러한 특성에 비추어 보아, 비제네르 암호는 확산 성질을 만족하지 못한다.
Q2. 다음 설명 중 틀린 것은?
(1) 두 명이 대칭키 암호를 이용해 통신을 하기 위해서는 사전에 키를 교환해야 한다.
(2) 공개키 암호 시스템에서 공개키를 아는 사람은 공개키로부터 비밀키를 알아낼 수 있다.
(3) 공개키 암호 시스템에서 공개키는 암호화를 할 때, 비밀키는 복호화를 할 때 쓰인다.
Q3. 드림이는 내일 오전에 만나 같이 암호학 공부를 하자는 쪽지를 오리에게 직접 받았습니다. 하지만 다음날 늦잠을 잔 오리는 드림이에게 자신이 그런 쪽지를 보낸 적이 없다고 변명했습니다. 오리가 이렇게 거짓말을 할 수 있는 이유는 쪽지에 부인 방지 기능이 없기 때문입니다.
'Dreamhack > Cryptography' 카테고리의 다른 글
[Cryptography] STAGE 6 (0) | 2022.08.19 |
---|---|
[Cryptography] STAGE 5 (0) | 2022.08.11 |
[Cryptography] STAGE 4 (0) | 2022.08.05 |
[Cryptography] STAGE 3 (0) | 2022.08.04 |
[Cryptography] STAGE 1 (0) | 2022.07.25 |