2016년 1월 29일 금요일

Section.03 대칭키 암호

1. 고전 대칭키 암호

(1) 개요

1)기본개념

①대칭키 암호화에서는 암/복호화 과정 모두 동일한 한개의 키(한개의 키 자체가 집한인 경우도 있음)를 사용. 암호/복호 알고리즘은 역관계임.

(2)치환암호(대치암호, SubStitude Ciphers)

1)개요

①하나의 기호를 다른 기호로 대체함.
②단일문자암호(monoalphabetic ciphers)와 다중문자암호(polyalphabetic ciphers)로 분류됨.

2)단일문자 암호

(가)개요
①단일문자 암호에서는 평문속의 하나의 문자 혹은 기호가 위치와 상관없이 암호문에서 항상 같은 문자 혹은 기호로 대체된다.
②평문에서 A가 항상 D로 대체된다면. 모든 A는 D로 대체된다. 1:1대응관계를 갖는다.
③평문에 등장하는 문자의 빈도가 암호문에서도 동일한 빈도로 나타난다는 것이 약점.
(나)덧셈암호(Addictive Cipher)_참고
①가장 간단한 단일문자 암호. 이동함호 또는 시저암호라고도한다.
②평문은 소문자로 구성되고, 암호문은 대문자(A~Z로 구성된다고 가정한다.평문과 암호문에 수학연산을 적용하기위해 각각의 문자에 수치를 대응시킨다.)
③각각의 문자는 Z26의 원소로 대응된다. Alice와 Bob의 비밀키도 Z26의 원소이다. 암호 알고리즘에서 키는 평문문자와 더해지고 복호 알고리즘은 암호문 문자에서 키를 뺀다. 모든 연산은 Z26에서 이루어진다.
(다)곱셈 알고리즘(Multiplicative Ciphers)
①암호 알고리즘은 평문에 키를 곱하고 복호 알고리즘은 암호문을 키로 나눈다.
(라)단일문자 암호 해독(Cryptanalysis)
①어떤 암호에서 사용할 수 있는 모든 키의 집합을 키공간이라 하며 이 키 공간에 속하는 가능한 키의 총 수를 키공간의 크기라 한다. 키 공간이 크면 클수록 무차별 공각은 어려워지게 된다.
②단일 치환 ㅇ마호의 평문에서 사용되는 알파벳 a는 A,B..Z의 26문자 중 하나에 대응된다. b는 a를 제외한 25개중 하나에 대응된다. 이하 동일한 방법으로 단일 치환방법의 총 수는 26!으로 약 4x10^26
③무차별 공격에서 단일치환암호를 해독하는것은 어렵지만 , 빈도분석이라는 암호해석법을 사용하면 단일치환 암호도 해석할 수 있다.

3)다중문자 암호

(가)개요
①다중문자치환(Polyalphabetic substitution)에서는 각 문자가 다른 치환을 가진다. 평문 문자와 암호문 문자와의 관계는 일대 다 대응이다. a는 D로 암호화될수도 G로 암호화 될 수도 있다.
②언어의 문자 빈도를 감추는 장잠이 있다. 단일문자 빈도해독을 사용할 수 없다.
(나)Vigenere암호
(다)Rotor암호
①단일 알파벳 치환에 따른 아이디어를 제공하고 각각의 평문 문자에 대해 평문과 암호문 문자의 사상을 변화시킨다
(라)에니그마(Enigma machine)
①rotor암호원리를 기반으로함
②송/수신자가 같은키를 사용하지 않으면 암호통신은 할 수 없음.

(3)전치암호(Transposition Ciphers)

1)키가 없는 전치암호(keyless Transposition Cipher)

①과거에 사용된 간단한 전치암호는 키가 없다. 텍스트가 열 순서로 표에 기록된 뒤 행 순서로 전송되는 방법, 텍스트가 행 순서로 표에 기록된 뒤 열 순서로 전송된다.
②rail fence암호
  • 첫번째 방법을 사용하는 키가 없는 암호의 좋은 예.
  • m  e  m   a  p  r
  •   e   t   e   t  a   k
  • 이렇게 나누고 횡으로 보내면 암호문이 생성된다.
    ③스키테일(Scytale)암호
    • 가장 오래된 암호방식으로 대표적인 전치암호방식.
    • 막대에 종이를 감아 평문을 횡으로 쓴 암호문. 동일한 막대기를 사용해야함.

    2)키가 있는 전치암호(Keyed Transposition Ciphers)

    ①블록이라고 하는 미리 정해진 크기로 평문을 나눈 뒤 각각의 블록에서 문자를 전치하기 위해 따로 키를 사용한다.

    3)전치암호의 암호 해독

    ①전치암호는 여러 종류의 암호문 단독 공격에 취약함.
    ②통계적인 공격: 전치암호는 암호문의 문자빈도를 변화시키지않고, 단지 문자를 재정렬한다. 따라서 적용될 수 있는 첫번째 공격은 단일 문자 빈도 분석이다.
    ③전수조사공격: Eve는 메시지를 복호화하기위해 모든 가능한 키를 시도할 수 있다.
    ④패턴공격: 키가있는 전치암호로 생성된 암호문은 어떤 반복된 패턴을 갖는다.

    2.현대 대칭키 암호

    (1)현대 블록암호

    1)개요

    • n-비트 평문 블록을 암호/복호화한다. 알고리즘은 k비트 키를 이용.
    • 복호 알고리즘은 암호알고리즘의 역함수,두 알고리즘은 동일한 키 사용.
    • 메시지 길이가 n비트보다 작으면 맞추기위해 padding함.

    2)치환(Substitution), 전치(Tranposition)


    • 비트로 수행된것을 제외하면 현대나 고전이나 같다함
    • 암호가 치환암호로 셜계된다면 평문 비트의 값은 암의의값으로 대체된다. 따라서 평문에서 0,1의개수는 암호문의 0,1의 개수와 다르다.
    • 암호가 전치암호로 설계된다면 비트는 재배열된다. 0,1중 하나의 앖을 가질 수 있으므로 n비트 평문 혹은 암호문은 2^n이다. 전치암호의 특성(0,1의 개수 유지)은 전수조사공격에 치명적이므로 현재 블록암호는 치환암호로 설계된다.

    3)현대 블록암호의 구성요소

    ①개요
    • 현대 블록암호는 확산과 혼돈과 같은 성질을 만족시키기 위해 전치요소(P-박스)와 치환요소(S-박스),그 밖의 구성요소들을 결합하여 설계한다.
    • 공격방지 암호를 제공하기위해 이동요소, 교환요소, 분할요소 조합요소뿐 아니라 전치장치, 치환장치와 XOR연산의 조합으로 만들어진다.
    ②P-박스 
    • 문자단위로 암호화를 수행했던 고전 전치암호를 병렬적으로 수행한다. 단순, 확장, 축소의 세가지 P-박스가 있다.


    • 축소 P-박스: n비트를 입력받아 m비트 출력. n>m을 만족하기위해 특정 비튼느 소실된다.
    • 확장 P-박스: n비트를 입력받아 m비트 출력. n<m을 만족하기위해 특정 비트는 한개이상의 출력비트와 연결된다.
    • 역함수 존재성: 단순 P-박스는 역함수 존재, 축소/확장 P-박스는 역함수 없음.

    4)S-박스

    ①개요

    • S-박스는 치환암호의 축소모형으로 생각할 수 있음. 하지만 입력과 출력의 개수가 달라도 된다. 
    • 역함수 존재성: 입력과 출력값사이의 관계가 테이블 혹은 수학적 함수 관계로 정의되는 치환암호이다. 역함수는 존재하지 않을수도 존재할수도있는데 입력비트와 출력비트가 동일한경우가 존재하는경우.
    • XOR


    • 순환이동


    • 교환



    • 분할, 결합


    5) 합성암호(Product Ciphers)

    ①개요

    • shannon은 합성암호의 개념 소개. 치환, 전치, 기타 구성요소를 결합한 복합적 암호.
    ②확산(diffudion)과 혼돈(confusion)
    • 확산: 암호문과 평문사이 관계를 숨기는것. 확산은 암호문에 대한 통계테스트를 통해 평문을 찾고자 하는 공격자를 좌절시킴.(평문의 통계적 성질을 암호문 전반에 퍼뜨려 숨김)
    • 혼돈: 암호문과 키의 상관관계를 숨김. 암호문을 이용해 키를 찾고자하는 공격자를 좌절시킴. 키의 단일비트가 변하면 암호문의 거의 모든 비트가 변한다.

    6) 두 가지 종류의 합성 암호

    ①Feistel 암호
    • DES를 포함해서 대부분의 대칭 블록암호 알고리즘은 1973년 IBM의 Horst Feistel이 최초로 소개한 구조를 따라 만들어짐.
    • Feistel암호는 세 가지 타입의 구성요소를 가짐. 자기 자신을 역으로 갖는것, 역함수가 존재하는것, 역함수가 존재하지 않는것.
    • Feistel암호는 역이 존재하지 않는 구성요소를 결합하고 암호 알고리즘과 복호 알고리즘에서 동일한 구성요소를 사용함.
    • 두 라운드를 갖는 Feistel암호의 최종 구조
    ②Feistel암호의 특징
    • 이 구조에서 네트워크라는 이름은 그 구성도가 그물을 짜는 것 같이 교환되는 형태로 구성되어 있기 때문에 붙여짐.
    • Feistel network는 원하는 만큼 라운드수를 늘릴 수 있다. 라운드 수ㅡㄹ 아무리 늘려도 복호화할 수 없게 될 염려는 없다.
    • 암호/복호 알고리즘 두 가지를 서로 다른 알고리즘으로 구현할 필요가 없다는게 장점
    • Feistel network는 많은 블록암호 알고리즘에서 이용되고 있다. 
    ③Non-Feistel 암호
    • 역함수가 존재하는 요소만을 사용한다. 암호화에 속하는 한 요소는 복호화의 한 요소에 대응된다. 
    • S-박스는 동일한 입/출력개수를 가져야 한다. 축소 혹은 확장 P-박스는 허용되지 않는다.(역함수 x)
    • Non-Feistel 암호는 Feistel암호에서처럼 평문이 반으로 분리될 필요는 없다.

    (2)현대 스트림 암호

    ①개요
    • 현대 스트림 암호에서 암호화와 복호는 동시에 r 비트를 생성한다. 평문 비트 스트림, 암호문 비트 스트림, 키 비트 스트림을 각각 P = pn…p2 p1,
      C = cn…c2 c1, K = kn…k2 k1, 이라고 하자. 여기서 pi , ci , ki r-비트 워드이다
    • 스트림암호는 블록암호보다 빠를뿐 아니라 하드웨어 구현또한 블록암호보다 더욱 용이함.
    •  K = kn…kk1(키 스트림)를 어떻게 생성하는지가 현대 스트림 암호의 주된 관심사이다. 현대 스트림 암호를 동기식/비 동기식으로 나뉜다.
    ②동기식 스트림 암호
    (가)개요
    • 동기식 스트림 암호에서 키 스트림은 평문 혹은 암호문 스트림과 독립적임.
    • 키 스트림은 평문 혹은 암호문 비트와 키 비트 사이에 어떠한 관계도 없이 생성되고 사용된다. 
    (나)One-Time Pad
    • 동기식 스트림암호중  가장 간단하고 안전한 암호. 암호화를 수행할 때마다 랜덤하게 선택된 키 스트림을 사용한다.
    • 무조건 안전하며 이론적으로 해독 불가능하다는것도 수학적으로 증명되었다.
    • 암호/복호 알고리즘은 각각 XOR연산을 사용함. 연산 성질에 의해 암호 /복호 알고리즘은 서로 역관계이다. 이 암호에서 배타적 논리합 연산이 한번에 한 비트씩 적용된다.
    •  
    • 이상적인 암호이며 안전하다. 공격자가 키나 평문을 추적할 수 있는 어떠한 방법도 존재하지 않으며 암호문의 통계적 특성 또한 존재하지 않는다. 또한 평문과 암호문 사이에는 아무런 관계도 없다.
    • 한가지 문제점은 송신자와 수신자가 통신을 할 때마다 랜덤한 키를 공유해야 한다는 것이다. 완벽하고 이상적이지만 실제적으로 사용되기 어렵다. 
    (다)귀환 쉬프트 레지스터(Feedback shift Register)
    • one-time pad의 절충안. FSR은 SW와 HW환경에서 모두 구현될 수 있지만 HW구현이 더 용이함.
    • shift레지스터와 feedback함수로 구성된다.
    (라)선형 귀환 쉬프트 레지스터(Linear Feedback shift Register; LFSR)
    • LFSR에서bmb0,b1,bm-1의 선형 함수이다.
      bm =cm-1bm-1+...c2b2+c1b1+c0b0(c !=0)
    (마)비선형 귀환 쉬프트 레지스터(NonLinear Feedback shift Register; NLFSR)
    • LFSR은 선형성때문에 공격에 취약하다. NLFSR을 이용해 더 안전한 스트림암호를 설계할 수 있다.
    • NLFSR 은bm  b0,b1,bm-1 의 비선형 암수로 정의된다는 것을 제외하면 LFSR과 동일한 구조를 갖는다.
    ③ 비동기식 스트림 암호

    • 비동기식 스트림암호에서 키 스트림의 각 비트는 이전의 평문이나 암호문에 종속적으로 결정된다.
    • 블록암호에서 다른 운영모드를 생성하기위해 사용되는 두 가지 방법인 CFB모드(cipher feedback mode)는 실제로 스트림암호를 생성한다.

    3.DES(Data Encryption Standard) 

    (1)개요

    1)역사

    • DES는 발표된 이후 가장 널리 사용되는 대칭키 블록암호가 되었다. 
    • 최신 암호표준인 AES는 오랫동안 사용된 DES를 대체하기 위해 표준으로 제정된 알고리즘임.

    2)개관

    • 평문의 길이는 64비트이고 키의 킬이는 56비트이다. 이보다 긴 평문은 64비트로 나눈다. DES구조는 Feistel Network의 변형된 형태이다. 라운드수는 16개이다. 56짜리 원래키로부터 16개의 서브키를 생성하고 그 서브키를 각 라운드에러 사용한다.
    • 복호화과정은 근본적으로 암호화과정과 동일하며 규칙은 암호문을 알고리즘의 입력으로 사용하고 서브키ki는 순서를 뒤집어 적용한다. 키를 다 사용할 때까지 라운드를 반복한다.

    (2)DES구조

    1)개요

    • 암호화 과정은 두 개의 전치(P-박스)와 16개의 Feistel 라운드 함수로 구성된다. 
    • 각 라운드는 라운드 키 생성기에 의해 암호키로부터 생성된 48비트 라운드 키를 사용한다.

    2)라운드함수

    ①개요 
    • DES는 16번의 라운드함수를 사용한다. DES의 각 라운드 함수는 Feistel암호로 되어 있다.
    • DES구조. 왼쪽이 한 라운드
    • 라운드함수의 경우는 이전 라운드 함수(또는 초기전치박스)의 출력값Ri-1,Li-1을 입력으로 받아 다음라운드 (또는 최종전치 박스)에 입력으로 전송될 R1,L1를 생성한다.
    • 각 라운드에는 2개의 암호요소 혼합기와 교환기가 있다. 이런 요소들은 역연산이 가능하다. 교환기는 명백하게 가능하다.
    ②DES함수
    • DES의 핵심은 DES함수임. 라운드 함수에 사용된 f(Ri-1,Ki)를 말함. DES함수는 32비트 출력값을 산출하기 위해 가장 오른쪽의 32비트(Ri-1)에 48비트 키를 적용한다.
    • DES함수는 확장 P-박스, 키XOR, 8개의 S-박스 그리고 단순 P-박스의 4개부분으로 구성되어있음 .

    (3)DES분석

    1)설계기준

    ①S-박스 
    • S-박스 각 라운드에서 그 다음 라운드까지 혼돈과 확산 성질을 만족하도록설계되었다.
    • S-박스는 선형 함수이다.
    • 임력값의 한 비트를 바꾼다면, 출력값에서는 두 비트 이상이 바뀐다.
    ②P-박스 
    • 32비트에서 32비트로 가는 하나의 단순 P-박스와 32비트에서 48비트로 가는 하나의 확장 P-박스가 있다. 이런 2개의 P-박스는 동시에 비트들을 확산시킨다.

    2)DES취약성

    • 비평가들은 DES의 가장 심각한 취약성이 키의 크기(56비트)에 있다고 믿는다. 암호문이 주어졌을 경우, 키에 대한 전수조사를 위해 2^56개의 키를 조사해야 한다.

    (4)다중 DES

    1)이중 DES

    ①중간 일치 공격 (meet- in- the-middle Attack)
    • 얼핏 보기에, 이중 DES에서는 키를 탐색하기 위한 탐색 획수가 2^56번(하나의 DES)에서 2^112번 (이중 DES)으로 증가하는것처럼 보인다.
    • 그러나 중간일치 공격과 같은 기지평문공격을 사용하면 2^112가 아닌 2^57로 략간의 향상만이 있을 뿐이다.
    • 이중 DES에 대한 중간일치 공격

    3)삼중DES

    ①두개의 키를 갖는 삼중 DES
    • 두 개의 키를 갖는 삼중 DES에서는 두 개의 키 k1과 k2만을 사용함. 첫 번쨰와 세번째 단계에서는 k1을 사용하고 두 번쨰 단계에서는 k2를 사용한다.
    • 하나의 DES로 삼중 DES를 만들기 위해 암호화 과정의 중간 단계에서는 복호 알고리즘을 사용하고, 복호화 과정에서는 DES의 암호 알고리즘을 사용한다. 
    ②세 개의 키를 갖는 삼중 DES
    • 두개의 키를 갖는 삼중 DES에 대한 기지평문공격의 가능성때문에 어떤 응용프로그램은 세개의 키를 갖는 삼중 DES를 사용한다.
    • 세개의 키를 갖는 삼중 DES는 PGP와 같은 많은 응용프로그램에서 사용되고있다.
    • 3DES의 복호화는 암호화의 역이 된다. 키3,키3,키1의 순으로 복호화-> 암호화-> 복호화를 행한다.
    ③DES와의 호환성
    • 트리플 DES에서 모튼 키를 동일하게 하면 3DES는 보통의 DES와 같아지게 된다. 이것은 최초의 암호화->복호화로 인해 평문으로 돌아가기 때문.
    • 과거에 DES로 암호화된 암호문을 3DES를 써서 복호화 할 수 있게 된다. 즉, DES에 대한 상호 호환성을 3DES가 갖도록 하고있다.
    • 구분
      DES
      Triple DES
      AES
      평문 블록 크기(bits)
      64
      64
      128
      암호문 블록 크기(bits)
      64
      64
      128
      키 크기
      56
      112 또는 168
      128,192,256

    4.AES 

    (1) 개요

    1)역사

    • DES대체를 위해 Advanced EnCryption Standard(AES)공모

    2)라운드(Round)

    • AES는 128비트 평문을128비트 암호문으로 출력하는 알고리즘으로 non-Feistel알고리즘에 속함.10,12,14라운드를 이용하며, 각 라운드에 대응하는 키 크기는 128,192,256비트임.
    • 키 크기에 따라 AES는 세가지 버전으로 나뉘며 AES-128, AES-192, AES-256과같이 품번처럼 불린다. 이 셋 모두 키 확장 알고리즘으로부터 생성되는 라운드키 크기는 평문과 암호문 크기와 동일한 128비트이다.
    • 구분
      DES
      AES
      년도
      1976
      1999
      블록크기
      64bits
      128bits
      키길이
      56bits
      128,192,256,bit이상
      암호화 프리미티브
      치환, 전치
      치환,시프트,비트혼합
      암호학적 프리미티브
      혼란, 확산
      혼란,확산
      설계
      공개
      공개
      설계원칙
      비공개
      공개
      선택과정
      비밀
      비밀,공모
      출처
      IBM, NSA
      벨기에 암호학자

    5.다른 대칭키 암호들 

    1)IDEA(International Data Encryption Algorithm)

    • DES를 대체하기위해 스위스 연방기관에서 개발한 알고리즘. 128비트 키 이용, 64비트 블록을 암호화, 8라운드를 사용하며 주로 키 교환에 쓰임.
    • DES보나 2배 빠르고 무차별공격에 더욱 효육적으로 대응할 수 있는 방식.
    • PGP암호화 SW에서 사용함.

    2)Blowfish

    • DES와 IDEA의 다른 대안으로 대칭형 블록알고리즘이며 32비트에서 448비트까지의 키교환을 지원하는 Feistel구조. 
    • 특허, 라이센스가 없어 무료사용가능.
    • 가장 빠른 블록암호화 알고리즘. 단, 디바이스에 포함하기위해서는 타 모델보다 많은 메모리 필요

    3)SEED

    • 1999년 한국정보진흥원, 국내 암호전문가들이 개발. 
    • 128비트 비밀키로부터 생성된 16개의 64비트 라운드키를 사용하여 총 16회의 라운드를 거쳐 128비트의 평문 블록을 128비트 암호문 블록으로 암호화해 출력.
    • 암호화를 DES와 유사한 변형된 Feistel구조.f함수의 비선형성 안전도에 의존함.

    4)ARIA(Academy Research Institude Agency)

    • 국가보안기술연구소주도로 만들어짐.(학계,연구기관, 정부기관)
    • 128비트 블록암호, 128비트 192비트 256비트의 3중류 키 사용을 제공하며 키의 길이에 따라 ARIA-128,ARIA-256,ARIA-196으로 구분.
    • ARIA의 입출력크기와 사용가능한 키 크기는 미국표준 블록암호인 AES와 동일.

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

    (1)현대 블록암호의 사용

    1)개요

    ①기본개념
    • 블록암호를 다양한 응용에 사용하기 위해 NIST에서는 5가지 운용모드를 정의하였다. 이 5가지모드는 사실상 블록암호가 사용되는 모든 암호응용에 적용할 수 있도록 만들어졌다.
    • 이 모드는 DES나 AES를 포함한 어떤 태칭 블록암호에도 적용할 수 있다.
    • 주요모드
      • ECB모드: Electric CodeBook mode(전자 부호표 모드)
      • CBC모드: Cipher Block Chaining mode(암호 블록 연쇄모드)
      • CFB모드: Cipher-Feedback mode(암호 피드백 모드)
      • OFB모드: Output-Feedback mode (출력 피드백 모드)
      • CTR모드: CounTeR mode(카운터 모드)

    2)Electric CodeBook(ECB) 모드

    ①개요 
    • 운영모드 중에서 가장 간단한 모드. 평문은 N개의 n비트 블록으로 분할된다.
    • 만략 평문크기가 블록크기의 배수가 아니라면, 평문의 마지막 블록은 다른 블록들과 동일한 크기로 만들기 위해 마지막 블록에 덧붙이기가 필요하다. 각각의 블록을 암호화/복호화하기위해 사용되는 키는 동일함.
    ②응용
    • 데이터베이스에 암호화된 레코드를 저장하거나 암호화된 레코드를 복호화해야하는 분야에서는 암호분블록의 독립성이 유용하다.다른 레코드에 영향을 주지 않고도 수정된 이후의 레코드는 중간에서부터 암호화되거나 복호화될 수 있다.
    • ECB모드의 또 다른 장점은 매우 많은 데이터베이스를 암호화할 때 병렬적으로 처리할 수 있다는 것이다.

    3)Cipher Block Chaining(CBC) 모드

    ①개요
    • CBC모드에서 각각의 평문 블록은 암호화 되기 전에 이전 암호문 블록과 XOR된다. 블록이 암호화 될 때 암호화된 블록은 전송되지만 다음 블록을 암호화한 때 사용되기 위하여 메모리에 저장되어야 한다.
    • 첫번째 블록을 암호화 할 때에는 이전의 암호문 블록이 존재하지 않으므로 초기벡터(IV)라고 불리는 허구의 블록이 사용된다.즉 송신자와 수신자 사이에서 사전에 공유된 IV가 존재하지 않는 C0대신 사용하는 것이다.
    ②암호화와 복호화
    • CBC모드에서는 1단계 전에 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR하고 나서 암호화를 수행한다. 따라서 생성되는 각각의 암호문 블록은 현재 평문 블록뿐만 아니라 그 이전의 평문 블록들의 영향도 받게 된다.
    • 만약 평문블록1과2의 값이 같은 경우라도 암호문 블록 1과 2의 값이 같아진다고는 할 수 없다.따라서 ECB모드가 갖고있는 결점이 CBC모드에는 없다.
    • 암호화 할 때 CBC모드에서는 도중의 평문 블록만들 뽑아내서 암호화할 수는 없다.암호문 블록 3을 만들고 싶다면 적어도 평문블록의 1,2,3까지 갖고 있어야만 한다.
    • 복호화할 때 CBC모드의 암호문 블록이 1개 파손된 경우, 암호문 블록의 길이가 바뀌지 않았다면 평문 블록에 미치는 영향은 2개 블록에 머문다. 반면 평문 블록의 한 비트 오류는 출력되는 모든 암호분에 영향을 준다.
    ③활용
    • 인터넷에서 보안을 재공하는 프로토콜 중 하나인 IPSec에서는 통신의 기밀성을 지키기위해 CBC모드를 사용하고 있다.
    • 3DES를 CBC모드로 사용한 3DES-CBC, AES를 CBC모드로 사용한 AES-CBC모드 등
    • CBC모드는 인증을 수행하는 대칭키 암호 시스템의 하나인 Kerberros Version5에서도 사용중임.

    4)Cipher FeedBack(CFB)모드

    ①개요 
    • CFB모드를 이용하면 어떤 블록 암호도 스트림 암호로 바꿀 수 있다. 스트림 암호의 경우 메시지의 길이가 블록의 정배수가 되도록 패딩을 할 필요가 없고 실시간으로 사용할 수 있다. 따라서 한 문자를 전송하는 경우 문자 중심 스트림 암호를 이용해 각 문자가 암호화되는 즉시 전송이 가능하다.
    ②암호화와 복호화
    • 암호화 과정은 r비트 평문 블록과 시프트 레지스터의 r비트를 XOR함으로써 이루어지고 복호화과정은 r비트 암호문 블록과 시프트 레지스터 r비트를 XOR함으로써 이루어진다.
    ③스트림 암호로서의 CFB모드
    • 비록 CFB모드가 DES와 AES와같은 블록암호를 이용한 운영 모드지만, 그 결과는 스트림 암호와 같다. 사실, 키 스트림이 암호문에 존재하는 비동기식 스트림 암호이다.

    5) Output FeedBack(OFB)모드

    ①개요
    • OFB모드는 CFB모드와 매우 유사하나 한가지 차이점을 가진다. OFB모드의 모든 암호문 블록의 각 비트는 이전 암호분 블록의 비트들과 독립적이다.
    • 이는 오류 파급의 영향을 피할 수 있음을 의미한다. 만약 암호문 블록전송도중 오류가 발생해도 오류는 다음 블록의 비트에 영향을 주지 않는다.
    • OFB모드에서도 CBC모드나 CFB모드와 마친가지로 초기화벡터를 사용한다. IV는 암호화 할 때마다 다른 랜덤 비트열을 이용하는것이 보통이다.
    ②스트림 암호로써의 OFB모드 
    • CFB와 마찬가지로 OFB모드는 블록암호를 기반으로 한 스트림 암호이다. 키 스트림은 평문이나 암호문과는 독립이므로 동기식 스트림 암호이다.

    6)CounTeR(CTR)모드

    ①개요
    • CTR모드사 ATM(asynchronous tranfer mode) 네트워크 보안과 IPSec(IP Security)에 응용되면서 관심이 최근들어 늘어났지만 이 모드는 오래전부터 제안되어옴.
    • CTR모드는 암호화 시 피드백이 존재하지 않는다. 그런지만 키 스트림의 의사난수성은 카운터를 사용함으로써 성취된 수 있다.
    • CTR모드는 OFB모드와 마찬가지로 이전 암호문 블록과 독립인 키 스트림을 생성하지만 피드백을 사용하지 않는다. 그리고 ECB모드처럼 CTR모드는 서로 독립인 n비트 암호문 블록을 생성한다.
    ②카운터 만드는 방법 
    • 카운터의 초기값은 암호화 때마다 다른 값(비표)을 기초로 해서 만든다. 블록 길이가 128비트(16바이트)인 경우 카운터의 초기값은 다음과 같다.
    • 66 1F 98 CD 37 A3 8B 4B
      00 00 00 00 00 00 00 01
      nonce
      블록번호
    ③스트림 암호로서의 CTR모드
    • CFB모드와  OFB모드처럼 CTR모드는 실제로 스트림 암호이다.
    • 다른 평문 들록은 서로 다른 키로 XOR된다.

    7)블록 암호 정리

    ①블록암호 모드 비교


     
    이름
    장점
    단점
    비고
    ECB
    전자 부호표 모드
    -간단
    -고속
    -병렬처리가능(암호화 복호화 양쪽)
    -평문속의 반복이 암호분에 반영.
    -암호문 블록의 삭제, 교환에 의한 조작 가능.
    -비트 단위의 에러가 있는 암호문을 복호화하면 대응하는 블록이 에러가 난다.
    -재전송 공격이 가능
    사용해서는 안됨.
    CBC
    암호 블록 연쇄 모드
    -평문의 반복은 암호문에 반영되지 않는다.
    -병렬 처리 가능(복호화만)
    -임의의 암호문 블록을 복호화 가능
    -암호문 블록 Ci에서 전송도중 함 비트에 오류가 발생하면 평문 블록 Pi에는 대부분 비트에서 오류가 발생하고, 평문블록 Pi+1에서는 Ci의 오류비트 와같은 위치에서 한 비트 오류가 발생한다.
    -암호화에서는 병렬처리 불가능
    권장
    CFB
    암호 피드벡 모드
    -패딩이 필요없음
    -병렬처리 가능(복호화만)
    -임의의 암호문 블록을 복호화 가능
     
    -암호화에서는 병렬처리 불가능
    -암호문 블록 Ci에서 전송 도중 한 비트 오류가 발생하면 평문 블록 Pi에는 Ci의 오류비트와 같은 위치에서 한 비트 오류가 발생한다. 하지만 Ci의 비트는 쉬프트 레지스터에 오류가 존재하는한 다음 평문 블록의 대부분의 비트에 오류가 발생한다.(확률적으로 50%)
    -재전송 공격 가능
    CTR사용 권장
    OFB
    출력 피드벡 모드
    -패딩이 필요없음
    -/복호화의 사전준비 가능하고, 같은구조
    -비트 단위의 에러가 있는 암호문을 복호화하면 평문의 대응하는 비트만 에러가 난다.
    -병렬처리 불가능
    -적극적 공격자가 암호문 블록의 비트를 반전시키면 대응하는 평문 블록의 비트가 반전된다.
    CTR권장
    CTR
    카운터 모드
    -패딩이 필요 없다.
    -/복호화의 사전 준비 가능하고, 같은 구조
    -비트 단위의 에러가 있는 암호문을 복호화하면 평문의 대응하는 비트만 에러가 난다.
    -병렬처리 가능(/복호화 양쪽)
    -적극적 공격자가 암호문 블록의 비트를 반전시키면 대응하는 평문 블록의 비트가 반전된다.
    권장
    ②블록 암호 공격
    • 차분 공격에 대한 기본 개념(Differential Cryptanalysis)
      • 선택된 평문 공격법. 두 개의 평문 블록들의 비트의 차이에 대응되는 암호문 블록들의 비트의 차이를 이용해 사용된 암호열쇠를 찾아내는 방법
    • 선형 공격에 대한 기본 개념(Linear Cryptanalysis)
      • 평문 공격법. 알고리즘 내부의 비 선형 구조를 적당히 선형화시켜 열쇠를 찾는 방법
    • 전수 공격법(Exhaustive Key Search)
      • 암호화할 때 일어날 수 있는 모든 가능한 경우에 대해 조사하는 방법이며 경우의 수가 적을 때는 가장 정확한 방법이지만, 일반적으로 경우의 수가 많은 경우에는 실현 불가.
    • 통계적 분석(Statistical analysis)
      • 암호문에 대한 평문의 각 단어의 빈도에 관한 자료를 포함하는 지금까지 알려진 모든 통계적인 자료를 이용하여 해독하는 방법.
    • 수학적 분석(Mathematical analysis)
      • 통계적인 방법을 포함하며 수학적 이론을 이용하여 해독하는 방법.

    8)블록 알고리즘의 종류와 특징

    • 구분
      개발국
      개발년도
      특징
      블록크기
      키 길이
      라운드 수
      DES
      미국
      1972
      NIST에서 표준으로 공표
      64
      56
      16
      IDEA
      유럽
      1990
      PGP채택
      64
      128
      8
      Rijndael
      벨기에
       
      AES알고리즘으로선정
      128
      128,192,256
      10,12,14
      SEED
      한국
      1999
      한국표준 블록암호 알고리즘
      128
      128
      16
      Crypton
      한국
      1998
       
      128
      0-256
      12
      RC5
      미국
      1994
      알고리즘구현 간단,빠른속도
      64
      0-256
      16
      FEAL
      일본
      1987
      SW구현에 적합
      64
      64
      4
      MISTY
      일본
      1996
      차분/선형공격에 안전성증명구조
      64
      128
      8
      SKIPJACK
      미국
      1990
      Fortezza카드에 사용
      64
      80
      32