Computer Science/Network Security

[CS][알기 쉬운 정보보호개론 3판] Chapter05. 블록 암호 모드

y-seo 2023. 10. 17. 03:36

 


 

 
 

블록 암호 (Block Cipher)

  • 평문을 블록 단위로 암호화하는 기법
  • 사이즈가 커서 사용
  • Stream Cipher와 비교
    • Stram Cipher란 데이터 흐름을 순차적으로 처리해 가는 알고리즘의 총체 (XOR)
    • 통상적으로 1bit, 8bit, 32bit 등의 단위로 암호화 (or 워드 단위)
  • 블록 크기는 사용되는 알고리즘에 따라 결정
    • DES, 3DES : 64bit 단윈
    • AES : 128bit 단위
  • 연속된 블록을 암호화하는 방법
    • 전자 코드북 모드 (ECB: Electronic Codebook Mode)
    • 암호 블록 체인 모드 (CBC: Cipher Block Chain Mode)
    • 출력 피드백 모드 (OFB: Output Feedback Mode)
    • 암호 피드백 모드 (CFB: Cipher Feedback Mode)
    • 카운터 모드 (CTR: Counter Mode)

 

 
 

전자 코드북 모드 (ECB)

  • 각 블록을 동일한 키로 암호화
    • 동일한 내용의 평문 블록 → 동일한 암호문 블록
  • 코드북 : 번호+숫자 or 평문+암호문
  • 제일 단순한 기법
  • 잘 사용하지 않음
  • 가장 기밀성이 낮음 (암호문만 가지고도 평문의 패턴 파악 가능)
  • 평문으로 해독하지 않고도 암호문만 가지고 내용 조작 가능
  • 평문 블록 : 암호문 블록 = 1 : 1
  • If, 마지막 평문 블록이 블록 길이에 미치지 못할 경우 → 추가하여 블록 길이가 되도록 맞춤
  • 암/복호화 과정
    1. 각각 블록으로 나눔
    2. 각각 암호화 (같은 키로)
    3. 이어 붙임

알기 쉬운 정보보호개론 3판 교재 삽화

  • EBC에서 발생 가능한 평문 조작 공격 예시
    • Alice가 Bob에게 100만원을 송금하는 상황 가정
    • 전달 메세지가 3개의 부분으로 이루어져 있어서 각각 송신자, 수신자, 금액 정보가 저장되어 있다고 가정

 

 
 

암호 블록 체인 모드 (CBC)

  • Cipher Block Chain
  • 암호문 블록을 마치 체인처럼 연결
  • 평문블록과 직전에 암호화된 블록을 XOR한 결과를 암호 알고리즘에 입력으로 넣는다
  • 각각의 암호 블록은 단지 현재 평문 블록 뿐만 아니라 그 이전의 평문 블록들의 영향도 받게 된다
  • 첫번째 평문 블록을 암호화 할 때는 직전 암호화된 블록 자리에 사전에 약속된 IV (Initialization Vector) 값을 넣는다
  • 암/복호화 과정

  • 평문 블록이 서로 같아도 암호문 블록은 다를 가능성이 높으므로 패턴 파악이 어려움
  • 앞이 깨지면(비트가 다르면) 뒤에도 다 깨져 복호화 불가 → 깨지는 범위가 크다는 단점 (사소함)
  • CBC 모드의 특징
    • 평문 블록은 반드시 "한 단계 앞의 암호문 블록" 과 XOR을 취하고 나서 암호화
    • 만약 어떤 2개 평문 블록 1과 2에 대해 이 둘이 서로 같다고 하더라도 암호문 블록1과 2의 값이 같아진다고 할 수 없다
    • 암호문 블록 3을 만들고 싶다면 적어도 평문 블록의 1, 2까지가 갖추어져 있어야만 한다
    • ECB 모드가 갖고 있는 결점이 CBC 모드에 없다
      • CBC 모드에서는 암호문 2개의 위치를 바꾸면 아예 복호화가 안된다
    • 암호문 중 어느 한 블록이 한 비트라도 잘못 전송되게 되면 그 블록과 바로 다음 블록이 영향을 받는다

  • ECB 모드에서 가능했던 공격은 CBC에서는 성공이 불가능
  • 다른 공격 방식들
    • Padding Oracle 공격 (16의 배수를 만들기 위해 덧붙이는 것)
    • 초기화 벡터에 대한 공격
    • 위 2개 모두 성공률이 낮은 공격들이기 때문에 CBC 모드는 많은 곳에서 활용 중
      • 3DES-EDL-CBC
      • AES-256-CBC
      • 위의 두 기법들은 SSL/TLS에서 사용되는 모드
  • Minor한 장점
    • n번째 블록을 복호화 하기 위해서는 (n-1)번째 암호블럭만 추가로 필요
    • 도착한대로 보여줄 수 있다

 

 
 

암호 피드백 모드 (CFB)

  • Cipher Feedback
  • 앞 단계의 암호문 블록을 암호 알고리즘의 입력으로 사용하는 모드
  • 일회용 패드와 유사
  • 평문 블록2 변동 → 암호문 블록 2,3,4 다 변동

 

 
 

CFB 모드와 CBC 모드의 비교 및 특징

  • CBC vs CFB 모드
    • CBC 모드 : 평문과 그에 해당하는 암호문 사이에 암호화 과정이 있음
    • CFB 모드 : 그런 과정은 없고 XOR 연산만 있음
  • 일회용 패드 vs CFB 모드
    • 일회용 패드 : 완전히 무작위로 생성된 값과 평문이 XOR 연산
    • CFB 모드 : 난수가 아닌 다른 암호문 블록과 평문 XOR 연산, 복호화 할 때도 암호화 알고리즘이 들어감

 

 
 

CFB 모드에 대한 재전송 공격

  • Alice가 Bob에게 보냈던 메세지를 공격자가 가로챘다가, 나중에 재사용하는 공격
  • 재전송 공격을 이용해서 공격자가 Alice가 Bob에게 보냈던 메세지의 일부를 다시 보낼 수 있다
  • 이전에 보낸걸 keep (내용 몰라도 됨) → 나중에 다시 보냄

 

 
 

출력 피드백 모드 (OFB)

  • Output Feedback

  • 특징
    • 암호화 될 때마다 IV (Initializing Vector)가 무작위 생성
    • CFB와 마찬가지로 평문이 직접 암호화되는 것이 아니라 암호화된 다른 값과 평문이 XOR 연산 됨으로써 암호화가 이루어짐
    • CFB와 마찬가지로 암호문을 복호화 할 때도 암호화 알고리즘 사용
    • IV 의 암호화된 버전만 잘 관리할 수 있다면 미리 IV 의 암호화된 값들을 계산해 놓고 있다가 나중에 암호화 요청이 들어왔을 때 평문과 XOR 연산만 수행하여 빠르게 암호화 할 수 있음

 

 
 

Counter 모드 (CTR)

  • 쌍방이 같은 counter 여야 함 → Synchronization O

  • 카운터 초깃값
    • 암호화 때마다 다른 값 (nonce, 비표(비밀로 하는 표)) 을 기초로 해서 작성
  • 예시
    • 앞부분은 비표로 암호화 할 때마다 다른 값을 사용해야 한다
    • 뒷부분은 블록번호로 1씩 증가시켜 가면 된다

  • 특징
    • 데이터 암호 시 주로 사용
    • 효율성 : CTR은 각 블록들을 병렬로 암호화 가능, 이전과 연관성 X
    • 사전처리 : 메모리가 충분하고 보안만 잘 유지할 수 있다면 카운터의 암호화된 결과를 미리 저장 가능, 이후 실제 암/복호화 할 때 XOR 연산만 수행하면 되므로 매우 빠른 속도로 처리 가능
    • 임의 접근 : 중간 블록만 복호화 가능
    • 단순성 : 복호화 = 암호화 알고리즘