CBC 운영모드 iv값 구하는 방법

이 문제에서 P_1 = D(C_1) xor IV
P_2 = D(C_2) xor IV_2 이고 IV_2 = C_1 이므로 P_2 = D(C_2) xor C_1
P_1 xor P_2 = (D(C_1) xor IV) xor (D(C_2) xor C_1) = (IV) xor (D(C_1) xor D(C_2)
xor C_1)
IV = P_1 xor P_2 xor C_1
C_1 = C_2
P_1 xor P_2 = IV xor C_1
IV = P_1 xor P_2 xor C_1
여기서 P_1 = 11 P_2 = 12 를 대입해서 풀려고 하는데 이 방법이 맞나 궁금하고 IV값으로 플래그를 어떻게 복호화 하는지 도 궁금합니다.

#암호학 #운영모드
작성자 정보
답변 1
avatar
Xion
대표 업적 없음
encrypt = lambda pt: AES.new(key, AES.MODE_CBC, key).encrypt(pad(pt, BLOCK_SIZE))
decrypt = lambda ct: unpad(AES.new(key, AES.MODE_CBC, key).decrypt(ct), BLOCK_SIZE)

key와 IV를 동일한 값으로 사용한다는 점을 이용하시면 되겠습니다.

Reference: PyCryptodome Docs

2023.01.16. 10:45
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기