문제를 해결하는 방향이 있을까요? (?)

질문 제목이 조금 이상해서 죄송합니다만 저도 제가 문제를 풀면서
어디가 심각하게 막히는지를 느낌으로는 알 것 같으면서도 제대로 글로 쓰기가 어려워서 이렇게라도
쓰게 되었다는 점 양해 부탁드립니다ㅠㅠ;;

문제 코드를 보니 g = 2로 정해져 있고,
p는 서버에 접속하면 매번 랜덤하게 나오는 1024비트짜리 소수로 정해지는 것을 확인했습니다.
또한 해당 Diffie-hellman 교환 과정을 통해 키를 교환한 다음
플래그를 반쪽씩 나누어서 해당 키를 가지고 AES 암호화를 하게 되는데
이때 성공적으로 키를 훔쳤다면 그 키를 이용해 AES 복호화를 해서 플래그를 맞추는 것까지 짐작했습니다.
(맞게 짐작했는지 확신은 안 가지만, 제공된 Python 코드에서 우연히 플래그에
임의의 문자열을 넣고 복호화 과정까지 추가해서 자체적으로 돌릴 수 있게 약간 고치는 과정에서 알게 되었습니다.)

문제 내용은 Alice - Bob 사이에 끼어서 키 교환 과정을 공격하는건데,
유튜브에 돌아다니는 다른 교수님 영상도 쭉 보고 해서 이론적으로는 이해가 가는 것 같지만
실제로 문제를 풀어보니 무언가가 자꾸 막히는 것 같습니다.

그렇다면 이 문제는 직접 Alice와 Bob사이에서 키 교환 과정을 공격하는 과정에서 Alice~해커, 해커~Bob 사이에 만들어지는
키 두개를 직접 계산한 다음 "They are sharing the part of flag"... 에서 주어진 값을 해당 키를 이용해
AES 복호화를 시행해서 키를 얻어내는 건가요?

실제로 직접 배운대로 계산해서 제공받은 Python파일을 약간 변형해서 시도를 해 보긴 했지만
Padding error 등 여러가지 에러가 뜨거나 키 값이 초과되었다는 등 별별 에러가 다 떠서
혹시 제가 아예 문제 요점을 잘못 파악하고 있거나
접근하는 방법이 잘못되었는지 궁금합니다..;

어떤 방향(?)으로 문제를 풀어가면 좋을까요?

(질문을 최대한 나름대로 정리해서 썼지만 그래도 횡설수설한점 양해 부탁드립니다..)

#crypto
작성자 정보
답변 2
2dedce
워게임 고인물

서로 교환할 때 키를 훔쳐보는 것 뿐만아니라 중간에서 바꿀 수도 있습니다. 나중에 키교환이 끝나면 서로 암호화된 플래그를 교환하므로 중간에 통신내용을 어떻게 바꾸어야 키를 알아낼지 고민해봅시다.

2021.07.18. 22:33

2dedce님 조언 참고하여 오늘 문제 해결에 성공했습니다! ✅
(감사합니다)

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