Modes of Operations

CJY·2023년 5월 30일
0

컴퓨터보안

목록 보기
8/11

Multiple encryption and triple DES

이전에 알아봤던 encryption 방법 중 DES에 대해 알아봤다. Feistel network를 사용한 방법이다. 근데 Key의 길이가 보통 56bit로 전수조사에 약한 단점이 있다. 이를 보완하기 위해 encryption을 2번 이상 사용하면 어떻게 될까?

2번의 DES를 적용하면 key가 112bit(56bit 2개)가 되는 것처럼 보인다. 하지만 온전히 112bit길이의 보안 능력이 있는 것은 아니라고 한다. 그럼 다른 방법이 있을까?

그냥 3번 적용하면 된다.
중간 단계에서 encryption이 아니라 decryption이 적용됐다. 근데 이게 오류가 아니라 실제로 저렇게 한다. 사실 대칭 암호 encryption이나 decryption이나 암호화하는 효과가 있기 때문에 상관이 없다. 그리고 만약 동일한 key를 사용하면 한번 encryption하는 것과 동일한 결과가 나온다.

key를 3개 적용할 수도 있고 2개만 적용할 수도 있다.

이렇게 DES를 여러번 거치는 방법에 대해 알아봤다. 그런데 AES라는 길이가 긴 key를 가지는 방법이 있어서 실제로는 잘 안쓰인다.

Modes of Operation

오늘의 메인 토픽.

들어가기에 앞서 자주 쓰이는 5가지 모드 종류는 다음과 같다.

  • Electronic CodeBook Mode ECB
  • Cipher Block Chaining Mode CBC
  • Cipher Feedback Mode CFB
  • Output Feedback Mode OFB
  • Counter Mode CTR

ECB

Electronic CodeBook Mode의 약자로 그냥 block cipher의 전형적인 과정을 생각하면 된다.

plaintext를 block별로 하나의 key와 AES를 하든 DES를 하든 ciphertext block 하나를 결과값을 갖는다.

여기서 개념을 확실히 잡고 갈 필요가 있는데, 지금까지 배운 DES, AES는 encryption할 때 사용할 재료와 같은 것이다.

지금 알아보고 있는 Modes of Operation은 Block Cipher를 어떻게 구현할 지, 전체적인 틀에 대한 것이다.

단점

같은 키를 사용해서 암호화를 하기 때문에 만약 플레인 텍스트 블럭이 같다면 동일한 사이퍼 텍스트 블럭이 나온다. Permutation이 computationally safe한 것에 비해 통계적인 특성 때문에 취약하다는 사실과 비슷한 논리이다.


이 펭귄 그림이 RGB 형태로 한 픽셀당 24bit를 가진다고 하고 block을 128bit라고 한다면 5픽셀이 한 block이 된다. 그런데 픽셀을 굉장히 작고 위 그림에서 하얀색, 검은색, 노란색 정도로 공통되게(중복하게) 5픽셀을 표현할 수 있다.

그러니까 만약 저 영상을 ECB 방식으로 암호화한다고 했을 때 동일한 cipher text block이 너무 많아서 보안상 취약할 확률이 높다.

장점

parallel processing이 가능하다. 암호화할 때 각 block이 서로 연관이 없으므로 parallel하게 암호화를 수행할 수 있다.

CBC

Cipher Block Chaining의 약자로 cipher block이 사슬처럼 연결된 구조를 띈다.

그림처럼 이전 cipher block이 다음 encryption 전에 plain block과 XOR연산을 진행한다.

IV는 initial vector로 C0C_0의 역할을 한다. 그냥 랜덤값이라고 생각하면 편하다.

여기서도 동일한 key를 사용하지만 이전 cipher block이 개입하면서 동일한 plain block일지라도 다른 결과를 갖는다.

CBC-MAC

AES의 과정을 알고 있다면 입력값의 1bit가 전체 결과값에 영향을 준다는 사실을 알고 있을 것이다. 그림에서 E(Encryption) 자리에 AES가 적용됐다고 생각하면 첫번째 plain block의 1bit flip이 cipher text 전체에 영향을 준다는 것을 생각해볼 수 있다.

이런 특성을 Error Propagation오류 전파라고 하는데 이 특성을 이용하면 Authentication에 사용할 수 있다.

MAC은 Message Authentication Code의 약자로 인증의 기능을 할 수 있다.

Authenticity뿐 아니라 Integrity를 달성할 수 있어 MIC라고도 불린다. Message Integrity Code.

아무튼 plain text와 함께 마지막 cipher block(CNC_N)을 보내주면 MAC 역할을 할 수 있다.

어떻게?

애초에 기밀성이 목표가 아니기 때문에 plain text를 있는 그대로 보내주고, 상대방은 plain text로 CBC를 돌려 CNC_N이 나오는지 확인하면 손상됐는지 조작됐는지 혹은 위장한 송신자인지 확인할 수 있다.

이 때 IV와 Key는 둘 다 같은 것을 가지고 있다. 애초에 지금까지 대칭키에 대해 알아보고 있으니 말이다.

CFB

Cipher Feedback의 약자로 CBC가 plain block과 XOR로 먼저 연산하고 암호화를 진행했다면 이번엔 Cipher block을 암호화하고 마지막에 plain block과 XOR을 진행한다. 그림으로 보는 것이 이해가 빠르다.

이것 역시 CBC와 같이 Error Propagation 특성을 가지고 있어 CFB-MAC으로도 사용한다. 하지만 CBC-MAC을 더 많이 사용하고있다.

Decryption 과정을 보면 "Encrypt"함수가 사용되고 있다. 이전까지는 복호화 과정에는 Decrypt 함수를 적용했지만 이번엔 다르다.

이건 Block cipher가 stream cipher를 흉내내고 있는 것인지 구분할 수 있는 방법이기도 하다.

잘 보면 Stream cipher처럼 key generation을 하고 있는 것 같지 않나? 아니면 말고.

그리고 각 과정을 보면 이전 cipher block 결과를 알아야지 다음 단계를 진행할 수 있다. 즉, Preprocessing이 불가능하다. Stall된다는 표현을 사용하기도 한다.

OFB

Output Feedback의 약자로 CFB가 cipher block이 feedback으로 사용됐다면 이번엔 encrypt함수의 결과값이 피드백에 사용된다.

이것 역시 Stream cipher를 흉내내고 있다.

CFB와의 차이점은 더이상 stall되지 않는다는 점이다. 즉 Plain text가 없어도 Plain block과 XOR할 output들을 미리 연산할 수 있다. Preprocessing이 가능하다.

하지만 Error propagation이 없기 때문에 MAC으로 사용할 수 없다.

ECB처럼 Parallel하게 과정을 수행할 수 없다.

CTR

counter mode를 의미하면 5가지 mode 중 가장 장점이 많은 방법이다.

이 방법 역시 Stream cipher를 흉내내고 있다.

Counter를 사용하고 각 counter간에 연관이 있다. 예를 들면 1씩 증가시킨다거나 그렇다.

따라서 Preprocessing, Parallel processing이 가능하다.

Random Access도 가능하다. 각 단계의 Counter를 알고 있고 Key를 알기 때문에 가능하다.

와이파이 공유기

IEEE 802.11(WPA2/3)AES-CCMP를 사용한다. CCMP란 CTR with CBC-MAC Protocol을 의미한다. 즉 '암호화 틀로 CTR을 사용하고 CBC-MAC을 통해 integrity와 authenticity를 확인한다. 그리고 암호화 재료로 AES를 사용한다.' 정도로 해석할 수 있다.

wireless LAN Medium Access Control(MAC) & physical layer(PHY) specification 부분을 보면 나와있다.

참고로 MAC은 OSI 네트워크 7계층 중 Data link이고 PHY는 physical layer이다.

KCMVP

Korean Cryptographic Module Validation Program으로 한국의 암호모듈 검증제도를 의미한다. 검증 대상 암호알고리즘으로 한국의 블록암호가 있다.

  • SEED
  • ARIA
  • LEA

SEED는 DES처럼 Feistel network를 사용하고 key는 128bit다.

ARIA는 AES처럼 SPN(Substitution-Permutation Network)를 사용한다. AES와 다른 점은 라운드를 구성하는 LT, 홀수 라운드 함수 등인데 관심이 있다면 찾아보는 것을 추천한다.

LEA는 경량 블록 암호로 32비트 ARX구조를 사용한다. Add, Rotate, XOR로 매우 간단한 연산들로만 암호화를 진행한다. S-box같은 것이 없다.

정리

다중DES, Operation의 mode들, 와이파이 공유기, KCMVP에 대해 알아보는 글이었다. Operation mode들의 각각의 구조들을 보면 특성을 이해하기 충분했다. DES, AES를 재료로 한다는 큰 틀을 이해하면 위 내용들이 퍼즐처럼 맞춰 들어가진다. 그리고 이런 전체적인 내용을 이해하고 나서 와이파이 공유기에 사용되는 암호 방식을 살펴보니 바로바로 이해가 됐다. 구조나 암호화 알고리즘을 정확하게 알고 있다면 더할 나위 없이 좋지만 암호학의 전체적인 틀을 이해하는 것이 컴퓨터 보안을 이해하는데 가장 큰 도움이 된다는 것을 느꼈다.

profile
열심히 성장 중인 백엔드

0개의 댓글