Oracle Padding 실습을 따라해보자. 아래 경로 참조

 

아래 글에 의하면(그대로 똑같이 작성함)

 

1. Oracle Padding Attack 으로 Cipher text 의 Intermediary Value 값 (After block cipher decryption) 확인

2. Intermediary Value[N] XOR Cipher text[N -1] => Plain text[N]

 

[Oracle Padding 구조적 문제]

Oracle Padding Attack은 다음과 같은 CBC Mode 의 두가지 구조적인 문제 때문에 발생한다.

 

첫 번째 문제 : Plain text 의 마지막 블록에는 패딩이 존재한다.

- 블록 암호화의 특성상 블록 단위를 맞추어 주어야 한다.

- 블록 단위를 맞추기 위해 패딩을 삽입하며, 패딩과 데이터를 구분할 수 있게 패딩에는 패딩 길이를 표시한다.

- 만약 패딩 길이 값이 정확하지 않으면 에러가 발생한다.

 

[CBC Mode Decryption]

- Intermediary Value[N] (After block cipher decryption) XOR Cipher text[N-1] 값

(처음 단계에서는 Initial Vector 값) => plain text[N]

 

[Oracle Padding Attack]

어떻게 Intermediary Value 값을 구할 수 있을까?

 

1. Cipher text [N-1][15] 값 찾기

여기서 찾으려는 값은 기존의 ciphertext[N-1] 값 대신 패딩을 만족시키는 값으로 intermediary 값을 찾기 위한

임시 값이다. 우리는 ciphertext[N-1][15] 값을 임의로 넣어가며 공격하고, 서버에서 에러가 발생하지 않는 값을 찾아내면 된다. 에러가 발생하지 않았다는 것은 plain text의 마지막 블록의 패딩이 딱 들어 맞는다는 뜻이므로

맨 마지막 한 바이트(cipher text[N-1][15])만 256(0x00 ~ 0xFF) 무작위 공격을 수행하여 에러가 발생하지 않는

ciphertext[N-1][15] 값을 찾는다.

 

2. intermediary value[N][15] 값 찾기

찾은 ciphertext[N-1][15] 값을 plaintext[N][15] (0x01)과 XOR 하면 intermediary value[N][15] 값이 나온다.

 

3. ciphertext[N-1][14] 값 찾기 + intermediary value[N][14] 값 찾기

ciphertext[N-1][14] 값을 구하기 위해서는 패딩이 두개 들어가야 하므로, 먼저 위에서 구한 intermediary value[N][15] 값과 늘어난 패딩 길이의 값인 0x02 와 XOR 연산한 값을 ciphertext[N-1][15] 값에 넣어주고 ciphertext[N-1][15] 값에 넣어주고 ciphertext[N-1][14] 값에 무작위 공격을 수행해야 한다.

예를 들어 2번의 과정으로 intermediary value[N-1][15] 값에 0x35 (0x37 XOR 0x02) 값을 고정한 후 ciphertext[N-1][14] 값에 무작위 공격을 수행하여 에러가 발생하지 않는 ciphertext [N-1][14] 값을 찾는다.

이후 찾은 ciphertext[N-1][14] 값과 plaintext[N][14] (0x02) 값을 XOR 하면 intermediary value [N][14] 값이다.

 

4. 패딩 길이를 하나씩 늘려가며 3번 과정을 반복한다.

5. 4번 과정으로 얻은 intermediary value[N] 값과 원래의 cipher text[N-1] 값을 XOR 하여 Plain text[N] 값을 얻을 수 있다.

 

아... 이해가.... 계속 해봐야겠다...

 

https://sang-gamja.tistory.com/76

 

Oracle Padding Attack[이론편]

Oracle Padding Attack oracle padding attack에서 오라클은 흔히 알려진 데이터베이스의 이름으로 쓰여진 것이 아니라 "응답에 대한 판독" 과 같은 뜻으로 쓰였다. 즉 padding이 올바르게 되었는지 여부에 따라..

sang-gamja.tistory.com

https://m.blog.naver.com/PostView.nhn?blogId=kby88power&logNo=221057968454&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

Oracle Padding Attack

오라클 패딩 공격 실습 사이트http://x.ozetta.net/example.phpPadding Oracle ExamplePKCS#7 Padd...

blog.naver.com

 

 

 

 

'암호학 & 알고리즘' 카테고리의 다른 글

HMAC란?  (0) 2021.07.27
백준 분해합 C  (0) 2021.01.02
Poodle Attack 및 Oracle Padding 건  (0) 2020.06.24
블로그 이미지

wtdsoul

,