(2022.04.09)
네보실 3주차 실습 강의 정리
Padding
: block cipher 암호화에 필요한 block 의 빈공간을 채우는 것
1 byte = 8 bit
즉, block의 길이를 완성하기 위해서 부족한 공간을 채우는 것을 padding이라고 한다.
padding의 방법에는 여러가지가 있다. (6개 정도)
- pad with 1 bit followed by 0 bits
- pad with zero (null) characters
- pad with space characters
- pad with zeroes except make the last byte equal to the number of padding bytes
- pad with random values except make the last byte equal to the number of padding bytes
- pad with bytes all of the same values as the number of padding bytes
1. OneAndZeros padding (ISO/IEC 7816-4, bit padding)
: 1 bit (0x80) 추가하고 나머지는 0 bit (0x00) 로 채우는 방법
-> 1 bit를 추가했는데 block 에 부족한 부분이 없다면 padding 끝
-> block이 처음부터 부족한 부분이 없다면, padding 안함
hex 값으로 나타내므로 1은 80, 0은 00으로 채워짐
2. zero padding
: 모든 byte를 0x00으로 채우는 방법
-> ASCII Text 같은 평문 메시지에 사용하는 것은 문제없지만, EXE 파일 과 같은 바이너리 데이터에는 사용할 수 없음
-> 바이너리 파일은 0x00으로 끝날 수 있기 때문
-> 암/복호화 보다는 hash 값 생성에 자주 쓰임 (복호화가 필요없는 hash 값 생성)
3. pad with spaces
: 모든 byte를 space (0x20) 로 채우는 방법
-> 원본 데이터의 마지막에 0x20이 들어간 경우는 사용할 수 없음
-> 어디까지가 평문이고, 어디가 padding인지 구분할 수 없기 때문
-> zero padding 과 마찬가지로 hash 코드 생성에 쓰임
4. ANSI X9.23
: 마지막 byte를 제외하고 모두 0x00으로 채우고, 마지막 byte에는 padding 크기를 채우는 방법
-> block이 부족하지 않아도 padding 함. (input block 크기와 암호화 알고리즘에서 사용하는 block 크기가 같아도)
5. ISO 10126
: 마지막 byte를 제외하고 모두 랜덤 값으로 채우고, 마지막 byte 에는 padding 크기를 채우는 방법
-> block이 부족하지 않아도 padding 함. (input block 크기와 암호화 알고리즘에서 사용하는 block 크기가 같아도)
6. PKCS#5/7
: 모든 byte를 padding 크기로 채우는 방법
-> block이 부족하지 않아도 padding 함. (input block 크기와 암호화 알고리즘에서 사용하는 block 크기가 같아도)
Block cipher 의 운영모드
- ECB
- CBC
- CFB
- OFB
- CTB
1. ECB - Electronic Code Book
--> 가장 취약한 방식이라 실사용 x
장점 - 한 블록에 오류가 발생해도 해당 블록을 제외하고는 다른 블록에서 오류가 발생하지 않는다.
(오류 증식 error propagation 없음)
- 구조가 단순하고, 병렬화 용이하다.
단점 - 반복되는 평문은 반복되는 암호문을 초래하고 이는 공격자에게는 큰 힌트가 된다.
2. CBC - Cipher Block Chaining
첫번째 블록은 초기화 벡터 IV와 xor 연산 , 그 후 암호화 진행
암호화된 암호문은 다음 블록의 xor 연산에 이용
--> error 발생시, 다음 블록에 영향 줌 (error propagation 존재)
--> 암호화 이전 단계의 결과로 다음 블록 암호화에 사용하여 암호화는 병렬화가 불가능함
--> 복호화는 이미 존재하는 암호문을 다음 블록 복호화에 사용하기 때문에 복호화는 병렬화 가능함
3. CFB - Cipher FeedBack
CBC모드와 유사하다.
--> 이전 블록이 다음 블록에 영향을 줌
--> CBC 와 마찬가지로 암호화는 병렬화 불가능, 복화는 병렬화 가능
4. OFB - Output FeedBack
CFB 와 구조, 특징이 거의 같다.
암/복호화 방식이 동일하여 구현이 용이하다.
암/복호화가 순차적으로 동작하지만, 모든 중간값을 미리 생성해둔다면 병렬화가 가능하다.
--> stream 암호와 구조가 유사하여 미리 생성해둔 키 스트림과 XOR 하는 것과 유사하다.
5. CTR - CounTeR
----> 가장 많이 쓰인다.
임의의 난수 nonce와 매 블록마다 1씩 증가하는 Counter를 결합하여 key로 만든다 --> 키스트림 생성이라고 볼 수 있다.
암/복호화 과정이 동일하여 구현이 용이하다.
각 단계가 독립적으로 수행될 수 있어 병렬처리가 가능하고, 임의의 순서대로 암/복호화할 수 있다.
'Security > 네트워크 보안' 카테고리의 다른 글
[네트워크 보안] 실습과제 3 정리 (0) | 2022.05.15 |
---|---|
[네트워크 보안] Key Distribution Problem - PSK, KDC, DH, PKI, RSA, digital signature (0) | 2022.04.10 |
[네트워크 보안] Hash, MAC, HMAC (0) | 2022.04.09 |
[네트워크 보안] Modern Cryptography (현대암호) - DES (0) | 2022.04.01 |
[네트워크 보안] Classical Cryptography (고전암호) (0) | 2022.04.01 |