본문 바로가기

개념정리/Cryptography

6. 패딩과 운영모드

 

저번 시간에는 AES에 대하여 공부하였다.

이번 시간에는 평문을 블록 단위로 만드는데 사용하는 패딩과

블록 암호의 운영모드에 대하여 공부할 것이다.

 


1. 패딩

블록 암호는 블록 단위로 암호화를 하므로 입력의 길이가 정확하게 블록 크기의 배수가 되어야 한다. 하지만 일반적으로 평문의 크기는 블록 크기의 배수가 되지 않는다. 이러한 문제를 해결하기 위해 패딩을 한다.

패딩은 평문에 데이터를 붙여서 블록 크기의 배수가 되도록 만드는 과정이다.

블록 암호로 평문을 암호화할 때 평문은 패딩을 거친 뒤 여러 블록으로 나뉜다. 그리고 각각의 블록은 블록 암호의 운영모드에 따라 암호화된다. 패딩된 암호문을 복호화할 때는 복호화된 평문에서 패딩을 제거해야 원래의 평문을 얻을 수 있다. 따라서 패딩된 암호문의 수신자는 어떤 패딩이 적용됐는지 알아야 암호문을 제대로 복호화할 수 있다.

많이 사용하는 패딩 기법은 1) 비트 패딩, 2) 바이트 패딩, 3) PKCS#7 패딩이 있다. 

1) 비트 패딩

  • 비트 패딩은 마지막 블록에서 평문이 채우지 못하는 비트 중 최상위 비트를 1로 설정하고 나머지는 모두 0으로 채우는 패딩 기법이다.
  • 수신자는 평문의 마지막 비트부터 처음으로 값이 1인 비트가 나올 때까지를 패딩으로 인식하고 제거하여 평문으로 만든다.
  • 하지만 평문의 크기가 정확히 블록 크기의 배수일 때, 수신자가 메시지 일부를 패딩으로 오해할 문제가 있다. 그러므로 비트 패딩을 적용할 때 평문의 크기가 블록 크기의 배수이면, 패딩으로 한 블록을 추가한다.

2) 바이트 패딩 : ANSI X.923

  • 바이트 패딩은 바이트 단위로 패딩을 수행하는 패딩 기법이다. 마지막 블록의 남는 바이트를 0으로 채우고 마지막 바이트에 패딩의 길이를 기록하는 기법이다.
  • ANSI X.923은 비트 패딩과 마찬가지로 평문의 크기가 블록 크기의 배수일 때, 수신자가 평문을 패딩으로 오해할 수 있다. 그러므로 평문이 블록 크기의 배수일 때 마지막에 한 블록을 패딩으로 추가한다.

3) 바이트 패딩 : PKCS#7

  • PKCS는 공개키 암호의 표준 문서이다. PKCS#7은 그 중에서 7번째 문서이며 AES와 같은 블록 암호의 패딩 기법을 제시한다.
  • PKCS#7 기법은 추가할 패딩의 바이트 크기로 마지막 블록을 채우는 기법이다. 
  • 비트 패딩과 마찬가지로 평문의 크기가 블록 크기의 배수이면 한 블록을 패딩으로 추가한다.

 

2. 운영모드

DES나 AES와 같은 블록 암호는 한 번에 한 블록의 평문을 암호화하기 위해 설계되었다. DES는 64비트, AES는 128비트의 평문을 한 블록으로 처리한다. 인코딩 시, DES는 8글자, AES는 16글자를 한번에 암호화할 수 있다.

그런데 일반적으로 사용되는 평문의 길이는 길다. 그러므로 블록 암호로 다양한 크기의 데이터를 처리할 수 있도록 고안한  운영모드를 사용한다. 대표적인 운영모드로 1) ECB, 2) CBC, 3) CTR이 있다.

1) ECB 모드

ECB 모드는 가장 간단한 운영모드이며 블록들은 모두 같은 키로 암호화가 된다. 각 블록이 독립적으로 암호화되므로 여러 블록을 병렬적으로 암호화 할 수 있는 장점이 있다. 하지만 다른 운영모드에 비해 암호학적 안전성이 부족하다는 단점이 있다.

ECB 모드(출처 : 드림핵)

◎ ECB 모드의 취약점

1. ECB 모드를 사용하면 같은 블록은 같은 암호문으로 암호화된다. 이 특징을 이용하면 공격자는 암호문에서 평문의 정보를 습득하거나 재전송 공격을 수행하는 것이 가능하다.


재전송 공격에 대한 참조 링크

 

[Cryptography]Replay Attack

● Replay Attack 재전송 공격(Replay Attack)은 어떤 데이터를 재전송하여 시스템이 의도치 않은 행동을 하게 만드는 공격이다. EX 1) 공격자가 암호화된 데이터를 복호화하는 것이 아니라, 암호화된 데

sungw00k.tistory.com


2. 이미지의 한 픽셀을 한 블록으로 하여 ECB 암호화를 하면 같은 픽셀들은 모두 같은 픽셀로 암호화가 되므로, 원본 이미지의 패턴이 암호화된 이미지에도 그대로 나타난다. 이는 암호문으로부터 평문의 정보를 유추하기 어려워야 하는 혼돈 성질이 약하다는 의미이다.

 

2) CBC 모드 

CBC 모드는 블록을 암호화하기 전에 직전 블록의 암호문과 XOR 연산을 한다. 평문의 첫 번째 블록은 이전 블록이 없으므로, 초기 벡터(IV)라고 불리는 임의의 데이터와 XOR 연산을 한다. CBC 모드를 사용하면 각 블록이 서로의 암호화에 영향을 주기 때문에 같은 블록도 전체 평문 및 IV에 따라 암호화 결과가 달라진다.

CBC 모드(출처 : 드림핵)

초기 벡터는 일반적으로 논스(Nonce)라는 무작위 값을 사용하며, 이는 공격자가 알아도 안전성에 영향을 끼치지 않는다. 하지만 공격자가 IV를 조작할 수 있으면 복호화 결과의 첫 번째 블록을 조작할 수 있다(CBC Bit-Flipping Attack).따라서 CBC 모드를 사용할 때는 초기 벡터의 무결성을 함께 보장해야 한다.


CBC Bit-Flipping Attack 참고 링크

 

[Cryptography] CBC Bit-Flipping Attack

CBC 모드에 대한 설명은 밑에 링크를 참고하세요. 6. 패딩과 운영모드 저번 시간에는 AES에 대하여 공부하였다. 이번 시간에는 평문을 블록 단위로 만드는데 사용하는 패딩과 블록 암호의 운영모

sungw00k.tistory.com


한 블록을 암호화할 때 직전 블록의 암호화 결과를 사용하므로 병렬적으로 암호화할 수 없다. 하지만 복호화할 때는 암호문 블록을 알고 있으므로 병렬적 처리를 할 수 있다. CBC 모드는 재전송 공격에 강인하며 높은 혼돈성을 가지고 있어서 블록 암호의 운영모드로 널리 사용되고 있다. 

 

3) CTR 모드

CTR 모드는 블록암호에 nonce와 평문 블록의 인덱스를 결합한 값을 입력한다. CRT 모드는 블록을 순서대로 암복호화하지 않아도 되므로 병력로 암복호화를 할 수 있으며 구현이 간단하다는 장점이 있다.

 

CTR 모드(출처 : 드림핵)

 


 

이번 시간은 패딩과 운영모드에 대하여 공부하였다.

다음시간은 Diffie-Hellman 알고리즘에 대하여 공부할 것이다.

 

'개념정리 > Cryptography' 카테고리의 다른 글

[Cryptography] Replay Attack  (0) 2022.08.02
[Cryptography] CBC Bit-Flipping Attack  (0) 2022.08.02
5. 블록 암호 : AES  (0) 2022.07.28
4. 블록 암호 : DES  (0) 2022.07.25
3. 현대 암호  (0) 2022.07.25