대칭키 암호화 기법은 암호화/복호화에 같은 키를 사용하는 기법이다.
Symmetric encryption, conventional encryption, single-key encryption, secret-key encryption 모두 대칭 암호키를 나타내는 말이다. 상황에 따라서 혼용이 가능하다.
대칭키 암호화를 사용하기 위해서는 두 가지 필수사항이 존재한다.
강력한 암호화 알고리즘 :
Known algorithm and a number of ciphertext (Weak requirement)
Known algorithm and a number of ciphertext and plaintext pair (Strong requirement)
비밀스러운 키 공유 :
수신자와 발신자 모두 비밀 키의 복제본을 수신받아야하고 이 과정에서 키는 매우 안전하게 보관되어야한다.
비밀 키가 공개되면 그 키로 암호화된 모든 연결은 복호화가 가능해진다.
rkwkd
1975년에 IBM에서 개발하고 1979년에 미국 NBS(National Bureau of Standards, 현 NIST)가 국가 표준 암호 알고리즘으로 지정한 대칭키 암호 알고리즘.
DES를 진행하다보면 R1=L0⊕f(R0,K1)이란 식으로 R1을 구하는 것을 볼 수 있다.
이때 사용하는 f함수의 작동 방법은 아래와 같다.
S-Box를 통해 48비트 크기의 암호화 진행중인 무언가를 32비트의 무언가로 치환시키는데 사용하는 알고리즘이다.
S-Box에 들어가기 직전 48비트는 각각 6비트씩 8개로 쪼개지게되고 아래 그림과 같은 방식으로 4비트로 치환된다.
치환된 데이터를 합치면 4비트씩 8개 총 32비트로 치환되게된다.
공유하는 64비트의 대칭 키를 기반으로 16개의 48비트인 sub-key(라운드 키)를 만드는 알고리즘이다.
64비트의 대칭 키에서 키 전치(PC 1)을 이용하여 8비트의 Parity 비트를 제거하고 56비트의 실질적인 키를 이용한다. 8, 16, 24, 32, 40, 48, 56, 64번째 비트 제거
이렇게 남은 56비트를 왼쪽, 오른쪽 각각 28비트씩 따로 저장하고 각 라운드마다 스케줄에 따라 지정된 비트를 좌측으로 쉬프트하고 다시 합친다. (1,2,9,16 번째는 1번, 나머지는 2번 쉬프트한다.)
축약 전치(PC 2)를 이용하여 기존 64비트의 재결합된 비밀 키를 48비트로 전치한다.
9, 18, 22, 25, 35, 38, 43, 54번째 비트 제거
이런 방식을 16번 반복하여 16개의 48비트 라운드 키를 만들어 낸다.
IBM에서 만든 Lucifer를 NSA에서 개량해서 만든 S-Box가 DES의 전신인데 이 DES의 S-Box에 암호학에서 흔하게 사용하는 'nothing up my sleeve number'를 사용하지 않고 근본없는 이상한 숫자를 집어넣었다. 이걸 계기로 NSA가 DES에 백도어를 설치했다는 의심을 하였지만 지금까지 연구한 바로는 취약점이 발견되지 않았다. 하지만 가능성이 0은 아니다.
DES에 가장 효과적인 공격 방법은 브루트 포싱이다.
요즘 컴퓨팅 성능의 비약적인 발전으로 64비트의 DES는 매우 취약해졌다. 실제로 1998년 7월, EFF(Electronic Frontier Foundation)에서 DES 암호화가 적용된 암호를 22시간 15분만에 해독했다고 발표를 했다.
DES의 취약점에서 볼 수 있듯이 DES는 더 이상 안전한 암호화 알고리즘이 아니게 되었고 차세대 암호화 알고리즘의 필요성이 대두되었다.
이에 따라서 NIST는 DES의 취약점이 개선된 새로운 암호화 알고리즘인 AES의 공모를 받게되었다.
하지만 암호화 알고리즘은 취약점에 대한 충분한 검증이 있어야하기 때문에 무턱되고 새로운 암호화 표준으로 새로운 알고리즘을 쓰기에는 너무 큰 리스크가 있었다. 그래서 NIST는 DES와 AES 사이의 간극을 채우기위해 기존에 이미 검증된 DES를 3번 이용해 암호화 하는 Triple DES 방식을 발표하였고 사용을 권고하였다.
3DES의 암호화 방식을 식으로 나타내면 CT = E(D(E(PT, K1), K2), K3)이다.
기존에 사용하던 DES 알고리즘을 이용하므로 큰 변화가 없어 편하기는 하지만 결과적으론 기존에 1번 돌리던 알고리즘을 3번 돌리는 것으로 처리속도 문제(성능)의 하락폭이 3배에 근접했다.
그리고 실시간으로 진화하는 컴퓨터의 연산 속도를 따라가기에는 태생이 DES이기 때문에 역부족이였다. 따라서 Triple DES는 AES가 정착하기 전까지 DES에서 벗어나기 위한 하나의 징검다리의 의미로 접근하면 편할것이다.