암호화 알고리즘의 큰 틀을 잡는다면 다음 종류로 나눌 수 있다
- Symmetric Key
- Asymmetric Key
- Cryptographic Hash function
여기서 Symmetric Key에 대해 알아보자.
1. Symmetric Encryption
만족하는 보안 속성 : confidential (기밀성)
- conventional / private-key / single-key 라고도 불림.
- 송수신자가 같은 키를 공유함.
- 종류
- Block cipher : 메시지를 블록 단위로 쪼개서 암/복호화
- DES, AES, ECB, CBC
- Streaming cipher : 메시지를 스트림으로 받아서 암/복호화
- RC4, One time pad
- Block cipher : 메시지를 블록 단위로 쪼개서 암/복호화
2. Classical Substitution Ciphers
예전에는 plaintext 글자들을 다른 글자로 변경하여 암호화했다.
그 예시로 Caesar Cipher가 있음.
알파벳을 3번째 뒤에 있는 알파벳으로 변경하는 것!
ex> meet me after the toga party => phhw ph diwhu wkh wrjd sduwb
하지만 알파벳 수가 26개로 제한이 있기 대문에 Brute force search 방식으로 금방 뚫림.
또한 통계적으로 E라는 알파벳이 제일 많이 쓰이기 때문에 for문을 다 돌려볼 필요가 없음
3. One time pad
작동 방식
1. Alice와 Bob에게 100bit의 Message를 보내려고 할 때, 메시지와 크기가 같은 100bit짜리 random key (One-time pad)를 공유한다.
2. Alice는 Message와 Key를 XOR 연산을 하여 Bob에게 전송한다. (암호화)
3. Bob은 해당 텍스트를 받아서 Key와 XOR 연산을 진행한다 (복호화)
-> A XOR B XOR B = A 법칙.
단점
One-time pad는 Message 길이에 제약을 받는다.
4. DES (Data Encryption Standard)
64bit의 데이터를 56bit의 key를 사용하여 암호화하는 알고리즘이다.
작동 방식
1. 순열의 왼쪽 절반과 오른쪽 절반을 교환한다.
2. 다음 라운드 순열의 오른쪽 절반에 Round Key(48-bit)를 사용한 Mangler function을 적용한다.
3. 이를 16 라운드동안 반복한다.
단점
56bit의 작은 key로는 보안이 뚫리기 쉽다.
5. Electronic Code Book (ECB)
Block들을 다 독립적으로 암호화하는 방식.
단점
동일한 평문 block이 동일한 암호문 Block으로 암호화된다는 것.
(즉, 같은 값을 암호화 했을 때 Dependency pattern이 유출된다)
6. Cipher Block Chaining (CBC)
위 ECB의 문제를 해결한 것이 바로, CBC이다.
각 블럭을 암호화할 때, 이전 블록의 암호문과 본인 블록의 평문을 XOR 연산하여 암호화 하는것!
이러면 같은 내용의 블록도 암호화했을 때 다른 암호문이 도출된다.
단점
하지만 같은 메시지를 두 번 보낸다고 했을 때 암호화 key가 변경되지 않는 한, 두 메시지의 결과는 같을 것이다.
7. Initialization Vector (IV)
위 CBC의 단점을 해결하고자 나온 것이 바로 초기화 벡터이다.
작동 방식
1. 공유가 가능한 random 벡터를 생성한다.
2. 첫 블록을 IV와 XOR 연산하여 암호화를 진행한다.
이러면 같은 메시지를 두 번 보내도 IV가 달라지면 전혀 다른 암호문이 나오게 될 것이다.
8. Triple DES
Key size를 128 bit로 늘린 것! 하지만 얘도 보안상 취약해서 안씀.
9. AES (Advanced Encryption Standard)
DES의 후속작.
Private key symmetric block cipher이다.
key를 256 bit 크기까지 사용 가능
10. Padding
Block Cipher는 고정된 크기의 블록 단위로 데이터를 암호화한다.
만약 데이터의 크기가 블록 크기(예: 128비트)와 딱 맞아 떨어지지 않으면, 마지막 블록은 불완전하게 남게 된다.
이 때, extra bit로 마지막 블록을 채워서 완전한 블록을 만들어 줄 수 있다.
방식
전체 블록이 8byte라고 하자.
1 byte가 모자라다면, 0x01 / 2 bytes가 모자라다면 0x0202 / 3bytes가 모자라면 0x030303 / ...
이런 식으로 블록을 채워줄 수 있다.
11. Stream cipher (RC4)
message bit를 랜덤한 stream key로 암호화 처리하는 방식.
Plain Text byte stream과 Key를 XOR 연산한다!
연속적인 데이터 스트림을 처리하는 것이므로 실시간 암호화 통신에서 주로 쓰인다.
'Computer Science > 정보 보호와 시스템 보안' 카테고리의 다른 글
Chapter 6 - Security Protocol (TLS) (1) | 2024.10.24 |
---|---|
Chapter 5 - Cryptography (Applied Cryptography) (0) | 2024.10.24 |
Chapter 4 - Cryptography (Public key algorithm) (3) | 2024.10.24 |
Chapter 3 - Cryptography (Hash Function) (0) | 2024.10.24 |
Chapter 1 - Introduce (0) | 2024.10.24 |