- 앞에 포스팅한 DES암호의 암·복호화 과정을 참고해주시기 바랍니다.
DES암호는 안전하기로 유명하고 그렇기에 여러 학자들이 특성을 찾으려 노력합니다. DES의 특성중 하나는 보수특성(Complementation property)입니다. 보수특성은 '암호문이 어떤 평문과 키 암호문의 보수 이면 해당 암호문을 알 수 있다.' 입니다.
- '보수는 수를 보충한다' 라는 의미를 갖고 있고 컴퓨터 시스템은 2진수를 이용하기 때문에 최대 숫자는 1입니다. 즉 0에 대한 1의 보수는 1, 1에 대한 1의 보수는 0이 됩니다. 'n 이라는 숫자가 m 이 되기 위해 필요한 숫자는 몇인가?' 입니다. 그렇기 때문에 2진수의 특성상 '0101 1111' 이라는 수가 이다면 해당 수를 반대로 뒤집어 주기만 하면 됩니다. '1010 0000'으로 말이죠.
DES 의 보수 특성은 다음과 같습니다.
- 평문 M = 77(0111 0111), K = F0(1111 0000) 일 때 C = 4A(0100 1010) 이었다면,
- 평문 M = 88(1000 1000), K = 0F(0000 1111) 일 때 C = B5(1011 0101) 이다.
- 해당 보수특성을 이용하면 선택 평문공격(Chosen-Plaintext Attack)에 필요한 시간을 반으로 줄일 수 있습니다.
암호 해독에 대한 공격자 유형은 다음 포스팅에 설명되어 있습니다.
- 평문의 보수 + 키의 보수 = 암호문의 보수
보수 특성을 이용한 공격 방법은 다음과 같습니다.
- 공격자는 다음 2개의 암호문을 생성합니다. '공격자가 마음대로 고른 평문을 암호화', '해당 평문의 보수를 암호화' 키를 마음대로 골라 암호화를 했을 때 미리 해놓은 암호문과 똑같으면 키를 잘 찍어낸 것입니다. 보수 특성을 이용하지 않고 정상적인 방법으로 암호화 했을 때 순서는 임의의 키 K를 이용하여 M(평문)을 암호화한 뒤 암호문 C와 비교하는 것입니다. 56비트의 키를 이용하기 때문에 최악의 경우 2^56번 시도를 해야합니다. 하지만 보수특성을 이용하여 공격을 시도한다면 임의의 키 K를 이용하여 암호화한 결과가 C_(C의보수)라면 키는 K의 보수가 됩니다. 즉 암호화 연산 1번으로 2개의 키를 검증할 수 있습니다. 정리하자면 해당 암호문의 미리 정해놓은 암호문의 보수와 같다면 그 암호문의 키의 보수가 키값이됩니다. 해당 보수특성을 사용하면 해독시간을 절반으로 줄일 수 있지만 그렇다고 2^56번의 공격시도가 2^28번이 되는 것이 절대 아닙니다. 2^56 / 2 가 되므로 2^55번의 공격시도를 최악의 경우 해야됩니다.
DES의 특성 중 취약키(Weak Keys)가 있습니다. DES는 4개의 취약한 키를 갖고있고 여기서 취약키는 암호화 연산과 복호화 연산이 동일한 값을 갖는 경우입니다. 즉 모든 서브키가 같습니다. 취약키는 다음과 같습니다.
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 |
F E F E F E F E F E F E F E F E |
1 F 1 F 1 F 1 F 0 E 0 E 0 E 0 E |
E 0 E 0 E 0 E 0 F 1 F 1 F 1 F 1 |
<취약키>
또한 DES는 6개의 쌍으로 구성된 유사 취약키(Semi-Weak Keys)를 갖습니다. 유사 취약키는 서브키가 두 개의 키로만 구성되는 경우입니다. 유사 취약키는 다음과 같습니다.
0 1 1 F 0 1 1 F 0 1 0 E 0 1 0 E |
1 F 0 1 1 F 0 1 0 E 0 1 0 E 0 1 |
0 1 E 0 0 1 E 0 0 1 F 1 0 1 F 1 |
E 0 0 1 E 0 0 1 F 1 0 1 F 1 0 1 |
0 1 F E 0 1 F E 0 1 F E 0 1 F E |
F E 0 1 F E 0 1 F E 0 1 F E 0 1 |
1 F E 0 1 F E 0 0 E F 1 0 E F 1 |
E 0 1 F E 0 1 F F 1 0 E F 1 0 E |
1 F F E 1 F F E 0 E F E 0 E F E |
F E 1 F F E 1 F F E 0 E F E 0 E |
E 0 F E E 0 F E F 1 F E F 1 F E |
F E E 0 F E E 0 F E F 1 F E F 1 |
<유사 취약키>
DES Cracker - 연산속도 : 10^6 ops/㎲ (2004년 대략 , $250,000)
- DES암호를 해독하기위해 만들어진 컴퓨터입니다.
'Crypto' 카테고리의 다른 글
비밀키 암호시스템 MOO(Modes Of Operation) (0) | 2020.03.09 |
---|---|
3(Triple)-DES [Crypto] (0) | 2020.03.05 |
DES 암호 [Crypto] (0) | 2020.02.28 |
암호의 해독 [Crypto] (0) | 2020.02.23 |
Visual Cryptography [Crypto] (0) | 2020.02.23 |