실제로, 동일한 암호화 해시는 파일이 공격 자나 다른 악의적 인 엔티티에 의해 제작되지 않는 한 파일이 동일하다는 것을 의미합니다 . 잘 설계된 암호화 해시 기능과 의 임의 충돌 가능성은 실제로 공격자가 없을 때 무시할 정도로 작습니다.
그러나 일반적으로, 아니, 우리는 같은 해시를 갖는 2 개 개의 임의의 파일이 있다고 말할 수 없다 확실히 그들이 동일하다는 것을 의미한다.
암호화 해시 함수의 작동 방식은 임의 길이의 입력을 가져 와서 입력에서 계산 된 고정 길이 값을 출력하는 것입니다. 일부 해시 함수에는 선택할 수있는 여러 출력 길이가 있지만 출력은 여전히 고정 길이 값입니다. 이 값은 최대 수십 바이트입니다. 오늘날 가장 일반적으로 사용되는 출력 값이 가장 긴 해시 알고리즘에는 512 비트 출력이 있고 512 비트 출력은 64 바이트입니다.
해시 함수의 입력이 해시 함수의 출력보다 긴 경우 입력이 출력에 적합하도록 일부 충실도를 제거해야합니다. 결과적으로 출력 길이보다 큰 길이의 입력이 여러 개 있어야 동일한 출력을 생성 할 수 있습니다.
현재 주력 SHA-256을 예로 들어 봅시다. 256 비트 또는 32 바이트의 해시를 출력합니다. 정확히 32 바이트 길이이지만 서로 다른 두 개의 파일이있는 경우 파일의 내용에 상관없이 알고리즘에 결함이 없다고 가정하여 다른 값으로 해시해야합니다. 수학적 용어로, 해시는 2256 입력 공간을 2256 출력 공간 에 맵핑하는 함수 이며, 충돌없이 가능합니다. 각 33 바이트 두 개의 파일이있는 경우,이 존재해야합니다 몇 가지 우리가 지금이 매핑하고 있기 때문에, 두 파일 모두에 대해 동일한 32 바이트 출력 해시 값을 제공 입력의 조합을 264 2에 입력 공간 (256)출력 공간; 여기서 우리는 평균적 으로 모든 단일 출력에 대해 2 8 개의 입력 이 존재한다는 것을 쉽게 알 수 있습니다 . 더 나아가서 64 바이트 파일 을 사용하면 모든 단일 출력에 대해 2256 개의 입력 이 있어야합니다 !
암호화 해시 함수는 특정 출력을 제공하는 입력을 작성하거나 동일한 출력을 제공하는 두 개의 입력을 작성하는 것이 계산 상 어렵 도록 설계되었습니다 . 이를 사전 이미지 공격 저항 또는 충돌 공격 저항이라고 합니다. 이러한 충돌을 찾는 것은 불가능 하지 않습니다 . 그것은 정말로, 정말로, 정말로, 정말로 힘들 도록 의도 된 것 입니다. 충돌 공격의 특별한 경우는 생일 공격 입니다.
공격에 저항하는 알고리즘은 다른 알고리즘보다 낫습니다. MD5는 일반적으로 요즘 완전히 고장난 것으로 여겨지지만, 마지막으로 보았지만 여전히 첫 번째 사전 이미지 저항력을 보여주었습니다 . SHA-1도 마찬가지로 효과적으로 고장납니다. 사전 이미지 공격은 시연되었지만 특정 조건이 필요하지만 그 경우가 무기 한일 것이라고 믿을 이유는 없습니다. 그 말이 다가올수록 공격은 항상 좋아지고 결코 나 빠지지 않습니다. SHA-256 / 384 / 512는 현재 대부분의 목적에 안전하다고 여전히 믿고 있습니다. 그러나 악의적으로 제작되지 않은 두 가지가 유효한지 확인하려는 경우파일은 동일합니다. 입력 공간이 이미 충분히 제한되어 있기 때문에 대부분 랜덤 충돌에 관심이 있기 때문입니다. 파일이 악의적으로 제작되었다고 믿을만한 이유가 있다면 최소한 안전하다고 여겨지는 암호화 해시 함수를 사용해야합니다.
첫 번째 사전 이미지는 특정 출력 해시 값을 생성하는 입력을 찾는 것입니다. 두 번째 사전 이미지는 지정된 다른 입력과 동일한 출력을 제공하는 입력을 찾는 것입니다. 충돌 은 입력이 무엇인지, 때로는 입력이 무엇인지에 관계없이 동일한 출력을 생성하는 두 개의 입력을 찾는 것입니다.
그러나 파일이 매우 다른 데이터 표현을 가질 수 있으며 여전히 똑같이 표시 될 수 있음 을 명심 해야합니다. 따라서 암호화 해시가 일치하지 않아도 동일 하게 보일 수 있지만 해시가 일치 하면 동일하게 나타날 가능성이 큽니다 .
cmp
Unix 또는fc
Windows의 (파일 비교) 와 쉽게 비교할 수 있습니다 .