✔ 현대 대칭키 암호를 이용한 암호화 기법

SeungMin_Sa·2020년 5월 18일
0

정보 보안

목록 보기
1/9

1. 블록 암호의 사용 방식

1.1 기본 개념

  • 블록 암호는 고전된 n비트 블록을 n비트 블록으로 변환시키는 함수
  • 임의 길이의 평문을 암호화시키기 위해서는 평문을 특정한 길이로 분할시켜야 한다.
  • DES나 AES를 포함한 어떤 대칭 블록 암호에도 적용할 수 있다.

1.2 Electronic CodeBook(ECB) 모드

  • 운영 모드 중에서 가장 간단한 모드로 평문은 N개의 n비트 블록으로 분할한다.
  • 만약 평문 크기가 블록 크기의 배수가 아니라면, 평문의 마지막 블록에는 다른 블록들과 동일한 크기로 민들기 위하여 덧붙이기가 필요하다.
  • 각각의 블록을 암호화 혹은 복호화하기 위하여 사용되는 키는 동일하다.

📌 암호화

📌 복호화

  • (가) 특징

    • ECB 모드의 장점은 블록 간의 독립성으로 인해 블록에서 발생하는 오류가 다른 블록에 영향을 주지 않는다.
    • 그러나 ECB 방식은 평문의 블록 패턴과 암호문의 블록 패턴이 동일하게 유지되는 문제점이 있다.

1.3 Cipher Block Chaining(CBC) 모드

  • CBC 모드에서 각각의 평문 블록은 암호화되기 전에 이전 암호문 블록과 XOR 된다.
  • 블록이 암호화될 때 암호화된 블록은 전송되지만 다음 블록을 암호화할 떄 사용하기 위하여 메모리에 저장된다.
  • 첫 번째 블록을 암호화할 때는 이전의 암호문 블록이 존재하지 않으므로, 초기 벡터(VI)를 사용한다.
  • 초기 벡터란❓ 주어진 평문에 대하여, IV의 생성에 앞서 IV는 반드시 송수신 양자가 모두 알고 있어야 하고, 제 3자로부터 예측이 불가능해야 한다.
  • (가) 특징

    • 초기치 또는 평문에서 첫 번째 블록이 바뀌면 암호문 블록은 모두 바뀐다.
    • 평문을 제대로 복호화하기 위해서는 암호문이 순서대로 배열되어 있어야 한다.
  • (나) 암호화와 복호화

    • CBC 모드에서는 1단계 전에 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR하고 나서 암호화를 수행된다. 때문에 현재 평문 블록 뿐만 아니라 그 이전의 평문 블록들의 영향도 받게 된다.

📌 암호화

📌 복호화

    • 복호화할 때 CBC 모드의 암호문 블록이 1개 파손된 경우, 암호문 블록의 길이가 바뀌지 않았다면 평문 블록에 미치는 영향은 2개 블록이다.
    • 반면 평문 블록의 한 비트 오류는 출력되는 모든 암호문에 영향을 미친다.
    • 암호문 블록에 비트의 누락이 있는 경우 한 비트씩 앞으로 밀리게 되서 그 이후 블록들은 전부 복호화할 수 없게 된다.
  • (다) CBC의 활용

    • IPSEC에서 통신의 기밀성을 지키기 위해 사용된다.
    • Kerberos version 5에서 인증을 수행하는데 사용된다.

1.4 Cipher FeedBack(CFB) 모드

  • CFB는 어떤 블록 암호도 스트림 암호로 바꿀 수 있다.
  • 스트림 암호는 메시지의 길이가 블록의 정수배가 되도록 패딩을 할 필요가 없으며 실시간으로 사용할 수 있다.
  • (가) 암호화와 복호화

    • 복호화 과정은 평문 블록과 암호문 블록의 역할만 바뀌고 동일하다.
    • 암호화 기법과 복호화 기법에서 암호 함수는 DES와 AES를 사용한다.

📌 암호화

📌 복호화

  • (나) 스트림 암호로서의 CFB 모드

    • 블록 암호를 이용한 운영 모드이지만, 결국 결과는 스트림 암호와 같다. 키 스트림이 암호문에 의존하는 비동기식 스트림 암호이다.
    • 비동기식 스트림 암호❓ 키 스트림의 각 비트는 이전의 평문이나 암호문에 종속적으로 결정되는 것이다.

1.5 Output FeedBack(OFB) 모드

  • OFB 모드는 ECB와 CBC모드와 CFB 모드를 개선한 동작 모드이다.
  • OFB 모드 동작은 암호기의 출력과 평문을 EX-OR하여 암호문을 생성하고 있으므로 오류 전파가 발생하지 않는다. But❗ 전송중인 암호문의 비트 손실이나 삽입 등에 유의해야 한다.
  • OFB 모드에서도 IV(초기화 벡터)를 사용한다.

📌 암호화

📌 복호화

  • (가) 특징

    • 초기치가 바뀌면 암호문은 모두 바뀐다.
    • 암호 알고리즘의 출력은 평문과 무관하다.
    • 전송 중의 비트 오류가 전파되지 않는다.
    • 암호문 C에서 비트 손실이 발생하면 그 다음에 오는 평문은 모두 에러가 발생하기 때문에 동기를 다시 맞추어야 한다.
  • (나) 스트림 암호로서의 OFB 모드

    • 키 스트림은 평문과 암호문과는 독립적이므로 동기식 스트림 암호이다.

1.6 CounTeR(CTR) 모드

  • CTR 모드는 암호화 시 피드백이 존재하지 않는다. But❗ 키 스트림의 의사난수성은 카운터를 사용함으로써 성취될 수 있다.
  • 카운터의 초기값은 암호화 때마다 다른 값(비표) 기초로 해서 만든다.

📌 암호화

📌 복호화

  • (나) 스트림 암호로서의 CTR 모드

    • CFB 모드와 OFB 모드처럼 CTR 모드는 실제로 스트림 암호이다.
    • 동기식 스트림 암호화을 지원한다. 그리고 피드백이 없으므로 병렬 처리가 가능하다.

0개의 댓글