일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Buffer Overflow
- 정보보안기사
- hacking
- PWN
- 운영체제
- 해킹
- pwnable
- webhacking
- stack overflow
- LOB
- Pwnable.kr
- System
- system hacking
- SQL
- Spring Framework
- BOF
- Shell code
- Spring MVC
- OS
- 웹해킹
- Payload
- Operating System
- Lord of BOF
- 정보보안기사 실기
- webhacking.kr
- 워게임
- Spring
- 정보처리기사 실기
- 네트워크
- wargame
- Today
- Total
DongDD's IT
[Cryptography] Modes of Operation(블록 암호 운용 모드) 본문
[Cryptography] Modes of Operation(블록 암호 운용 모드)
Modes of Operation
- 하나의 비밀키를 사용하는 Private key system의 block cipher에서 안전한 암호화를 하기 위해 고안된 방법
Initial Vector(IV)
- 암호화를 난수화하기 위해 사용되는 비트 블록
- 난수화하기 위한 초기 벡터
- 몇몇 운용 방법에 사용
- IV를 전송할 때는 추후에 나올 ECB로 암호화하여 전송
Padding
- 평문의 길이가 블록 크기의 배수가 아닐 경우, 모자란 평문 뒷 부분에 padding을 붙여 block의 배수로 맞추기 위한 방법
1. Padding 방법
1) Zero Padding
- 00 00 00 00으로 padding
2) Bit Padding
- 80 00 00 00으로 padding
3) ANSI X.923
- 00 00 00 04으로 padding
4) ISO 10126
- 81 A6 23 04으로 padding
5) PKCS#7
- 04 04 04 04으로 padding
Modes of Operation
1. Electronic Codebook(ECB)
- 단순히 block으로 쪼개어 각각 암호화/복호화 진행
- 병렬 처리 가능
1) Encryption
- Cn = E(Pn, K)
2) Decryption
- Pn = D(Cn, K)
3) 단점
- 평문 패턴이 노출될 위험이 있음
- Replay Attack에 약함
2. Cipher-Block Chaining(CBC)
- 일반적으로 가장 많이 사용되는 운용 모드
- MAC(Message Authentication Code)에 이용
1) Encryption
- C0 = E(IV xor P0, K) (if, n == 0)
- Cn = E(Cn-1 xor Pn, K) (if, n != 0)
2) Decryption
- P0 = D(C0, K) xor IV (if, n == 0)
- Pn = D(Cn, K) xor Cn-1 (if, n != 0)
- Block Cipher로 Stream cipher 구현
- 자가 동기 스트림 암호화
- 암호화 알고리즘과 복호화 알고리즘이 같음
- IV를 s bit 만큼 왼쪽으로 shift한 것과 ciphertext의 s bit를 다음 단계에 사용
1) Encryption
- C0 = E(IV, K) xor Pn (if, n == 0)
- Cn = E(IV(left shift s) + Cn-1(s bit), K) xor Pn (if, n != 0)
2) Decryption
- P0 = D(IV, K) xor Cn (if, n == 0)
- Pn = D(IV(left shift s) + Cn-1(s bit), K) xor Cn (if, n != 0)
3) 단점
- 이전 단계의 ciphertext를 사용하여 암호화/복호화를 수행하기 때문에 병렬 처리 불가능
- 전송 오류 발생 시, 해당 block과 IV+error cipher가 왼쪽으로 shift되어 없어질 때 까지 발생
ex) IV: 128 bit, Cipher : 8bit
- 128/8 = 16 block 까지 error
4. Output FeedBack(OFB)
- Block Cipher로 Stream cipher 구현
- 동기 스트림 암호화
- 암호화 알고리즘과 복호화 알고리즘이 같음
- IV를 s bit 만큼 왼쪽으로 shift한 것과 IV를 key로 암호화한 s bit를 다음 단계에 사용
- keystream 생성은 IV에만 영향을 받고 data와 상관없이 keystream 생성가능(data가 오기 전 미리 계산 가능, pre-computation)
- ciphertext 전송 오류 전파가 없음(복호화에 ciphertext가 다음 block 영향을 끼치지 않기 때문에)
1) Encryption
- C0 = E(IV, K) xor Pn (if, n == 0)
- Cn = E(IV(left shift s) + E(IVn-1, K), K) xor Pn (if, n != 0)
2) Decryption
- P0 = D(IV, K) xor Cn (if, n == 0)
- Pn = D(IV(left shift s) + D(IVn-1, K), K) xor Cn (if, n != 0)
- CFB, OFB와 마찬가지로 Block cipher로 stream cipher 구현
- IV + counter 사용
- 암호화 알고리즘과 복호화 알고리즘이 같음
- 각 block의 암호화/복호화는 다른 block에 영향을 끼치지 않으므로 병렬 처리 가능
- 암호화/복호화 선 계산 가능(pre-computation)
- 전송 오류가 해당 block에만 영향
- IV+x로 random access 가능
1) Encryption
- Cn = E(IV + x, K) xor Pn (if, n != 0)
2) Decryption
- Pn = D(IV + x, K) xor Cn (if, n != 0)
'IT 보안 > Cryptography' 카테고리의 다른 글
[Cryptography] Public Key Cryptography - RSA (0) | 2018.12.15 |
---|---|
[Cryptography] Stream Cipher - RNG, RC4 (0) | 2018.12.06 |
[Cryptography] AES(Advanced Encryption Standard) (0) | 2018.11.22 |
[Cryptography] DES(Data Encryption Standard) (0) | 2018.10.17 |
[Cryptography] Classical Ciphers, Steganography (0) | 2018.09.21 |