개발자 끄적끄적
현대 블록암호의 이용 본문
<현대 블록 암호의 이용(Use of modern block cipher)>
- 대칭키 암호화 기법은 현대 블록암호를 기반으로 수행
- DES와 AES라고 불리는 현대 블록 암호는 고정된 길이의 텍스트 블록을 암호화하거나 복호화한다
<운영모드>
Modes of operation
1. ECB(Electronic codebook)
2. CBC(Cipher block chaining)
3. CFB(Cipher feedback)
4. OFB(Output feedback)
5. CTR(Counter)
<electronic codebook모드)
- Encryption : C(i) = E(k)P(i)
- Decryption : P(i) = D(k)(C(i))
*DES : 64bit
*AES : 128bit
- ECB모드는 두 개의 열에 2^n개의 성분을 갖는 2^k개의 코드북을 사전 수집할 수 있으므로 electronic codebook으로 불린다
각각의 성분은 평문과 그에 대응하면 암호문을 목록화 할 수 있다
하지만, k와 n이 커지면 코드북을 사전 수집하고 유지하는 것이 매우 어렵다
<오류 파급(Error Propagation)>
- 전송 도중에 발생하는 단일 비트의 에러는 대응되는 블록 내의 비티들(일반적으로 블록의 반이거나 모든 비트)에 에러를 발생시킨다
- 하지만, 그 에러는 다른 블록의 비트에는 영향을 주지 않는다
<암호문 stealing(Ciphertext Stealing)>
- 암호문 stealing(CTS)이라 불리는 이 기술을 이용하면 덧붙이기 없이 ECB모드를 사용할 수 있다
- CTS에서 마지막 두 개의 평문 블록 P(N-1)과 P(N)은 아래와 같이 다르게 암호화 된다
- 단, P(N-1)은 n비트 블록이고 P(N)은 m(m<=n)비트 블록이라고 가정한다
X = E(k)P(N-1) -> C(N)=head(m)(X)
Y=P(N)|tail(n-m)(X) -> C(N-1)=E(K)(Y)
<Cipher Block Chaining(CBC) Mode>
- CBC모드에서 각각의 평문 블록은 암호화되기 전에 이전 블록의 암호문과 XOR된다
- 암호화와 복호화 과정은 서로 역관계이다
- 초기벡터(Initialization Vector(IV)>
- 초기벡터(IV)는 송신자와 수신자 간에 공유되어야 하지만 반드시 비밀일 필요는 없다
- 오류 파급(Error Propagation)
- 암호문 블록 C(j)가 전송 도중 한 비트 오류가 발생하였다고 가정할 떄, 복호화 과정에서는 평문 블록 P(j)에서는 대부분의 비트에서 오류가 발생되고, 평문 블록 P(j+1)에서는 C(j)의 오류 비트와 같은 위치에서 한 비트 오류가 발생한다
<암호문 stealing(Cipthertext Stealing)>
U=P(N-1) XOR C(N-2) -> X=E(K)(U) -> C(N)=head(m)(X)
V=P(N)|pad(n-m)(0) -> Y=X XOR V -> C(N-1)=E(K)(Y)
- head함수는 ECB모드에서 정의한 것과 같고 pad는 0을 덧붙이는 함수
<Cipher Feedback(CFB) Mode>
- 이 모드에서는 DES나 AES의 블록의 크기가 n이지만 평문이나 암호문 블록의 크기는 r(r<=n)
- CFB모드에서 암호화의 복호는 블록 암호의 암호화 함수를 이용한다
- 평문 블록과 암호문 블록 사이의 관계는 다음과 같이 정의한다
- Encryption : C(i) = P(i) XOR SelectLeft(r){E(K)[ShiftLeft(r)(S(i-1)|C((i-1))]}
- Decryprion : P(i) = C(i) XOR SelectLeft(r){E(K)[ShiftLeft(r)(S(i-1)|C((i-1))]}
*S : State(상태)
r bits(P(i)) XOR(=k(i)(r bits)) -> r bits(C( i)) -> Insecure channel -> r bits(C(i)) -> XOR(=k(i)(r bits)) -> r bits(P(i))
<Output Feedback(OFB) Mode>
- OFB모드의 모든 암호문 블록의 각 비트는 이전 암호문 블록의 비트들과 독립
- 이 사실은 오류 파급의 영향을 피할 수 있음을 의미
- 암호화한 결과에 selectLeft rbit를 했을 때, 이 중간 아웃풋을 Feedback한다
r bits(P(1)) XOR r bits(C1), r bits(P(2)) XOR r bits(C2)...
r bits(P(N)) XOR r bits(C(N))
<Counter(CTR) Mode>
- CTR모드는 암호화 시 피드백이 존재하지 않는다
- 그렇지만 키 스트림의 의사난수성은 카운터를 사용함으로써 성취될 수 있다
IV : n bits -> E -> k1, n bits
n bits(P1) -> XOR(E) -> n bits(C1)
Counter : n bits -> E -> k2, n bits
n bits(P2) -> XOR(E) -> n bits(C2)
<다른 운영모드와의 비교>
1. ECB
- Description
- Each n-bit block is encrypted independently with the smae cipher key
- Type of Result
- Block cipher
- Data Unit Size
- n
2. CBC
- Description
- Same as ECB, but each block is first exclusive-ored withe the previous ciphertext
- Type of Result
- Block cipher
- Data Unit Size
- n
3. CFB
- Description
- Each r-bit block is exclusive-ored with an r-bit key, which is part of previous cipher text
- Type of Result
- Stream cipher
- Data Unit Size
- r<=n
4. OFB
- Description
- Same as CFB, but the shift register is updated by the previous r-bit key
- Type of Result
- Stream cipher
- Data Unit Size
- r<=n
5. CTR
- Description
- Same as OFB, but a counter is used instead of a shift register
- Type of Result
- Stream cipher
- Data Unit Size
- n
'정보보안' 카테고리의 다른 글
RC4, A5/1 (0) | 2023.05.12 |
---|---|
AES(Advanced Encryption Standard) (0) | 2023.04.29 |
라운드(round), DES (0) | 2023.04.17 |