[hash] MD5는 여전히 파일을 고유하게 식별하기에 충분합니까?

MD5 해시 파일이 여전히 MD5 알고리즘의 모든 중단 및 보안 문제 등을 감안할 때 파일을 고유하게 식별하기에 충분한 방법으로 간주됩니까? 여기서 보안은 나의 주요 관심사가 아니라 각 파일을 고유하게 식별하는 것입니다.

이견있는 사람?



답변

예. 보안 측면에서 MD5가 완전히 깨졌지만 우발적 충돌 가능성은 여전히 ​​작습니다. 신뢰할 수없는 사람과 악의적 인 의도를 가진 사람이 파일을 만들지 않도록하십시오.


답변

실용적인 목적으로, 생성 된 해시는 적절하게 임의적이지만 이론적 으로는 Pigeonhole 원리 로 인해 충돌 가능성이 있습니다. 다른 해시가 있다는 것은 확실히 파일이 다르다는 것을 의미하지만 동일한 해시를 얻는다고해서 반드시 파일이 동일한 것은 아닙니다.

따라서 보안이 문제가되는지 여부에 관계없이 해시 함수를 사용하면 해시 알고리즘이 충돌을 쉽게 일으키는 것으로 알려진 경우 항상 검사의 첫 단계 만되어야합니다. 동일한 해시를 가진 두 파일이 다른지 확실하게 확인하려면 해당 파일을 바이트 단위로 비교해야합니다.


답변

당신이 적이 없다면 MD5는 충분할 것입니다. 그러나 누군가는 (의도적으로) 동일한 값으로 충돌하는 두 개의 별개의 파일 (충돌이라고 함)을 만들 수 있으며 이는 정확한 상황에 따라 문제가 될 수도 있고 아닐 수도 있습니다.

알려진 MD5 취약점이 주어진 상황에 적용되는지 아는 것은 미묘한 문제이므로 MD5를 사용하지 않는 것이 좋습니다. 충돌 방지 해시 기능 (SHA-256 또는 SHA-512)을 사용하는 것이 안전합니다. 또한 MD5를 사용하는 것은 좋지 않은 홍보입니다 (MD5를 사용하는 경우 자신을 정당화 할 준비를하는 반면 SHA-256 사용에 대해서는 의문의 여지가 없습니다).


답변

md5는 충돌을 일으킬 수 있습니다. 이론적으로는 가능성은 거의 없지만 수백만 개의 파일이 동일한 해시를 생성 할 수 있습니다. 값을 저장하기 전에 운을 테스트하고 md5 충돌을 확인하지 마십시오.

개인적으로 md5의 임의 문자열을 생성하여 큰 파일을 해시하는 오버 헤드를 줄입니다. 충돌이 발견되면 추가 된 루프 카운터로 반복하고 다시 해시합니다.

비둘기 구멍 원리를 읽을 수 있습니다 .


답변

나는 그것을 추천하지 않을 것입니다. 응용 프로그램이 다중 사용자 시스템에서 작동하는 경우 동일한 md5 해시를 가진 두 개의 파일을 가진 사용자가있을 수 있습니다 (그는 그러한 파일로 엔지니어 및 재생하거나 궁금 할 수 있습니다 -http : / 에서 쉽게 다운로드 할 수 있음) /www2.mat.dtu.dk/people/S.Thomsen/wangmd5/samples.html ,이 답변을 작성하는 동안 나 자신은 두 개의 샘플을 다운로드했습니다). 또 다른 것은 어떤 응용 프로그램은 어떤 이유로 든 그러한 복제본을 저장할 수 있다는 것입니다 (그런 응용 프로그램이 있지만 가능성이 있는지 확실하지 않습니다).

프로그램에서 생성 된 파일을 고유하게 식별하는 경우 MD5를 사용하는 것이 좋습니다. 그렇지 않으면 충돌이 아직 알려지지 않은 다른 해시 함수를 권장합니다.


답변

개인적으로 사람들이 다른 객체의 원시 체크섬 (방법을 선택하십시오)을 사용하여 실제로 원할 때 고유 식별자로 너무 많이 작용한다고 생각합니다. 고유 식별자가 있습니다. 이 용도로 객체를 지문으로 찍으려는 의도는 없었으며 UUID 또는 유사한 무결성 메커니즘을 사용하는 것보다 더 많은 사고가 필요할 것입니다.


답변

MD5가 깨졌습니다. 대신 SHA1을 사용할 수 있습니다 (대부분의 언어로 구현 됨)