개발 보안

보안7

아엠그라운드 2022. 6. 20. 15:36
DES 복호화 과정
암호화 알고리즘을 다시 사용
암호화 과정의 반대 순서로 서브키 입력, ,  16번째 서브키를 첫번째 과정에, 15번째 서브키를 두번째 과정에, …
Double DES
2개의 다른 키로 2번 암호화하여 전송
키의 길이는 112비트
실제 263 (2 * 256  +  n.log2n) 정도의 시간 복잡도로 복호화 가능

Ek1(M) =  X  = Dk2(C)

Triple DES
2개의 키를 사용하여 3번 암호화
현재 Triple DES에 대한 실용적인 공격방법 없음.
DES64 비트 키길이는 공격에 취약
1997NIST(국립표준기술원: National Institute of Standards and Technology )에서 DES를 대치하는 128 비트 대칭키 암호 시스템을 마련하기 위한 계획 발표
요건
3DES 보다 효율적, 안전성
128 비트 이상의 키 길이
15개의 알고리즘이 후보로 채택.  20008Rijndael 알고리즘이 최종적으로 채택.

Cipher (byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])

Begin

  byte state[4,Nb]

  state = in // 평문 블록을 2차원 배열로 변환

 

  addRoundKey(state, w[0, Nb-1])

  for round = 1 step to Nr-1

  SubBytes(state) //바이트 대치 단계

  ShiftRows(state) // 쉬프트 단계

  MixColumns(state) // 열 조합 단계

  AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) // 부분키 덧셈 단계

  end for

  SubBytes(state)

  ShiftRows(state)

  AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])

  out = state // 암호문을 1차원 배열로 변환

end

SubWord 함수는 4바이트를 입력으로 받아 각 바이트에 앞에 설명한 S-Box를 적용시킨 결과를 리턴
RotWord 함수는 4바이트 [b0, b1, b2, b3]를 받아 한번 순환 시프트해서 얻어지는 [b1,b2,b3,b0]를 리턴
Rcon[i]는 워드  [x i-1, {00},{00},{0,0}]  의미. x{02}