고전 암호
고전 암호 : 컴퓨터 발명 이전 간단한 기계와 손 등으로 암복호화를 수행하던 암호.
치환(Substitution) : 평문의 문자를 다른 문자로 바꾸는 것.
전치(Transposition) : 평문 문자들의 위치를 바꾸는 것.
단순 : 치환 암호 / 전치 암호
복잡 : 치환 + 전치
치환 암호 = 단일 문자 치환 암호, 다중 문자 치환 암호
단일 문자 치환 암호(Monoalpahabetic Substitution Cipher)
평문의 각 문자를 약속된 다른 문자로 치환하는 암호.
'A'가 'B'로 치환된다면 다른 문자들은 'B'로 치환 불가능.
카이사르 암호(Caesar Cipher) : 평문의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 치환.
복호화 : 다시 원래 위치로 문자 밀기.
몇 칸 밀 것인지 송수신자간 사전 합의 필요.
키 : 알파벳을 밀어낸 횟수. -> 가능한 키의 갯수는 26개.(알파벳이 26자임)
키 공간(Key Space) : 가능한 모든 키의 집합
- 카이사르 암호에서 키 공간의 크기 = 26
A부터 Z를 0부터 25까지 대응시키면, n글자씩 밀어내는 카이사르 암호를 합동식으로 표현할 수 있다.
춤추는 인형 암호
사람 한 명이 글자 하나에 대응됨.
모든 알파벳을 서로 다른 기호와 무작위로 일대일 대응시켜 치환하면 키 공간의 크기가 26!이 된다. 이런 크기의 키 공간은 현대 컴퓨터로도 전부 탐색하기 어렵다.
단점
-언어가 지닌 통계적 특성이 유지된다.
ex) 영어 문장에서 가장 많이 사용되는 문자는 'e'이므로 암호문에서 'b'가 가장 많이 등장한다면 b는 e가 치환된 것이라 추측할 수 있다.
난수표/코드북
책을 정하고 책의 페이지 x와 단어의 인덱스 y를 보내면 수신자는 책 x페이지의 y번째 단어를 확인하여 송신자의 메시지를 해독한다. -> 공작원에게 지령을 전달하는 목적으로도 사용됨.
암호 : 21537, 21529. 21406, 21402
해독 : 215페이지 37, 29번째 단어./ 214페이지 6번째 2번째 단어.
메시지 = come to yellow roads
다중 문자 치환 암호 (Polyalphabetic Substitution Cipher)
평문의 한 문자가 암호문에서 여러 종류의 문자로 치환될 수 있다.
비제네르 암호(Vigenere Cipher)
미리 정해진 키워드를 통해 암복호화가 이루어진다.
- 'SKY'라는 키워드로 'DREAMHACK'을 비제네르 암호화하는 과정.
1. 비제네르 표에서 키의 각 문자인 'S', 'K', 'Y' 행을 고른다.
2. 키워드를 반복하며 키워드의 각 행에서 평문의 문자에 대응되는 문자로 평문을 치환한다.
S는 D와 만나면 V 이런식으로.
비제네르 암호 합동식
C = 암호문
M = 평문
K = 키워드
Xi = X의 i번째 요소를 나타냄.
전치 암호
평문을 구성하는 문자들의 순서를 재배열하여 암호문을 만든다.
평문을 정해진 길이의 블록들로 나누고, 규칙을 적용하여 블록 안의 문자들을 재배치.
스키테일 암호(Scytale Cipher)
나무봉을 이용한 암호.
송신자는 종이 테이프를 나무봉에 감고, 세로로 메시지를 기입하여 암호문을 만든다. 종이 테이프를 풀어내면 순서가 뒤섞여 메시지를 읽을 수 없지만, 같은 나무봉을 가진 수신자는 테이프를 다시 나무봉에 감아서 이를 해석할 수 있다.
고전 암호 공격
키 탐색 공격(Exhaustive Key Search Attack)
평문과 암호문을 알 때, 키 공간을 전부 탐색하며 주어진 암호문과 같은 암호문을 생성하는 키를 찾는 방법.
- 굉장히 단순함.
- 키 공간의 크기가 작을 수록 빠름.
-> 카이사르 암호 취약함.
빈도수 분석(Frequency Analysis)
평문의 통계적 특성이 유지되는 단일 치환 암호.
알파벳의 'e'
암호문이 어떤 언어로 구성되어 있어도 대상 언어의 특성을 아는 경우 시도해 볼 수 있다.
다중 치환 암호는 통게적 특성이 사라지므로 빈도수 공격으로부터 비교적 안전하다.
현대 암호
고전 암호 : 대칭키 암호 시스템(Symmetric Key Cryptosysytem)
송신자 키 = 수신자 키
ex) 알파벳 미는 칸 수(카이사르), 키워드(비제네르)
- 사전 키 공유 필수 <- 네트워크 도청 문제.
키 공유 알고리즘(Key-Sharing Algorithm)
키 공유 과정을 도청해도, 공유되는 키는 알지 못함.
공개키 암호 시스템(Public Key Cryptosystem) = 비대칭키 암호 시스템(Asymmetric Cryptography)
송신자와 수신자의 키가 다른 시스템.
Claude Shannon - 안전한 암호 시스템은 혼돈(Confusion)과 확산(Diffusion)의 성질을 만족해야 한다.
혼돈
암호문에서 평문의 특성을 알아내기 힘든 성질.
단일 치환 암호로 평문을 두 번 암호화 -> 두 암호문은 서로 같다. -> 암호문을 생성한 평문이 같다고 추측 가능.
단일 치환 암호는 혼돈 성질을 만족하지 못한다.
확산
평문의 작은 변화 -> 암호문의 큰 변화
- 대부분의 고전 암호에선 찾아보기 힘든 성질.
대칭키 암호 시스템
암호화와 복호화에 같은 키를 사용한다.
블록 암호(Block Cipher)
평문을 정해진 크기의 블록 단위로 암호화.
패딩(Padding) : 평문 크기가 블록의 배수가 아니어서 균등하게 쪼개지지 않는 경우 평문뒤에 데이터를 추가하는 것.
평문이 블록 크기의 배수가 될 때까지 데이터를 추가한다.
대표적인 블록 암호 : DES, AES
스트림 암호(Stream Cipher)
송신자와 수신자가 공유하는 데이터 스트림 생성하고 이를 평문에 XOR하는 암호.
C=P⊕X
평문 : P, 암호문 : C, 스트림 : X
이므로 수신자는 로 암호문을 복호화할 수 있다.
C=P⊕X 이므로 P⊕X⊕X가 됨.
X⊕X=0 이므로 P⊕0이 되고, 0과 xor하면 P임.
스트림을 모르는 공격자는 암호문을 복호화할 수 없다.
but
평문과 같은 길이의 스트림을 안전하게 공유할 수 있다면, 스트림을 공유하는 채널로 평문을 공유하면 된다 -> 암호화가 필요하지 않은 환경.
시드(Seed)
스트림 대신 공유. 사전에 합의된 함수의 인자로 넣어 스트림을 각자 생성함.
- 단순한 연산 -> 속도가 매우 빠름.
- 블록암호보다는 안전하지 않음 -> 임베디드 기기(연산 능력 부족)나 속도가 중요한 환경에서만 제한적 사용.
대칭키 암호 시스템의 장단점
장점
- 공개키 암호 시스템의 비해 속도가 빠르다.
단점
- 송신자와 수신자가 사전에 키를 교환해야 한다.
- 그룹 내에 여러 명이 있는 경우 두 사람마다 서로 다른 키를 생성해서 사용해야한다.
N명의 사람, 총 N(N-1)/2개의 키 필요.
새로운 상대와 통신할 때마다 키 생성.
공개키 시스템에는 키 생성의 불편함이 없다.
공개키 암호 시스템
송신자 : 수신자의 공개키(Public Key)로 데이터 암호화 및 전송
수신자 : 비밀키(Private Key)로 복호화
공개키는 모두에게 오픈돼있으나 비밀키는 수신자 본인만 갖고 있기 때문에 비밀키가 없으면 암호문을 도청해도 복호화를 할 수 없다.
우체통 비유
누구나 수신자에게 편지를 보낼 수 있지만, 편지를 꺼내서 보려면 수신자가 갖고있는 우체통 열쇠가 필요하다.
공개키 암호 시스템의 장단점
장점
- 대칭키 암호 시스템보다 키 개수 적음.
그룹 구성원들이 각자 공개키와 비밀키를 만든 후 공개키만 공개하면 됨. -> 키 2N개 필요.
- 새로운 상대와 통신할 때 새로 키 생성 필요 없음.
단점
- 다소 복잡한 연산이 필요하므로 속도가 느림.
- 대칭키 암호보다 긴 키를 사용해야 그와 같은 안전성 제공 가능.
AES - 192비트 이상 키 충분히 안전함.
RSA - 2048 비트 이상 키 권장
암호의 기능
1. 기밀성(Confidentiality)
허락된 사람만이 정보를 열람할 수 있게 하는 기능. 일반적으로 키를 갖고 있는 사람.
2. 무결성(Integrity)
송신자가 보낸 정보에 변조가 일어나지 않았음을 의미.
누군가 보내진 데이터를 가로채어 조작할 수 있고, 네트워크 상 문제로 일부 변경될 수도 있다.
무결성은 이러한 데이터의 변화가 발생하지 않았음을 보증하는 기능이다.
3. 인증(Authentication)
정보를 주고 받는 상대방의 신원을 확인하는 기능.
4. 부인 방지(Non-repudiation)
정보를 교환한 이후에 교환한 사실을 부인할 수 없게 하는 기능.
온라인 거래를 가능하게 한다.
'Dreamhack' 카테고리의 다른 글
암호학 Stage 4 (0) | 2022.08.05 |
---|---|
암호학 Stage 3 (0) | 2022.08.04 |
암호학 Stage 1 (0) | 2022.07.30 |
웹 해킹 : XSS-2 (0) | 2022.07.25 |
웹 해킹 ClientSide: XSS (0) | 2022.07.25 |