-
DES - 2Cryptography - Security/Dreamhack - Basic 2023. 5. 8. 10:26
DES의 과정
DES는 시작할 때 초기순열을, 마지막에는 최종순열을 수행한다
초기순열과 최종순열은 정해진 테이브를 이용하여 64비트 입력을 비트 단위로 전치한다
테이블의 n번째 값이 m일 때, 출력의 n번째 비트는 입력의 m번째 비트가 된다오른쪽 최종순열에서는 아래에서 위로 1씩 증가하는 규칙이 보인다
초기순열과 최종순열은 서로 역관계여서 임의의 64비트 데이터에 초기순열을 적용하고 최종순열을 적용하면 입력값이 그대로 나오게 된다
라운드 함수
라운드 함수에 오른쪽 블록만 입력되므로 입력값의 길이는 32비트가 된다
라운드 함수는 확장순열, 라운드 키 결합, 치환테이블, 고정순열로 이루어져 있다
확장순열과 라운드 키 결합
확장순열은 입력을 비트단위로 전치하는 동시에 전체 길이를 48비트로 확장하는 순열이다
32비트의 입력값을 4비트씩 8개의 부분으로 나누고 테이블을 참조하여 각각 6비트로 확장한다이 과정은 아래의 테이블로 진행하는것만 다를 뿐 초기순열, 최종순열과 같은 방식으로 이루어진다
S-BOX와 고정순열
S-BOX는 라운드 키 결합에서 출력된 48비트 결과값을 32비트로 축소한다
S-BOX는 4개의 행과 16개의 열로 이루어진 표를 사용한다
먼저 입력을 6비트씩 8개로 나눈 뒤 6비트 중에서 처음과 마지막비트로 행을 결정하고 중간의 4개의 비트로 열을 결정한다
행과 열이 결정되면 S-BOX표에서 행과 열을 참조하여 값을 반환한다S-BOX로 길이를 축소하고 나면 고정순열로 다시 비트단위 전치가 이루어진다
키 생성 함수
키 생성 함수는 64비트의 입력을 받아 각 라운드에 필요한 48비트 라운드 키를 생성하는 함수이다
패리티 비트 제거, 쉬프트, 암축순열로 구성되어 있다
패리티 비트 제거( Parity Bit Drop )
입력에서 패리티 비트를 제거하고, 남은 56비트에 순열을 적용하는 과정이다
DES의 비밀키에서 각 바이트의 갖아 오른쪽 비트는 자신이 속한 바이트의 나머지 7비트에 대한 홀수 패리티 비트이다
홀수 패리티 비트란 한 바이트를 이진수로 표현했을 때, 1의 개수가 홀수가 되도록 덧붙인 비트이다패리티 비트는 통신 중에 비트 반전이 일어나지 않았음을 보증하는 역할을 하며
수신한 바이트 중 1의 개수가 짝수인 바이트가 있다면 반전이 일어났다는 의미이므로 수신자는 재전송을 요구한다쉬프트
입력을 왼쪽 28비트와 오른쪽 28비트로 나누어 각각을 1비트나 2비트만큼 왼쪽으로 순환 쉬프트 하는 과정이다
1, 2, 9, 16라운드에서는 1비트, 나머지 라운드에서는 2비트만큼 쉬프트 한다압축순열( Compression P-Box )
56비트의 입력을 48비트 길이로 압축하는 과정이다
Dreamhack - Cryptography 공부내용 정리
관련된 문제는 사이트에 수록되어 있습니다
728x90'Cryptography - Security > Dreamhack - Basic' 카테고리의 다른 글
운영모드 - 1 (0) 2023.05.08 DES - 3 (0) 2023.05.08 DES - 1 (1) 2023.05.08 AES - 2 (0) 2023.05.02 AES - 1 (0) 2023.05.01