[암호공학] 8장, Encipherment Usingn Modern Symmetric-Key Ciphers

2019. 11. 25. 14:46학교공부/암호공학

책 : Cryptography and Network Security, McGRAW-HILL 

 

대칭 키(Symmetric-key) 방식 암호화는 modern block cipher 방식으로 이용되어짐. 

 

위 그림의 Modes of Operation이라는 것이 고안되었는데 어떠한 사이즈의 text도 DES나 AES를 이용하여 암호화하기 위함임.

1) ECB(Electronic Codebook) MODE

: 가장 간단한 operation 모드이다. 

평문이 N block으로 분할된다. 분할된 블록의 사이즈는 n bits이다. 만약 평문의 사이즈가 블록 사이즈의 배수만큼으로 안나뉘어 떨어지면 마지막에 텍스트를 padding시켜서 마지막 블록이 다른 블록과 사이즈를 같게 한다. 

각각의 블록을 암호화 및 복호화하는데에 같은 키가 사용된다. 

위 그림에서 E : Encryption, P : 평문, D : 복호화, K : Key, C : Ciphertext block이다.

 

위 방식은 Security Issues가 존재한다.

첫번째로, Block level에서의 패턴이 Preserve된다. 예를들어, 평문의 각각의 블록은 암호문의 동일한 각각의 블록으로 변환된다. 만약 공격자가 암호문 블록 1,5,10이 같다는것을 찾아내면 평문의 블록 1,5,10도 같다는걸 쉽게 알아낼 수 있다. 이는 보안성이 떨어진다.

두번째로, 블록간의 independency는 공격자가 키를 모르더라도 몇몇의 ciphertext blocks를 바꿀 수 있다는걸 의미한다. 예를들어서 만약 공격자가 블록 8번이 항상 어떤 특정한 정보를 제공한다는 것을 안다면,  공격자는 해당되는 블록을 이전에 제곤된 메시지와 변경할 수 있다.

>> 또다른 예시 : Eve가 어떤 회사에서 일하는데, 그 회사는 몇 블록으로 나눠진 정보를 갖고 있다. 그리고 Eve는 일곱번째 블록이 amount of money to be deposited in the employee's account라는걸 안다. Eve는 암호문 중에서 정확히 7번째 블록만을 조작해서 은행으로 전송하면 더 많은 돈을 받게 될 것이다.

 

Error Propagation

: 전송시에 단 하나의 비트의 error 가 해당되는 블록의 여러 군데에 영향을 미친다. 하지만 에러는 다른 블럭에는 영향을 안 끼친다.

 

2) CBC(Cipher Block Chaining) MODE

각각의 평문은 이전의 암호문과 exclusive-or 연산을 거친 후 암호화된다.

Initialization Vector(IV)

: IV라는것이 sendor와 receiver 사이에 공유되어야 한다. 이 IV를 비밀로 유지하는가는 중요하지 않으나 integrity of the vector은 CBC 모드의 보안성에 큰 역할을 한다. IV의 비트값을 변경하면 첫번째 블록의 bit 값이 바뀌므로 keep safe from change되어야 한다.

 

Security Issues

CBC모드는 같은 평문 블록이 다르게 암호화되므로 블록 단위의 패턴이 유지되지 않는다. 하지만 그러나 두 메시지가 동일하다면, 같은 IV를 쓴다는 가정 하에 완전히 동일하게 암호화된다.  같은 IV를 쓰지 않아도 처음부터 M번째의 블록까지는 완전히 같을 수 있다. 이러한 이유로 어떤 사람들은 IV에 timestamp를 사용하는것을 권장한다.

둘째로 ,Eve가 ciphertext stream에 어떤 암호 블록을 넣을 수 있다.

 

Error Propagation

CBC 모드에서는 암호문 블록의 한 비트 에러가 대부분의 복호화될 때에 대부분의 평문 블록에 영향을 기친다.

 

3)CFB(Cipher Feedback) MODE

위의 EBC, CBC모드는 블록사이즈 n이 cipher방식에 의해 결정된다. 예를들어, DES에서는 64비트, AES에서는 128비트인 식이다. 하지만 어떤 상황에서는 평문과 암호문 크기가 작아야할 때가 있다. 우리가 ASCII 8비트 char를 암호및 복호화할 때에는 굳이 64비트를 쓸 필요가 없다.

이를 해결하는 방법은 CFB모드인데, 이 모드에서 블록 사이즈는 반드시 DES나 AES의 블록 사이즈와 같지 않아도 된다.

방법은 DES와 AES로 평문을 암호화하는것이 아니라 r-bit shift register로 하는 것이다. 즉 평문블록을 암호 알고리즘으로 직접 암호화하지 않는다. 

 

Security Issues

 : CBC와 같이 블록 레벨 단위에서 패턴이 보존되지 않는다. IV가 각각의 메시지마다 변경될 필요가 있다. Eve는 ciphertext stream에 어떤 ciphertext blocks를 추가할 수 있다.

 

Error propagation

: single bit error in ciphertext C가 single bit error in plaintext P를 만들어낸다. 하지만 이후 대부분의 plaintext blocks에 에러가 생긴다.

 

4) OFB (Output Feedback) MODE

: CFB와 매우 유사하나 암호문의 각각의 비트가 이전의 비트와 독립적이다. 따라서 transmission 단계에서 에러가 발생하더라도 이후의 비트에 영향을 주지 않아 error propagation을 방지한다.

 

Security Issues

: CFB처럼, 패턴 레벨에서 블럭 패턴이 보존되지 않음.

,Any change in the ciphertext affects the plaintext decrypted at the receiver side.

 

Error Propagation

암호문의 단일 비트 에러는 해당하는 plaintext의 해당 비트에만 영향을 준다.

 

5) CTR (Counter) MODE

CTR모드에는 피드백이 없다. 카운터를 이용한다. 

 

n-bit counter가 IV로 initialized되고 predefined rule(mod 2^n)을 따라 증가한다. 더 나은 랜덤성을 띠기 위해서, incerement value는 block number에 depend할 수 있다. 암호문과 복호문 블럭은 same block size를 가진다. 

Security Issues : OFB 와 동일함.

Error Propagation : 암호문 single bit error가 corresponding bit inthe plaintext에 영향을 준다.

요약

 

위 다섯가지 모드는 large file이나 messages에 이용될 수 있지만 가끔씩 pure stream이 필요할 때가 있다. characters나 bits를 암호화할 때이다. 그 종류로 RC4, A5/1를 살펴보자

.

 

1) RC4

RC4는 byte-oriented stream cipher로써 1바이트(8 bits)의 평문이 byte of key와 exclusive-ored되어 암호문을 생성한다. 이 one-byte key는 0번부터 255번까지의 bytes중에서 randomly selected된 것이다. 암호화할 평문이 남지 않을때까지 permutation을 수행한다.

알고리즘으로 나타내면 첫번째로, 

for(i=0 to 255)

{

    s[i] <- i

    K[i] <- Key[ i mod KeyLength]

}

를 수행한다. 다음으로, permutation을 수행한다.

j  = 0

for(i=0 to 255)

{

    j<- (j+s[i]+K[i])mod 256

    swap(S[i],S[j])

}

위 그림의 initial state permutation을 의미한다. 이 함수를 끝내면 state bytes는 완벽히 shuffled된다.

이제는 key stream을 generate한다. 

i <- (i+1)mod 256

j <- (j + S[i])mod 256

swap(s[i], s[j])

k <- S[S[i] + S[j]]mod 256

이때 k를 생성하는 방법은 간단하게 말하면 마구잡이로 swap시킨 후 그 중 하나를 선택하는 것이다.

이를 평문과 Exclusive-Or시켜 암호화한다.

 

 

2) A5/1

모바일 telephone communication network에 이용된다.

A5/1에서 64bit-key에서 bit stream을 생성하는데, 이 bit streams이 228-bit buffer에 모이고 228-bit frame plaintext와 exclusive-ored된다.

A5/1은 세가지의 LFSR을 쓰는데 이는 key generator이며, 각각은 19,22,23bits로 이루어진다. 

 

 

 

다른 이슈들

* Key Management : 만약 community에 n entities들이 존재한다면 , n(n-1)/2개의 키가 필요하다.

* Key Generation : 다른 대칭키 암호화 방식은 다른 size의 key를 필요로 한다. 키를 선택할 때에는 security leak을 피하면서 접근해야하며, 랜덤으로 선택되어야한다. 이는 random number generator의 필요성을 의미한다.