AES
많은 플랫폼위에서 속도 그리고 코드압축성이 좋아 효율적인 암호방식. 벨기에의 2명의 암호학자, 존 대먼과, 빈센트 라이먼이 만든 암호화 알고리즘이다.
프로세스
State - AddRoundKey - {SubBytes - ShiftRows - MixColumns - AddRoundKey}:9 - SubBytes - ShiftRows - AddRoundKey
AddRoundKey
- 라운드 키는 각 State에 bitwise XOR로 적용한다.
- 사이퍼 키로부터 키 스케줄러를 통해 라운드 키 생성
- 라운드 키의 길이는 평문 블록길이와 같다.
SubBytes
- 각 바이트 단위 요소에 적용되는 비선형 대체 연산
ShiftRows
- 첫 번째 행은 회전하지 않고, 두 번째 행은 좌로 1byte, 세 번째 행은 좌로 2bytes, 네 번째 행은 좌로 3bytes만큼 이동한다.
MixColumns
- State의 각 열에 대하여 행렬곱셈을 수행한다.
a0 * [2 3 1 1]
= r0
a1 * [1 2 3 1]
= r1
a2 * [1 1 2 3]
= r2
a3 * [3 1 1 2]
= r3
여기서 r값들을 구하려면, 이런 식으로 해야한다.
r0 = (a0 * 2) + (a1 * 3) + (a2 * 1) + (a3 * 1).
r1 = (a0 * 1) + (a1 * 2) + (a2 * 3) + (a3 * 1).
r2 = (a0 * 1) + (a1 * 1) + (a2 * 2) + (a3 * 3).
r3 = (a0 * 3) + (a1 * 1) + (a2 * 1) + (a3 * 2).
여기서의 곱셈은 Exclusive-OR(XOR) 이다.
출처: https://namu.wiki/w/AES [나무위키]
'좌뇌 > 보안' 카테고리의 다른 글
DES(데이터 암호화 표준) (0) | 2018.04.09 |
---|---|
블록 암호 기법(Block cipher) (0) | 2018.04.09 |