[DreamHack] [Crypto] 주작

image.png

image.png

새벽시간이라 경쟁률이 적어서 운 좋게 퍼블.

파일을 열어봤더니, rsa.py와 output.txt 파일 두개가 존재했다.

즉, 암호학 관련 문제인 것을 확신했고, 소스코드를 봐야 알겠지만 rsa 관련 문제라고 생각했다.

아래는 rsa.py 파일 코드이다.

from Cripto.Util.number import getPrime, bytes_to_long
from secret import flag  

p = getPrime(1024)
q = getPrime(1024)
n = p * q           
e = 65537

ct = pow(bytes_to_long(flag), e, int(p) * int(q))
hint = int(p) ^ int(q)
print(f"n: {n}")              
print(f"e: {e}")    
print(f"hint: {hint}")  
print(f"ciphertext: {ct}")     

(문제 파일엔 Cripto > Crypto로 오타가 보인다. 이 부분도 중요한 부분일까?)

즉, 표준 rsa를 그대로 따르고 있다는 것을 알 수 있다.

실제로, output.txt 파일 안에는 n, e, hint, ciphertext 값이 전부 제공된다.

문제는 output.txt안에 들어있는 값들이 이상하다는 점이다.

일반적으로 p, q 값을 구해보려고 해도 주어진 n의 값이 홀수가 아닌 짝수이기 때문에, p, q값을 구할 수가 없다.