Security

대칭키 암호 시스템의 운영모드

oxdjww 2023. 10. 3. 17:55
728x90
반응형

대칭키 암호 시스템의 운영모드

운영모드와 패딩

운영모드

DES나 AES와 같은 블록 암호를 사용하여 다양한 크기의 데이터를 암호화하는 방식이다.

  • 실제로 사용되는 평문은 다양한 크기를 가지며 보통 블록크기보다 훨씬 큼
  • Electronic Codebook Mode (ECB) : 책에서만 배우고 안전하지 않음
  • Cipher Block Chaining (CBC) : 파일 암호화
  • Counter (CTR) : 네트워크 패킷 암호화
  • Cipher Feedback (CFB) → 수업에서 다루지 않음
  • Output Feedback (OFB) → 수업에서 다루지 않음

블록 암호의 경우, 평문의 길이가 정확하게 해당 블록 암호의 블록 크기의 배수가 되어야 함



  • 패딩은 평문의 전체가 블록 크기의 배수가 되도록 마지막 부분의 빈 공간을 채워 하나의 완전한 블록으로 만드는 작업

패딩

제로패딩(Zero padding, Null padding)


남은 공간은 0으로 채운다.

PKCS7 (Public-Key Cryptography Standard) 패딩


패딩 바이트 값을 패딩 바이트 크기로 사용한다.

운영모드 : Electronic Codebook Mode (ECB)

예시를 들어 설명한다.

패딩을 고려하지 않고 160byte를 암호화 한다면 AES 기준으로 10개로 쪼개진다.
1개 블록 당 AES 암호화 내부 4개의 단계들을 독립적으로 수행한다.

→ 블록들을 동시에 암호화가능
→ 수평적인 암호화 구조


한 블록의 평문은 한 블록의 암호문으로 암호화된다


장점


  • 병렬 처리 가능

  • 오류 확산이 안 된다.

  • 암호문에 bit단위 오류가 발생했다고 가정하면

    • 복호화 시 평문은 쓸 수 없으나 그 오류가 다른 평문으로 확산되지 않는다.

단점


  • 같은 평문에 대해 같은 암호문이 나온다.

  • 블록 단위의 패턴이 유지된다.

  • 재사용 시 문제가 된다.

Cf.


암호화는 확률적인 성질을 갖고 있어야 한다.

→ 암호문은 Determinstic 하지 않아야 한다.

plain text, input, key가 같더라도 cipher는 달라야함

ECB 운영모드는 해결하지 못 하는 문제이다.

→ 블록이 한 개더라도 output이 매번 달라지게 하려면 어떻게 해야하는가?

운영모드 : Cipher Block Chaining (CBC)



parameter(initial factor, 보통 random) 세팅 후 key, 평문과 같이 input

첫 암호화 진행 후 다음 암호화 진행 때 이전 암호문 활용

  • 병렬처리 불능
    • Pn을 암호화하기 위해 Pn-1이 필요하기 때문

초기 벡터(IV, Initialization Vector)


  • 암호화 할 때마다 초기 벡터를 임의(랜덤값)로 바꿈 → 확률적 암호 알고리즘

    동일한 평문이 암호화될 때마다 통계적으로 독립된 서로 다른 암호문이 생성되는 성질

    현대 암호에서는 반드시 만족되어야 하는 성질

    ECB모드 경우는 동일한 평문에 대해여 동일한 암호문이 생성

    → Deterministic encryption algorithm

  • 공개되어 있으므로 잘 보관하여 복호화 시에도 활용해야 함

  • Nonce(Number ONly used onCE) 사용

    Nonce를 사용하여 첫 블록을 암호화 한다. (랜덤값)

  • 네트워크 패킷 내의 동기화된 counter값을 그대로 쓰기도 한다.

  • 안전성 강화를 위해 nonce를 암호화하여 생성된 암호문을 IV로 활용가능하다.

    nonce 암호화를 위한 키는 송수신자가 사전에 공유하는 것을 가정

  • 하지만 practical하게는 IV의 기밀성보단 무결성 중요하다!

    (eve가 한 bit만 변경시켜놔도 제대로 된 평문을 얻을 수 없다.)

연결성 (chaining)


  • 한 평문 안에 동일한 두 개의 블록에 대응되는 암호문 블록이 상이
  • ECB모드에서 보이던 평문의 블록 패턴들이 CBC 암호문에서는 더이상 보이지 않게 됨
  • 블록단위 재사용 불가능

오류 확산 (Error Propagation)


EBC모드와 달리 이전 암호문을 현재 복호화에 이용하기 때문에 확산이 존재

→ 한 비트 오류 시 한 평문 (8비트) 전체가 에러남

하지만 self-recovering라는 특징을 가진다.

Ciphertext i에서 에러 발생시 Plaintext i, Plaintext i+1만 영향 받음


병렬처리


암호화 시 불가능하지만 복호화 시에는 가능하다.
암호문에 대한 사전 준비가 가능하기 때문이다.

Counter (CTR)

CTR 값을 이용하는 운영모드 방식이다.

복호화 함수로 CTR 값을 암호화 하고, 이를 평문과 XOR 연산을 하는 방식이다.

단, 모든 평문마다 CTR값은 달라짐(CTR값은 계속 갱신 (CTR++;))

  • 전처리, 병렬처리 가능

    • 병렬처리 : 암호문 사이의 절차적 연관성 없으므로 가능

    • 전처리 : 카운터를 이용하여 미리 암호화해서 사전준비 가능


고려사항


일회성 패드처럼 서로 다른 두 평문에 한 개의 카운터가 쓰이면 보안문제 발생한다!
-> 패턴 유추 가능


CTR의 오류확산


평문과 암호문의 한 비트 오류는 각각 대응되는 암호문과 평문의 한 비트에만 영향을 준다.


운영모드 비교

  • CTR모드는 송신자, 수신자 사이의 카운터를 유지해야 한다.
    • 또한 bit단위 구현 가능
  • CBC는 단순히 IV만들어서 공개하고 파일 보내주면 된다.
  • 파일 암호화 : CBC
  • 네트워크 암호화 : CTR
    • TCP 통신 시(3way-handshake) seqeunce number가 random하게 할당 됨
    • 이것을 CTR로 이용하여 암호화에 사용된다.

CTR mode vs. CBC mode 심층 비교


CTR모드


CTR모드는 카운터 관리의 어려움이 존재한다.

다른 평문에 대해 같은 카운터가 쓰이면 보안문제가 발생하기에 주의해야 한다.

CBC 모드

IV값이 중복돼서 사용되더라도 평문이 다르면 안전성 문제가 발생하지 않는다.

→ 평문의 관계가 암호문의 관계로 연결되지 않는다!


감사합니다.

Ref

보안프로그래밍(2023), 숭실대학교 소프트웨어학부 조효진 교수님

Beginning Cryptography with Java/David Hook/Wrox press/2005

728x90
반응형

'Security' 카테고리의 다른 글

공개키 암호 시스템(1)  (0) 2023.10.09
메시지 인증 코드(MAC)  (0) 2023.10.03
대칭키 암호 시스템, DES와 AES  (0) 2023.10.02
대칭키 암호 시스템  (0) 2023.10.02
메시지 변조 감지 코드(MDC)  (0) 2023.09.29