해싱 기능이 없어도 ECDSA가 계속 작동 할 수 있습니까? [복제]
아래와 같이 위키 백과의 ECDSA 주제에 대한 연습 단계에 따르면 해싱 기능 (이미지에서 파란색으로 강조 표시됨)을 원시 메시지에 적용하지 않으면 어떻게 될까요?
이것은 약간 어리석은 것처럼 들리지만 아래와 같이 SHA256 엔진 테스트 케이스가 있거나없는 둘 다 있다고 가정 해 봅시다.
16 진수 메시지 (256 비트) : "0123456789012345678901234567890123456789012345678901234567890123"
SHA256 이후의 16 진 메시지 (256 비트) : "9674d9e078535b7cec43284387a6ee39956188e735a85452b0050b55341cda56"
후속 ECDSA 서명 흐름으로 진행하면 첫 번째 Hex 메시지의 문제점을 설명 할 수있는 사람이 있습니까?
이 경우 Alice가 원시 메시지에 서명했다고 가정 하시겠습니까?

답변
여기서 진실한 대답은 내가 모른다는 것입니다. 사실 더 나은 대답은 이것이 알려지지 않았다는 것입니다. 해시가 충돌 저항에만 필요하다는 가정은 일반적으로 그러한 체계에 대해 임의의 오라클이 필요하기 때문에 노골적으로 거짓입니다. 특히 ECDSA에서는 임의의 오라클이 있어도 실제로 보안 증명이 없으므로 더 나쁩니다. 그러나 오랫동안 사용되어 왔기 때문에 보안은 본질적으로 잘 받아 들여진 가정입니다. 그러나 메시지를 해싱하지 않고 무언가를 변경하자마자 메시지가 확실히 변경되면 무너집니다.
변경 사항이 해싱 단계를 제거하는 것 뿐 이라면 문제가 발생합니다 . 질문에 사용한 Wikipedia의 설명을 사용하면 첫 번째 단계를$e := m$ 변경하지 않고 나머지 단계를 계속합니다.
두 번째 단계는 다음을 정의합니다. $z$ 로 $L_n$ 가장 왼쪽 비트 $m$. 따라서 오른쪽으로 조금만 다른 메시지는$L_n$ 즉시 충돌하여 사소한 위조를 허용합니다.
예를 들어 메시지 길이를 제한하여 이러한 유형의 위조를 제외하도록 서명 체계를 추가로 수정하면 Yehuda의 답변이 적용됩니다.