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

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

답안 :

①0xf7a5f9a3f7a1 ②0x823e8c38823a ③0xe58deb8be589

풀이 :

위조 하고자 하는 메시지를 다음과 같이 두었다. “Do you hate cryptology???????? Yes I do”

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