MD5 해시 파일이 여전히 MD5 알고리즘의 모든 중단 및 보안 문제 등을 감안할 때 파일을 고유하게 식별하기에 충분한 방법으로 간주됩니까? 여기서 보안은 나의 주요 관심사가 아니라 각 파일을 고유하게 식별하는 것입니다.
이견있는 사람?
MD5 해시 파일이 여전히 MD5 알고리즘의 모든 중단 및 보안 문제 등을 감안할 때 파일을 고유하게 식별하기에 충분한 방법으로 간주됩니까? 여기서 보안은 나의 주요 관심사가 아니라 각 파일을 고유하게 식별하는 것입니다.
이견있는 사람?
답변:
예. 보안 측면에서 MD5가 완전히 깨졌지만 우발적 충돌 가능성은 여전히 작습니다. 신뢰할 수없는 사람과 악의적 인 의도를 가진 사람이 파일을 만들지 않도록하십시오.
실용적인 목적으로, 생성 된 해시는 적절하게 임의적이지만 이론적 으로는 Pigeonhole 원리 로 인해 충돌 가능성이 있습니다. 다른 해시가 있다는 것은 확실히 파일이 다르다는 것을 의미하지만 동일한 해시를 얻는다고해서 반드시 파일이 동일한 것은 아닙니다.
따라서 보안이 문제가되는지 여부에 관계없이 해시 함수를 사용하면 해시 알고리즘이 충돌을 쉽게 일으키는 것으로 알려진 경우 항상 검사의 첫 단계 만되어야합니다. 동일한 해시를 가진 두 파일이 다른지 확실하게 확인하려면 해당 파일을 바이트 단위로 비교해야합니다.
당신이 적이 없다면 MD5는 충분할 것입니다. 그러나 누군가는 (의도적으로) 동일한 값으로 충돌하는 두 개의 별개의 파일 (충돌이라고 함)을 만들 수 있으며 이는 정확한 상황에 따라 문제가 될 수도 있고 아닐 수도 있습니다.
알려진 MD5 취약점이 주어진 상황에 적용되는지 아는 것은 미묘한 문제이므로 MD5를 사용하지 않는 것이 좋습니다. 충돌 방지 해시 기능 (SHA-256 또는 SHA-512)을 사용하는 것이 안전합니다. 또한 MD5를 사용하는 것은 좋지 않은 홍보입니다 (MD5를 사용하는 경우 자신을 정당화 할 준비를하는 반면 SHA-256 사용에 대해서는 의문의 여지가 없습니다).
return 0;
로 변환 return 1;
). 이것은 거의 발생하지 않지만 SHA-256과의 충돌 위험은 그보다 훨씬 작습니다. 수학적으로 같은 값으로 해시하는 두 파일이 동일한 지 확인할 수 없지만 비교를 위해 컴퓨터를 사용하는 경우 파일 자체를 비교하여 확신 할 수는 없습니다. 내 말은 99.999 .... 9 %의 확실성을 넘어서는 의미가 없으며 SHA-256은 이미 그 이상을 제공한다는 것입니다.
md5는 충돌을 일으킬 수 있습니다. 이론적으로는 가능성은 거의 없지만 수백만 개의 파일이 동일한 해시를 생성 할 수 있습니다. 값을 저장하기 전에 운을 테스트하고 md5 충돌을 확인하지 마십시오.
개인적으로 md5의 임의 문자열을 생성하여 큰 파일을 해시하는 오버 헤드를 줄입니다. 충돌이 발견되면 추가 된 루프 카운터로 반복하고 다시 해시합니다.
비둘기 구멍 원리를 읽을 수 있습니다 .
나는 그것을 추천하지 않을 것입니다. 응용 프로그램이 다중 사용자 시스템에서 작동하는 경우 동일한 md5 해시를 가진 두 개의 파일을 가진 사용자가있을 수 있습니다 (그는 그러한 파일로 엔지니어 및 재생하거나 궁금 할 수 있습니다 -http : / 에서 쉽게 다운로드 할 수 있음) /www2.mat.dtu.dk/people/S.Thomsen/wangmd5/samples.html ,이 답변을 작성하는 동안 나 자신은 두 개의 샘플을 다운로드했습니다). 또 다른 것은 어떤 응용 프로그램은 어떤 이유로 든 그러한 복제본을 저장할 수 있다는 것입니다 (그런 응용 프로그램이 있지만 가능성이 있는지 확실하지 않습니다).
프로그램에서 생성 된 파일을 고유하게 식별하는 경우 MD5를 사용하는 것이 좋습니다. 그렇지 않으면 충돌이 아직 알려지지 않은 다른 해시 함수를 권장합니다.
MD5가 깨졌습니다. 대신 SHA1을 사용할 수 있습니다 (대부분의 언어로 구현 됨)
짧은 (<몇 K?) 문자열 (또는 파일)을 해싱 할 때 두 개의 md5 해시 키를 만들 수 있습니다. 하나는 실제 문자열에 대한 것이고 다른 하나는 짧은 비대칭 문자열에 연결된 문자열의 반전에 대한 것입니다. 예 : md5 (reverse (string || '1010')). 여분의 문자열을 추가하면 일련의 동일한 비트로 구성된 파일도 두 개의 다른 키를 생성 할 수 있습니다. 이 체계 하에서도 두 개의 해시 키가 동일하지 않은 문자열에 대해 동일 할 가능성은 이론적으로 있지만, 단일 MD5 충돌 확률의 제곱 순서 및 시간 절약과 같은 가능성은 매우 작습니다. 파일 수가 증가 할 때 상당한 수 있습니다. 두 번째 문자열을 만들기위한보다 정교한 체계도 고려할 수 있습니다.
충돌을 확인하기 위해 db의 모든 bit_vector에 대한 md5 해시 키의 고유성에 대해이 테스트를 실행할 수 있습니다.
md5 (bit_vector)에
의해 bit_vector 그룹이있는 db에서 md5 (bit_vector), count (*), bit_and (bit_vector)를 선택하고 bit_and (bit_vector)가있는 bit_vector <> bit_vector
대량의 파일 데이터를 저장할 때 MD5를 확률의 지표로 생각하고 싶습니다.
해시가 동일하면 파일을 바이트 단위로 비교해야한다는 것을 알고 있지만 잘못된 이유로 몇 번만 발생할 수 있습니다. 그렇지 않으면 (해시가 동일하지 않음) 두 개의 다른 파일에 대해 이야기하고 있음을 확신 할 수 있습니다 .