암호_

SEED

정지홍 2024. 9. 20. 17:32

KISA 암호이용활성화 - 국산 암호기술 - SEED

 

SEED 알고리즘이란?

  • 1999년에 개발된 우리나라의 128비트 블록 암호 알고리즘
  • 피어스텔 구조
    • 라운드 함수에 관계없이 역변환 가능(암호화 복호화 하는 과정이 같다.)
    • 블록간 완전한 확산 가능 및 수행 속도가 빠르고, sw/hw구현이 용이
  • 전수조사를 피하기 위한 128비트의 블록 크기 및 키 크기 사용.
    • 단, 블록 암호 알고리즘의 구조상 취약점인 차분해독법 및 선형 해독법에 안전해야함.
    • 차분해독법 ( differential cryptanalysis , DC)
    • 선형해독법 ( Linear cryptanalysis , LC )

 


SEED의 전체적인 구조

  • 데이터를 8,16,32 비트 단위로 처리한다.
  • 블록 암호 방식이며, 입출력 및 키의 크기는 128비트
  • 라운드수는 16라운드
  • 피어스텔구조
  • 연산은 xor과 2^32의 모듈러 연산만 사용. ( 두 값의 합을 32비트 내에서 유지하기 위함.)
  • 64비트의 16개의 라운드키가 생성됨.

SEED의 F함수

  • 입력받은 데이터를 섞고 변형하는데 사용.
  • 이는 각 라운드에서 암호화 과정을 복잡하게 만들어서 보안성을 높임.
  • 64비트의 피어스텔 암호 알고리즘으로 구성됨.
  • 입력값 : 32비트의 2개의 블록을 입력으로 받아서, 32비트의 2개의 블록을 출력
    • 즉, 64비트( C , D ) 와 64비트 키 Ki( =( K[i,0] , K[i,1] ) ) 를 입력으로 받음.
    • input block ( C,D )  => output block ( C' , D' )

각각은 내부적으로 다음과 같은 연산을 거쳐서 출력된다.
C'이 연산되는 과정
D'의 연산과정


SEED의 초기의 G함수

  • 두개의 8비트 s-box를 사용
  • 입력의 각 바이트를 비션형 변환 후, 그 결과 32비트를 4비트 왼쪽 회전 이동 후 출력
  • 즉, 다시 말하면....


G-함수의 구조도


SEED의 수정된 G함수

  • 기존의 G함수에서 효율성의 저하 없이 안전성를 강화하고자 수정되었다.
  • 초기의 G함수는 충분한 diffusion(확산)을 주지 못하였다.
    • 이유는 단순히 4비트를 회전 이동만 시켜서 diffusion을 못준거임.
  • 그래서 G함수에서 회전 이동 대신에 다른 permutation을 사용.
    • 즉, s-box의 출력들을 적절한 permutation으로 섞어주는것.
    • 그래서 여기서는 xor을 사용할것이다.

수정된 G함수의 과정....
다음과 같이 G함수 구현을 위해 확장 SS-box를 이렇게 사용할 수 있음.

 


키 생성 알고리즘

  • 1. 128비트의 암호키를 64비트씩 좌우 2개로 나눈다.
  • 2. 이들을 교대로 8비트식 좌/우로 회전 시킨다.
  • 3. 결과의 4워드들에 대해서 간단한 산술연산 및 G함수를 적용해서 라운드 키 생성
  • ===> SEED의 키 생성 알고리즘은 제한된 환경에서의 효율성을 위해서, 암호화나 복호화시 라운드 키를 간단히 계산할 수 있게 설계함.

키 생성 과정
키 생성 구조도


s-box 1 , s-box2