기본 콘텐츠로 건너뛰기

2017 암호경진대회 2번

원본과 동일한 서명값을 만들어 내는 메시지를 구하는 문제입니다.

48bit의 해쉬함수가 사용되는데 함수를 분석해보면 16bit의 값만을 갖는 걸을 알 수 있습니다.


답안 :
0xf7a5f9a3f7a1
0x823e8c38823a
0xe58deb8be589

풀이 :
위조 하고자 하는 메시지를 다음과 같이 두었다. “Do you hate cryptology???????? Yes I do”
동일한 서명을 갖게 하기 위해서는 메시지의 빨간색 부분의 값을 조작하여 원본 메시지와 같은 값이 나오게 하면 그 이후의 문자열은 원본 메시지와 동일함으로 일치하는 서명이 나올 것으로 생각했다가능한 메시지의 값을 구하기 위해함수 F를 분석하였다분석 결과 함수 F는 48비트를 입력받아 48비트를 출력하지만구조상 16비트의 출력을 갖는 것을 확인하였다. hi+1 = X16hiMi로 계산되기 때문에, Mi를 제외한 나머지 항을 이항하여 Mi를 구하고그 값을 메시지에 넣어 서명이 동일한지 검증해봄으로써 구할 수 있었다

댓글

이 블로그의 인기 게시물

2017 암호경진대회 4번

가장 쉽게 풀었죠. 30분도 안걸렸던거 같네요. 프로그램을 통해서 암호문의 유효성이 검증되는데요, 역공학을 통해서 암호문을 쉽게 찾을 수 있습니다. 답안  : Snow White and the Seven Dwarfs!. 풀이  : Oracle 함수가  CRC 를 계산하기 위해서는 중간에 평문이 복구될 것으로 보였다 .  제공하는  dll 을 이용하여  Oracle 함수의 입력으로 암호문을 넣은 프로그램을 작성하였다 . IDA 와  Immunity Debugger 를 이용해 프로그램을 역공학하여 얻을 수 있었다 .