Block ciphers and DES

CJY·2023년 4월 6일
0

컴퓨터보안

목록 보기
5/11

Symmetric encryption

대칭 암호를 의미한다. 공유 키를 가지고 암호화, 복호화를 할 수 있는 방법을 의미한다.

  • stream cipher
  • block cipher

다음 두 가지 암호화 방법에 대해 알아보자.

Stream ciphers

한번에 1bit 혹은 1byte 단위로 디지털 data stream을 암호화 하는 방법이다. 이전에 알아봤던 autokeyed Vigenere cipher와 Vernam cipher가 stream cipher의 고전적인 방법이라고 할 수 있다. 그리고 이 방법 중에 가장 이상적인 방법이라고 할 수 있는 one-time pad 방식이 있다. one-time pad 방식은 암호화 할 때마다 평문과 같은 길이의 key를 새로 생성하여 사용한다고 했다. 하지만 평문이 길어질수록 key가 무거워지고 그 무거운 key를 안전하게 공유하는 것이 사실 평문을 안전하게 공유하는 방법과 별다른 차이가 없어서 비효율적이라고 했다.

이런 실용적인 이유 때문에 key의 길이를 줄이고 이 key를 input으로 사용한다. algorithmic procedure가 이 key를 난수 생성하듯이 평문의 길이에 맞게 bit-stream을 생성해준다. 이 생성해주는 것을 bit-stream generator라고 한다. 결과적으로 가벼운 key를 공유하지만 bit-stream generator를 통해 송신자와 수신자가 동일한 bit-stream을 얻을 수 있고 이를 통해 암호화 복호화를 해결할 수 있다.

그럼 Block cipher는 무엇인가 ?

Block cipher

이름에서 알 수 있듯 평문을 block단위로 나눠서 암호화 복호화를 거치는 것이다. key를 평문의 길이에 맞게 늘릴 필요가 없다. block size는 64bits 혹은 128bits를 사용하는데 64bits를 사용하는 것이 DES, 128bits를 사용하는 것이 AES이다. 이는 추후에 배워볼 예정이다.

주의할 점은 key의 길이와 평문의 block size가 같을 필요는 없다. 뒤에 block cipher의 암호화 과정을 살펴보면 이해가 간다.

Ceasar cipher나 permutation cipher처럼 block size별로 매핑되는 값을 보내려면 어떨까? 21282^{128}가지의 128bit짜리 데이터를 보내야 한다. (평문은 000..00부터 111..11까지 순서대로 나타낸다면 굳이 보낼 필요 없으니 암호화되는 비트스트림만 보내면 된다.) 그럼 2128×162^{128}\times16bytes를 보내야하는데 거의 불가능에 가깝다. 따라서 평문 block과 key를 넣으면 비문 block이 나올 수 있도록 하는 방법이 필요하다.

Feistel cipher


노란색이 평문 block이고 파란색이 비문 block이다.

  • Substitution
  • Permutation

그림에서 교차로 값을 넘겨주는데 이게 치환과 전치가 합쳐진 과정이다. 각 치환과 전치 한번을 Round라고 표현하는데 여러개의 Round를 거치고 나면 평문이 비문이 되고 같은 비문을 역순으로 round를 거치면 같은 평문이 나오게 된다.

  • diffusion
  • confusion

diffusionconfusion Claude Shannon에 의해 소개된 암호학 시스템이 갖춰야할 기본요소다. 앞서 살펴봤던 통계적 특성이 암호화의 원리를 꿰뚫 수 있는 점을 고려해 착안한 특성들이다. 간단하게 diffusion은 평문의 한 글자가 비문의 여러 글자에 영향을 끼쳐야 하는 것이고, confusion은 최대한 복잡하게 만들어야 한다는 것이다.
Feistel cipher는 이를 만족하고 있다.
Block size는 64bits보다 128bits가 최근에 사용되고 있다. 그게 AES이고 이 뒤로 계속 배울 내용이다.
Key size는 64bits 아래인 56bits가 많이 쓰였는데 (DES에서) 최근에는 128bits가 많이 쓰인다고 한다.
Round는 많을수록 안전해지는데 보통 16개까지 쓰인다고 한다.

DES

Data Encryption Standard

1977년 National Institute of Standards and Technology(NIST)에서 이슈화 됐다. 알고리즘 자체는 Data Encryption Algorithm(DEA)라고 불린다. 보통 64-bit blocks를 56-bit key로 암호화 됐다.

AES

Advanced Encryption standard
이 내용은 뒤에서 배울 것이며 이 암호문을 해독하기 위해서는 상당한 시간이 소요된다. 따라서 Computationally secure한 암호법이다.

정리

앞에서 배운 고전 암호학에서 치환과 전치에 대해 배울 때 이 둘을 섞어 사용하면 복잡성이 높아질 것이라 생각했는데 역시나 1977년도부터 혹은 이전부터 사용된 것 같다. DES의 Round함수에 대해 깊게 알아보지는 않았지만 앞으로 배울 AES에 대해 더 관심이 간다. AES를 배우기 전에 우선 AES에서 자주 사용되는 수학 내용을 먼저 배울 예정이다.

profile
열심히 성장 중인 백엔드

0개의 댓글