본문 바로가기

Library/Cryptography

DES 보조키 생성

준비한 키 K는 64비트이지만, 실제로 사용 가능한 부분은 56비트이다. 나머지 8비트는 패리티 비트이며, 8비트째마다 패리티 비트가 삽입되어 앞선 7비트의 에러 유무를 검사하게 된다.

이 비트 배열에 먼저 PC-1 행렬을 적용하는데, PC-1 행렬에는 8, 16, 24, 32, 40, 48, 56, 64라는 수는 없다. 즉, PC-1 행렬을 적용하면 자연스럽게 패리티 비트는 삭제되어 56비트의 결과만 남게 된다. PC-1 행렬은 다음과 같다.

57  49  41  33  25  17  09  01  58  60  42  34  26  18
10  02  59  51  43  35  27  19  11  03  60  52  44  36
63  55  47  39  31  23  15  07  62  54  46  38  30  22
14  06  61  53  45  37  29  21  13  05  29  20  12  05

PC-1의 적용이 끝났다면, 56비트를 28비트씩 끊어서 28비트 좌우 두 묶음으로 나눈 다음 좌측 순환 이동을 한다. 이것은, 각 비트를 한 자리씩 좌측으로 이동시키며, 마지막에 밀려나간 비트는 첫번째 자리로 다시 들어오는 방식을 이야기하는 것이다. 좌측 순환 이동은 매 라운드마다 달라진다. 그리고, 좌측 순환 이동이 끝났다면 PC-2 행렬을 적용한다. PC-2 행렬을 적용하기 전의 56비트 길이의 키를 Ki라 하자.

PC-2 행렬은 압축 치환 행렬이며, PC-2 행렬이 적용되면 56비트 키는 48비트로 키 길이가 줄어든다. PC-2 행렬에서는 처음 28비트에서 18, 22, 25, 27번째 비트가 없어지면서 자리가 바뀌고, 나머지 28비트에서 35, 38, 43, 54번째 비트가 없어지면서 자리가 바뀐다. PC-2 행렬은 다음과 같다.

14  17  11  24  01  05  03  28  15  06  21  10
23  19  12  04  26  08  16  07  27  20  13  02
41  52  31  37  47  55  30  40  51  45  33  48
44  49  39  56  34  53  46  42  50  36  29  32

PC-2 행렬 적용까지 끝냈다면, 최종적으로 48비트 길이의 보조키 K1을 얻게 되는데, 이것이 첫번째 라운드에 사용되는 키이다. f 연산에서 두번째 라운드에서 사용되는 K2는 Ki를 다시 좌측 순환 이동시킨 다음 PC-2를 적용하여 얻는다. 나머지 보조키 K3, K4, .., K16도 같은 과정을 반복하여 얻는다.


Reference
최병문, 이영환(2007), 암호의 세계, 경문사