오래 못 할 짓 하지 않기

[ 컴퓨터 보안 ] 10. Cryptography : AES 본문

3학년 2학기/컴퓨터 보안(Computer Security)

[ 컴퓨터 보안 ] 10. Cryptography : AES

쫑알bot 2024. 10. 26. 15:17
728x90

 

 

AES 암호화 방식은 다음과 같다.

 

128 혹은 192 , 256 bits key를 사용해서

128 bits round key를 만든다. (DES보다 Key bits 수가 많다.)

 

 📌 Units

 

1. Block to state

Plaintext를 State로 바꾸는 방법은 다음과 같다.

각각의 문자에 대해서 Hex 값이 있다. 

이를 Matrix에 넣어서 State 값으로 가지고 있는다.

 

해당 State 를 위해 Transformation 단계를 거치는데

- Substitution (대체)

- Permutation (재배열) = shift rows

- Mixing (순서 섞기)

- Key-adding 

 

방식이 있다.

 

 

 

Transformation 

 

 

📌 Substitution 

 

 

(a,b) 에 있는 문자열에 대응하는

(c,d)라는 문자열이 존재한다.

 

각각에 매핑되는 정보에 대한 Table이 존재하고

이를 통해서 서로 왔다갔다 할 수 있다.

= Inverse 가능

 

코드 이해해보기...

 

 


📌 Permutation

값 자체를 바꾸는거다.

 

Plaint text를 State로 바꾼 상태에서

 

* Encryption : 왼쪽으로 Shift

* Decryption : 오른쪽으로 Shift
 

1번 줄은  1칸 이동

2번 줄은 2칸 이동

...

n번 줄은 n칸 이동

 

= Inverse 가능

 

 

📌 Mixing

 

 

계산하긴 귀찮고 이렇게 작동한다 정도만 알면 된다.

 

 

State에서 하나의 Column  * Constant matrix를 곱한 값

= 해당 State의 Entrypted Column

 

= Inverse 가능

= Diffusiton 효과도 있다. 

   ➡️ 현재 (bit에) 바뀐 값들이 Round에서 모든 곳에 (bit에) 영향을 끼친다.

 

 

 

📌 Key Adding

 

 

[ 암호화 화려고 하는 Text 의 Column ]  XOR  [ 해당 Round에 해당하는 Key ]

= 암호문 column

 

 

XOR Operation이니

 

= Inverse 가능하다.

 

 

 

📌 전체적인 흐름

 

 


 Key Expansion 

- 각 Round마다 쓰이는 Key가 다르다 

 

- Preround + N번 = N+1 번 암호화를 거친다 

 

+ 4개의 word가 하나의 Key가 되고, 1word 에 32bits 이므로 

   하나의 key는 128bits가 된다.

 

 

- 작동 방식

 

 

우선 암호화 Key에서 4bytes (= 32bits ) 단위로 나누고

하나의 word를 구성한다.

 

그렇게 하나의 word를 가져서 나온 w0~w3이 하나의 Key 가 된다.

 

➡️ 그 다음 Round에서는 [ 이전 Round의 마지막 word ] 를 가지고

RotWord + SubWord + Round Constat(XOR) 연산을 거친다. 

 

그렇게 나온 값을 t4라고 할 때

[ w0 ]  XOR [ t4 ] =   w4 를 만들고

해당 라운드에서는 이제 [ w4 ]  XOR [ w1 ]로 돌아가며 작동한다.  

 

 

✚ RotWord

: Shift Rows Operation과 비슷하다.

 

차이점이라고 하면 모든 Row를 이동시키는 게 아니라 하나의 Row만 민다.

 

 

 

✚ SubWord

: Subytes Operationr과 비슷하다.

 

차이점은 4bytes만 섞음 (하나의 Word만 섞나봄)

 

 

 

 

 

 

예제

 

 

W3를 가지고 W4를 구해보자

 


w3 = 13 AA 54 87

-> rotword = AA 54 86 13



-> subword = 그 테이블 보고 하기

                    = AC 20 44 7D 


-> round costant = 010000000 (1번 Round니까, PDF 30페이지에 있음)
                             = AD 20 44 7D

 

 

 

 


잡다하지만 중요한 AES 특징

 

Key에서 하나의 Key값만 달라도, Round를 돌 때마다 Bit difference는 점점 커진다.

 

 

 

 

Key를 섞는 매커니즘이 더 복잡하고 길기 때문에

Weak Key를 사용했다고 해도 Round를 계속 돌리기 때문에 그닥 문제가 생기진 않는다.

 

 

 

 

(출처)

 

- 한동대학교 고윤민교수님 - 컴퓨터 보안

 

- 아래 블로그

https://blog.naver.com/darkadooa/221481767118