선릉역 1번 출구
DES 본문
DES(data encryption standard)
- 키 길이: 56bit
- 8Byte -> 한 블록으로 하는 블록 암호임
- 초기 순열, 최종 순열, 페이스텔(feistel) 구조의 16라운드, 각 라운드에 사용되는 48bit의 키를 생성하는 키 생성 함수로 구성되어 있음
- 혼돈(암호문에서 평문의 특성을 알아내기 힘든 성질)을 만족하기 위해 치환을, 확산 성질을 만족하기 위해 순열을 사용함
- 치환과 순열은 단순한 연산이기 때문에 여러 번 교차해서 반복해 적용함
- 곱 암호: 단순한 연산들로 한 라운드로 구성하고 각 라운드를 여러 번 반복해 암호학적 안전성을 확보하는 것
페이스텔 구조
- 입력으로 들어온 블록을 동일한 길이의 왼쪽 블록 L과 오른쪽 블록 R로 나눔
- 각 라운드마다 오른쪽 블록은 다음 라운드의 왼쪽 블록으로 입력됨
- 왼쪽 블록은 오른쪽 블록에 라운드 함수 F를 적용한 결과와 xor되어 다음 라운드의 오른쪽 블록으로 입력됨
페이스텔 특징
- 블록 암호는 평문을 복호화 할 수 있어야 함 -> 일반적으로 암호화 구성하는 각 함수들에 역함수가 존재함
- F가 복호화 과정에서 xor로 상쇄됨 -> 역함수가 존재하지 않아도 됨
- 암호화와 복호화의 구조가 동일해 암호화에 사용한 라운드 키를 역순으로 입력하면 됨
라운드 함수
- 확장 순열(expansion P-Box)
- 입력을 비트 단위로 전치하는 동시에, 전체 길이를 48bit로 확장함
- 32bit를 4bit씩 8개로 나누고 6bit로 확장함
- 라운드 키 결합(XOR)
- 치환 테이블(S-Box)
- 라운드 키 결합에서 출력된 48bit 결과 값을 32bit로 축소함
- 6bit씩 8개로 나누고 이 중 첫번째 bit와 마지막 bit를 가지고 표에서 행과 열을 참조해 값을 반환함
- 고정 순열(Straight P-Box)
- S-Box에서 길이를 축소하고 나면 고정 순열을 통해 비트 단위 전치가 이뤄짐
키 생성 함수
- 64bit의 입력을 받아 각 라운드에 필요한 48bit round 키를 생성하는 함수
- 패리티 비트 제거(Parity Bit Drop)
- 패리티 비트를 제거하고 남은 56bit에 순열을 적용
- DES의 비밀키에서 각 바이트의 가장 오른쪽 비트는 자신이 속한 바이트의 나머지 7비트에 대한 홀수 패리티 비트임
- 쉬프트(shift)
- 입력을 왼쪽 28bit와 오른쪽 28bit로 나누어 각각을 1bit나 2bit만큼 왼쪽으로 순환 쉬프트함
- 압축 순열(Compression P-Box)
- 56bit -> 48bit의 길이로 압축하는 과정
'Computer > Cryptology' 카테고리의 다른 글
암호학 (1) | 2023.10.12 |
---|---|
AES (0) | 2023.02.06 |
현대 암호 (0) | 2023.02.06 |
고전 암호 (0) | 2023.02.06 |
Cryptology 도입 (0) | 2023.02.06 |
Comments