선릉역 1번 출구

DES 본문

Computer/Cryptology

DES

choideu 2023. 2. 6. 16:49

DES(data encryption standard)

  • 키 길이: 56bit
  • 8Byte -> 한 블록으로 하는 블록 암호임
  • 초기 순열, 최종 순열, 페이스텔(feistel) 구조의 16라운드, 각 라운드에 사용되는 48bit의 키를 생성하는 키 생성 함수로 구성되어 있음

https://learn.dreamhack.io/72#2

  • 혼돈(암호문에서 평문의 특성을 알아내기 힘든 성질)을 만족하기 위해 치환을, 확산 성질을 만족하기 위해 순열을 사용함
  • 치환과 순열은 단순한 연산이기 때문에 여러 번 교차해서 반복해 적용함
  • 곱 암호: 단순한 연산들로 한 라운드로 구성하고 각 라운드를 여러 번 반복해 암호학적 안전성을 확보하는 것

페이스텔 구조

  • 입력으로 들어온 블록을 동일한 길이의 왼쪽 블록 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에서 길이를 축소하고 나면 고정 순열을 통해 비트 단위 전치가 이뤄짐

https://learn.dreamhack.io/72#8

키 생성 함수

  • 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