개발자 끄적끄적

현대 블록암호의 이용 본문

정보보안

현대 블록암호의 이용

햏치 2023. 5. 6. 00:23

<현대 블록 암호의 이용(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