오래 못 할 짓 하지 않기

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

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

[ 컴퓨터 보안 ] 11. Cryptography : AES 2

쫑알bot 2024. 10. 29. 11:51
728x90

 

Original Design

 

저번에 봤던 AES Encryption은

 

각 Round와 Key를 Set로 묶어서 Inverse도 이론상 가능하다.

하지만 그 Round 안에서도 [ sub - shift - mix - round ] 를 뒤집어서 Decrypte한다.

 

순서가 Inv만 붙은 채로 평행하다.

( 사실 반대로 하는 거긴한다. )

 

 

Alternative Design

 

 

 

Subytes ➡️ Shift Rows 를 Inverse할 때는

InvSubByte ➡️ InvShiftRows 로 해도 Inversion이 가능하다. 

 

암호화할 때랑 복호화 할 때 거치는 순서가 같다.

Inv만 붙인 채로 같은 순서로 하면 됨

 

따라서 최종적인 디자인은 아래와 같다

 

 

장점)

MixCoulumns 의 역할을 Key Expansion에 넣을 수 있기 때문에

복잡도(Complexity)를 조금 낮출 수 있다.

 

*근데 Original Design가 메인이니 그걸 보자!!

 

 

 

📌 AES 분석

- 보안적으로 DES에 비해 안전하다.

 

  1) Brute-Force 공격에 안전하다. 

     ➡️ Key size가 더 크기 때문에

 

 

  2) Statistical 공격에 안전하다. 

➡️ 어떤 알파벳이 많이 나왔나..볼 수 있는 것도 없기 때문에 안전함

 

 

  3) Differential and Linear 공격에 안전하다. 

➡️ 어떤 알파벳이 많이 나왔나..볼 수 있는 것도 없기 때문에 안전함

 

 

 

 

AES의 특징이나

DES랑 비교했을 때 어떤 게 다른지 알면 좋을 듯

 


Cryptography Mode

암호화/복호화를 시키는 것을 더 뜯어보자

안에는 여러가지 방법이 있다.

 

 

  • ECB ( Electronic codebook )
  • CBC ( Cipher Block Chaining )
  • CFB ( Cipher Feedback )
  • OFB ( Output Feedback )
  • CTR ( Counter )

 

 

ECB
( Electronic codebook )

 

📌 특징

- Plain text를 여러 Block으로 쪼갠다.

- 항상 같은 Key를 가지고 암호화/복호화를 한다.

- 같은 Key를 사용하기 때문에, 같은 패턴의 Plain text는 암호화해도 같게 나와서 유추가 가능하다.

- 각 Block들은 서로 독립적이기 때문에 모두 패턴이 다르다면, 어느 하나가 털려도 문제없다.

- 한 쪽에서 Error가 발생해도 다른 Block에 영향이 없다.

 

아래는 복호화

 

 

[ 공통으로 분석할 특징 ]

- Key Gen : 공통으로 사용하는 Key

- Propagation (error) : 발생하지 않는다.

- Parrael Processing : 가능하다 (서로 종속되는 게 없음)

 

 


CBC

( Cipher Block Chaining )

 

 

 

 

 

📌 특징

- Message를 여러 Block으로 쪼갠다.

- Encryption은 서로 Linked되어 있다.

- Initialization Vector를 사용한다.

- 각 Block들은 서로 독립적이기 때문에 모두 패턴이 다르다면, 어느 하나가 털려도 문제없다.

 

 

Plain text는 그냥 들어가지 않는다.

➡️ [ #무언가# ] XOR [ Plaintext ] 이런 식으로 들어간다.

* 첫 번째 Block : 무언가 = IV

* 그 외 i 번째 Block : i-1번째 Cipher Text

 

이렇게 해서 나온 값을 Key와 함께 Encryption Operation 한다.

 

 

 

 

[ 공통으로 분석할 특징 ]

- Key Gen : 공통으로 사용하는 Key

- Propagation(error) : 복호화에서만 일어난다. 하지만 i번째에서 error 가 나면, 그 다음 block에만 영향을 끼친다.

- Parrael Processing : 복호화에서만 가능하다  ( 복호화는 그냥 주고 자기할 거 하는데, 암호화는 앞에 애가 다 해야 내가 받아서 시작)

 

 

 


CFB
( Cipher Feedback )

 

암호화 식을 한 번 보자.

 

현재 단계에서의 암호문 =  [ 현재 단계 평문 ] XOR [ E(이전 단계 암호문)

이걸 이해하고 내려가면 보일 듯

 

📌 작동 방식 (암호화)

(처음엔 이전 암호문이 없으니 IV로 시작한다.)

1) IV(OR C(i-1) ) 랑 K를 암호화한다.

2) 그렇게 해서 나오는 값에서 왼쪽에서 s개의 비트들만 가져온다.

3) 평문도 s개의 비트만 골라서 C1을 만든다. ( C1도 s개의 비트만 있음 )

 

그 다음 단계에서 다시 1~3을 반복하는데, IV가 아니라 이전 단계에서 나온 C를 사용한다.

> 똑같은 방법으로 하면 안 되니까 이 s 개의 bits를 오른쪽에서 Shift를 시키면서 넣는다.

https://www.youtube.com/watch?v=upqdlXSM8yE

 

 

📌 특징

- Bit/Byte 단위로 들어오는 데이터 처리에 좋다.

- 복호화에서 Ci는 XOR 연산을 위해서도 사용되고, Encryption 될 때도 사용된다.

 

 

[ 공통으로 분석할 특징 ]

- Key Gen : 언급 없음

- Propagation(error) : Encrypt에서는 Error가 생기면 뒤에도 영향을 준다. 현재 만든 암호가 뒤에 영향을 끼치기 때문이다.

- Parrael Processing : 복호화에서만 가능하다  ( 복호화는 그냥 주고 자기할 거 하면 됨, 암호화는 앞에서 만들어진 결과를 받아야 함)

 


OFB 
( Output Feedback )

 

 

쉽게 펴보면 아래와 같다.

 

 첫 Plain text에 대해서...

- IV랑 Key가 함께 암호화한다. 그렇게 암호화된 값을 A라고 하자

- [ A ] XOR [ Plain Text ]

 

그 이후엔

- A랑 Key가 함께 암호화한다. 그렇게 암호화된 값을 A라고 하자

  A = 앞 Stage에서 E(Key,IV) 한 값, 처음엔 IV랑 하고,

 그 뒤엔 E(Key,E(Key,IV)) 이런 꼴로 계속 덮어 쓰인다.

 

 

 

 

 

 

📌 특징

- CFB와 비슷하지만, Ciphertext는 이전 Bit들에 대해 Independent하다.

- Error Propagation 을 피할 수 있다.

 

 

 

[ 공통으로 분석할 특징 ]

- Key Gen : 공통으로 사용하는 Key

- Propagation(error) : Key와 IV에 대해서만 En/Decrypt하고 넘기기 때문에 text들에 대해서는 관여가 없기에 막힐 일이 없다.

- Parrael Processing : 병렬처리 가능 (Key , IV한 것만 지들끼리 바로바로 순식간에 다 하고 En/Decrpt하면 된다.

 

 

 

 


CTR
( Counter )

 

📌 특징

- 각 Counter마다  E( counter i , Key i ) 로 Encrypt 한다.

- 정말 서로 Independent함 ➡️ Error Propagation 을 피할 수 있다.

- Key랑 Counter 값을 다른 Counter에서 사용하면 안 됨. 재사용 XX

 

 

 

[ 공통으로 분석할 특징 ]

- Key Gen : 매 Count마다 다른 Key

- Propagation(error) : 서로 연결된 것 없이 Independent하기에 문제 없다.

- Parrael Processing : 서로 연결된 것 없이 Independent하기에 병렬처리 가능하다.

 


OFB에는 저 파란색 선이 있지만 Counter는 저걸 없앴다.

 

 

 

 

 

 

 

 

[ 중점적으로 알아야 하는 것 ]

Key Gen

Propagation

Parrael Processing 되는지 보면서 공부하기

 

+ 그림보고 뭔지 알기, 특징 설명하기

 

 

 

 

(출처)

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

 

 

(참고)

https://youtu.be/6l5hhj224f8?si=oOfLeFF7CF-Fp7L2

 

https://www.youtube.com/watch?v=upqdlXSM8yE

(조금 더 자세함)