[정리] 대칭키 암호 알고리즘

비밀키 암호방식, 대칭키 암호방식이라고 하며 비밀 정보를 교환하고자 하는 상호 암호통신망 가입자가 사전에 비밀 공통키 K를 제삼자에게 노출되지 않게 나누어 가진 다음, 암호통신을 필요로 할 때 평문M을 암호 알고리즘 E와 공통키 K로 암호문 C를 생성시켜 공중통신 채널을 통해서 전달하고 암호문 C를 수신한 가입자는 복호화 알고리즘 D와 공통키 K로 평문 M을 얻는 방법으로 오래전부터 사용되어 온 암호방식으로 암호화키와 복호화키가 동일하며 공개키방식보다 암호화 및 복호화 속도가 빠르다.

128비트 이상의 키 길이를 가지면서 안전성이 널리 인정된 암호 알고리즘을 사용하여야 한다. 또한, 국가·공공기관용 표준 블록암호인 ARIA를 지원할 수 있어야 한다. 대한민국 행정전자서명에서 사용하는 암호화 알고리즘은 다음과 같다.

  • ARIA : KS X 1213-1, 128비트 블록 암호 알고리즘
  • TTA.KO-12.0004 128비트 블록암호 알고리즘 표준 SEED
  • FIPS 46-2 Data Encryption Standard

대칭키 알고리즘

■ Stream cipher

  • 메시지 한 비트단위로 암호화
  • 메시지 크기만큼의 키비트가 필요함
  • 이동통신에 많이 사용함
  • 예 : Vernam

■ Block cipher

  • 고정된 크기의 블록으로 암호화
  • 대부분 Feistel 구조로 설계된다. 각각 t비트인 L0 , R0 블록으로 이루어진 2t 비트 평문 블록(L0 , R0)이 r라운드(r≥1)를 거쳐 암호문(Lr , Rr)으로 변환되는 반복 구조를 말한다. 반복 구조란 평문 블록이 여러 라운드를 거쳐 암호화되는 과정을 말하는데, 전체 알고리즘의 라운드수 는 요구되는 비도와 수행 효율성의 상호 절충적인 관계에 의해 결정 된다. 보통 Feistel 구조는 3라운드 이상이며, 짝수 라운드로 구성된다. 이러한 Feistel 구조는 라운드 함수에 관계없이 역변환이 가능하며, 알고 리즘의 수행속도가 빠르며 구현이 용이하다는 장점을 지니고 있다
  • 예 : DES, SEED

■ 동작 모드

  • ECB(Electronic Code Book) 모드

병렬처리가 가능하고 같은 키에 대해서 동일한 평문은 동일한 암호문을 생성하므로 각 블록을 연결하지 않는 경우 공격자가 재조립등의 가능성이 있음

  • CBC(Cipher Block Chaning) 모드

Ⅳ(Initial Vector) 값을 사용해 첫 번째 메시지 블록을 XOR한 후 그 결과를 암호화해서 첫 번째 암호문을 생성한다. 이 암호문과 두 번째 메시지 블록을 XOR해 그 결과를 암호화한 것이 두 번째 암호문이다. 이러한 방식으로 전체 메시지를 암호화한다. CBC 모드는 EBC모드에서 평문 블록들의 독립성을 제거하고, 각 블록들을 연결시킨다. 이는 전에 형성된 암호문 블록이 다음에 형성될 암호문 블록에 영향을 미침으로써 이루어진다

  • CFB(Cipher FeedBack) 모드

CFB 모드는 IV값을 암호화한 후 그 값을첫번째 메시지 블록과 XOR해서 첫번째 암호문을 생성한다. 두 번째 암호문은 첫번째 암호문을 암호화한 값과 두 번째 메시지 블록의 XOR값이다. 이러한 방식으로 전체 메시지를 암호화한다

  • OFB(Output FeedBack) 모드

OFB 모드는 IV값을 암호화한 후 그 값을 첫번째 메시지 블록과 XOR해서 첫번째 암호문을 생성한다. 여기까지는 CFB 모드와 같다. 그러나 OFB 모드에서는 두 번째 암호문이 암호화된 IV값을 다시 암호화해 두 번째 메시지 블록과 XOR한 값이다. 즉, CFB 모드에서는 메시지 블록과 XOR하는 값이 이전 블록 암호문의 암호화한 값이지만 OFB 모드에서는 암호화한 IV값을 사용한다.

ARIA

ARIA는 경량 환경 및 하드웨어 구현을 위해 최적화된, involutional SPN 구조를 갖는 범용 블록 암호 알고리즘이다. ARIA의 주요 특성은 다음과 같다.

  • 블록 크기 : 128비트
  • 키 크기 : 128/192/256비트 (AES와 동일 규격)
  • 전체 구조: Involutional Substitution-Permutation Network
  • 라운드 수 : 12/14/16 (키 크기에 따라 결정됨)

특히, 경량 환경 및 하드웨어에서의 효율성 향상을 위해, ARIA가 사용하는 대부분의 연산은 XOR과 같은 단순한 바이트 단위 연산으로 구성되어 있다. ARIA라는 이름은 Academy(학계), Research Institute(연구소), Agency(정부 기관)의 첫 글자들을 딴 것으로 ARIA는 블록 암호에 대한 알려진 모든 공격에 대한 내성을 갖도록 설계되었다.

일차적으로 설계자들에 의한 내부적인 안전성 분석을 거친 뒤에, 객관적인 안전성 및 효율성 평가를 위하여 NESSIE(New European Schemes for Signatures, Integrity, and Encryption)의 주관 기관인 벨기에 루벤 대학에 의한 평가를 받았다.

ARIA는 하드웨어 구현 및 8비트 환경에서 뛰어난 효율성을 가지고 있어 IC 카드, VPN 장비 등 다양한 환경에 적용이 가능하다. 또한 소프트웨어 구현에서도 벨기에 루벤 대학의 효율성 평가에서 Camellia보다 빠르고 AES에 근접하는 성능을 보였다.

SEED

SEED는 128비트 블록 암호 알고리즘이다. 즉 128비트 평문 입력을 통해 128비트 암호문을 출력한다. SEED의 전체 구조는 Feistel 구조로 이루어져 있으며, 128비트의 평문 블록 단위당 128비트 키로부터 생성된 16개의 64비트 라운드 키를 입력으로 사용하여 총 16라운드를 거쳐 128비트 암호문 블록을 출력한다 국내 표준 블록 암호알고리즘으로, 128비트 블록 암호 알고리즘이다.

128비트 입력 평문 블록을 2개의 64비트 블록으로 나누어, 16개의 64비트 라운드 키를 이용하여 16라운드를 수행한 후, 최종 128비트 암호문 블록을 출력한다. Feistel 구조를 갖는 블록 암호 알고리즘은 F함수의 특성에 따라 구분될 수 있는데, SEED의 F함수는 수정된 64비트 Feistel 형태로 구성된다. F함수는 각 32비트 블록 2개를 입력으로 받아, 32비트 블록 2개를 출력한다.

SEED의 라운드 키는 128비트 암호키를 64비트씩 좌우로 나누어 이들을 교대로 8비트씩 좌/우로 회전이동한 후, 결과의 4워드들에 대한 간단한 산술연산과 G 함수를 적용하여 생성한다.

라운드 키 생성과정은 기본적으로 하드웨어나(모든 라운드 키를 저장할 수 없는) 제한된 자원을 갖는 스마트카드와 같은 응용에서의 효율성을 위하여, 암호화 및 복호화 시 암호키로부터 필요한 라운드 키를 간단히 계산할 수 있도록 설계되어 있다.

DES

DES는 64비트 블록 암호 알고리즘이다. 즉 64비트 평문 입력을 통해 64비트 암호문을 출력한다. DES 역시 SEED와 마찬가지로 전체 구조는 Feistel 구조로 이루어져 있으며, 64비트의 키가 사용되나 실제적으로는 56비트의 키를 선택할 수 있다.

DES는 한 입력 블록에 대해 총 16라운드의 암호화를 반복한다. 이 때 각 라운드는 치환과 전치 및 대치의 과정을 거치면서 평문과 키에서 나온 48비트의 키가 섞여 암호문을 만든다. 복호화는 암호화의 역순으로 진행된다. 즉 64비트 입력 평문 블록을 2개의 32비트 블록으로 나누어, 16개의 라운드 키를 이용하여 16라운드를 수행한 후, 최종 64비트의 암호문 블록을 출력한다.

DES의 라운드 키는 먼저 64비트의 키에서 패리티 비트를 제거하여 56비트를 출력하고, 그것이 다시 28비트로 나누어져 1또는 2비트 Left Shift된 후, 각각의 출력이 조합된 56비트가 치환과 대치의 과정을 거쳐 48비트의 키가 생성된다.

출처

행정전자서명 프로파일 및 알고리즘 명세서, 웹트러스트 인증 (gpki.go.kr)

반응형