본문 바로가기
정보보안기사 필기/1. 정보보안 일반

정보보안기사 필기 1-4. 대칭키 암호(DES, AES)

by kkmin93 2021. 1. 5.
반응형

정보보안기사 필기 1-4. 대칭키 암호(DES, AES)

목 차
1. DES(Data Encryption Standard)
2. AES(Advanced Encryption Standard)
3. 기타 대칭키 암호 알고리즘
4. 대칭키 암호를 이용한 암호화 기법

 

1. DES(Data Encryption Standard)

 1) DES 개요

  • 1972년에 미국 국립기술 표준원(NIST)에서 암호 기술의 필요성을 느끼고 미국 정부 규모의 표준적인 암호 알고리즘을 개발하기로 한다.
  • 1974년 8월 27일. IBM에서 루시퍼 암호 알고리즘을 제안하였고, 이를 채택하여 1975년 3월 17일에 DES를 공식적으로 발표하였다.

 

 2) DES 특징

  • 평문의 길이를 64 비트 단위로 나누어 암호화를 진행하는 블록암호 알고리즘이며, 키의 길이는 56 비트*를 사용한다.
  • 56 비트 키를 가지고 각 라운드에 사용되는 48 비트의 서브키를 만들어 사용한다.
DES의 키는 실제 64 비트지만, 7 비트마다 오류검출에 사용되는 Parity Bit가 1 비트씩 들어가기 때문에 실질적인 키의 비트를 56 비트라고 한다.
  • 키의 작은 변화가 결과값에 큰 영향을 미치는 쇄도 효과(Avalanche Effect)가 매우 크다.
  • 암호문의 각 각의 비트가 평문의 많은 비트에 의존하는 완비성(Completeness)이 높아 암호문으로부터 평문을 추론하기가 어렵다.

 

 3) DES 구조

  • DES의 암호화 과정은 두 개의 전치(P-box)와 16번의 라운드(Feistel 구조)로 구성된다.
  • 각 라운드에 적용되는 DES 함수가 DES의 핵심이며, 『확장 P-box, 키 XOR, 8개의 S-box, 단순 P-box』로 구성된다.

[그림 1. DES(Data Encryption Standard)]

 

 4) DES 분석 및 취약점

 ■ S-box

  • S-box는 비선형 함수로 혼돈을 만족하도록 설계되었다.
  • 한 비트만 바뀌어도 출력 값에서 두 비트 이상이 바뀌게 된다.

 ■ P-box

  • P-box는 확산을 만족하도록 설계되었다.

 ■ DES 취약점

  • DES 키는 1998년 3일 만에 전사 공격에 의해 해독되었으며, 현재는 보안 위험상 사용을 권장하지 않고 있다.

 

2. AES(Advanced Encryption Standard)

1) AES 개요

  • 1990년대로 접어들면서 네트워크, 하드웨어 등이 급속도로 발전하게 되면서 56 비트 키를 사용하는 DES는 더 이상 안전하지 않게 되었다.
  • 대안으로 3-DES도 사용되었지만, 보안성이 낮고 소프트웨어에서 실행 속도가 느리기 때문에 다른 대안이 필요했다.
  • 1997년 미국 국립기술 표준원(NIST)에서 AES라는 이름의 암호 알고리즘 공모를 받게 되었다.
  • 『암호문 블록 크기가 128 비트, 키의 길이가 128, 192, 256 비트』라는 조건이 있었는데 벨기에 암호학자가 개발한 레인 달(Rijdael)이 채택되었고, 2001년 11월에 AES라는 이름의 표준으로 공표하였다.

 

2) AES  특징

  • 128 비트 평문을 128 비트 암호문으로 출력하는 알고리즘으로 non-Feistel 알고리즘이다.
  • AES에 사용되는 키의 길이는 128, 192, 256 비트로 각 대응하는 라운드 수는 10, 12, 14  라운드 수를 사용한다.
단, 128, 192, 256 비트 키의 길이를 가졌어도 각 라운드에 사용되는 키의 길이는 128 비트로 동일하다.
  • Feistel은 평문 블록의 반을 암호화하는 방식인 반면에 AES는 S-box를 적용한 바이트 단위 치환, 행 단위로 순환 시프트 수행, 열 단위 혼합, 마지막으로 라운드 키와 State를 XOR 연산하는 4가지 순서로 구성된다.
AES 순서 : SubBytes() → ShiftRows() → MixColumns() → AddRoundKey()
단, 마지막 라운드에서는 AddRoundKey()는 생략한다.
  • AES는 하드웨어나 소프트웨어 구현 시 속도나 코드 압축성 면에서 효율적이므로  스마트카드와 같은 응용에 적합하다.

 

3. 기타 대칭키 암호 알고리즘

 1) 국제 암호 알고리즘

 

■ IDEA(International Data Encryption Algorithm)

  • 스위스 연방 기술 기관에서 개발한 알고리즘으로 『128 비트 키, 64 비트 블록 암호』로 Feistel과 SPN의 중간 형태의 블록 암호이다.
  • 8 라운드에 걸쳐 데이터를 변환하고 마지막에 한 번 더 키를 적용시켜 64 비트 암호문을 생성하기 때문에 보통 8.5 라운드라고 한다.
  • DES와 달리 S-box를 사용하지 않고 대수적 구조가 서로 다른 연산을 교대로 사용하여 암호학적 강도를 증가시켰으며 DES보다 2배 정도 빠르며, 무차별 공격에 더욱 효율적이다.

■ RC5

  • 1994년 미국 라이 베스트(Rivest)가 개발한 것으로 비교적 간단한 연산으로 빠른 암호화와 복호화 기능을 제공하며, 모든 하드웨어에 적합하다.
  • RC5는 『32, 64, 128 비트의 블록 암호』로 『키의 길이는 0 ~ 2040 비트, 라운드 수는 1 ~ 255 회』로 가변적인 블록 암호로 DES보다 10배 빠른 속도를 가지고 있다.

 2) 국내 암호 알고리즘

 

■ SEED

  • 1999년 한국 정보 진흥원과 국내 암호전문가들이 함께 개발한 알고리즘으로 『인터넷, 전자상거래, 무선통신』 등에서 중요정보 및 개인정보를 보호하기 위한 대칭키 알고리즘이다.
  • 『128 비트의 블록 암호』로 『128 비트의 비밀키』에서 『64 비트 라운드 키』를 생성하여 『총 16회 라운드』를 진행하여 암호화한다.
  • 2009냔 256 비트의 비밀키를 사용하는 SEED-256이 개발되었다.

■ ARIA(Academy Research Institute Agency)

  • Involutional SPN 구조의 128 비트의 블록 암호로 128, 192, 256 비트의 비밀키를 사용한다.
  • 입출력 크기와 사용할 수 있는 비밀키의 크기는 AES와 동일하다.

■ HIGHT(HIgh security and light weigHT)

  • RFID, USN 등과 같이 저전력/경량화를 요구하는 컴퓨팅 환경에서 기밀성을 제공하기 위해 개발된 64 비트의 블록 암호이다.

■ LEA(Light weight Encryption Algorithm)

  • 2012년 국가보안 기술 연구소가 개발한 128 비트 경량 고속 블록 암호 알고리즘이다.
  • 대용량 데이터를 빠르게 처리하거나 스마트폰 보안, 사물인터넷(IoT) 등 저전력 암호화에 널리 사용되며, 특히 단 시간에 배치작업을 완료해야 하는 금융분야에 강하다.

 

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

 1) ECB(Electronic Code Book) 모드

  • 블록 암호의 5가지 운영모드 중 가장 간단한 모드이며, 평문은 N개의 n 비트 블록으로 분할하며, 평문의 크기가 블록 크기의 배수가 아니라면, 마지막 블록에 다른 블록과 동일한 크기를 맞추기 위해 패딩(Padding)을 추가한다.
  • ECB모드는 『동일한 평문 블록 모양에서 항상 동일한 암호문 블록이 출력』되기 때문에 보안성이 취약하다.
  • ECB모드는 다수의 암호화와 복호화를 병렬적으로 수행할 수 있으며, 일부 블록만 독립적으로 암호화할 수 있어 데이터베이스에 암호화된 레코드를 저장하거나 암호화된 레코드를 복호화해야 하는 분야에서 널리 사용된다.
  • 또한, 한 블록에서 발생한 오류가 다른 블록에 영향을 전혀 주지 않는다.

 

[그림 4.1.1 ECB(Electronic Code Book) 암호화]
[그림 4.1.2 ECB(Electronic Code Book) 복호화]

 

 

 2) CBC(Cipher Block Chaining) 모드

 

  • 각각의 평문 블록을 암호화되기 전에 이전 암호문 블록과 XOR 되며, 암호화된 블록은 다음 블록을 암호화할 때 사용하기 위하여 메모리에 저장되어야 한다.
  • 첫 번째 블록을 암호화할 때는 이전 암호문 블록이 존재하지 않으므로, 초기 벡터(IV)라고 불리는 허구의 블록이 사용된다.
  • 임의의 암호문 블록을 복호화할 수 있다.
  • 생성되는 각각의 암호문 블록은 현재 평문 블록뿐만 아니라 그 이전의 평문 블록의 영향도 받게 된다.
  • 『CBC 모드 암호화』 시 평문 블록의 한 비트 오류는 그 이후 출력되는 모든 암호문 블록에 영향을 미친다.
  • 『CBC 모드 암호화』의 경우 암호화 방식이 이전 결과에 의존하기 대문에 병렬화가 어렵다.
  • 『CBC 모드 복호화』 시 암호문 블록이 1개 파손된 경우, 암호문 블록의 길이가 바뀐 게 아니라면 파손된 암호문으로 복호화된 평문 블록과 바로 다음 평문 블록에만 영향을 미치고 그 이후는 정상적으로 복호화가 진행된다.
  • 『CBC 모드 복호화』 시 암호문 블록에 비트 누락이 있는 경우 복호화 과정에서 누락된 비트만큼 앞으로 밀리게 되므로 결국 그 이후의 블록들은 전부 단락이 어긋나게 되어 암호문 블록을 전부 복호화할 수 없게 된다.
  • 『CBC 모드 복호화』의 경우 이전 암호화 블록과 XOR 하여 복구할 수 있기 때문에 병렬화가 가능하다.

 

[그림 4.2.1 CBC(Cipher Block Chaining) 암호화]
[그림 4.2.2 CBC(Cipher Block Chaining) 복호화]

 

반응형