`md5sum`은 얼마나 정확합니까?


27

md5sum파일의 무결성을 확인하기 위해 사용할 때 프로세스는 얼마나 정확합니까?

확인 된 MD5는 모든 비트가 정확히 동일하다는 것을 의미합니까, 또는 이진 변경이 MD5에 반영되기 전에 깨져야하는 임계 값이 있습니까?

md5가 생성되는 방법에 대한 모든 문서도 감사하겠습니다.



@choroba이 모든 것을 올바르게 읽으면 확인되지 않은 파일의 크기에 따라 감지되지 않은 변경 가능성이 높아집니다. 그러나 그것은 여전히 ​​가능성이며 100 % 확실성은 16 바이트 파일로만 가질 수 있습니다. 나 맞아?
Konner Rasmussen

@Konner 파일 전송을 다루는 귀하의 질문을 읽었습니다. 이를 위해 안전합니다. 전송시 비트가 손상 될 가능성은 적으며 이전 상황을 이해 한 경우 전송시 복사 된 파일의 일부를 잃을 가능성이 높습니다 . MD5는 두 파일을 동시에 비교하는 것과 동등하지만 두 파일에 동시에 액세스 할 필요가 없다는 장점이 있습니다.
Doktoro Reichard

15
"검증 된 MD5는 모든 비트가 정확히 동일하다는 것을 의미합니까?" 비둘기 구멍 원리 덕분에 불가능합니다. en.wikipedia.org/wiki/Pigeonhole_principle
Plutor

3
16 바이트 파일에 대한 보장도 얻지 못한다고 생각합니다.
Mooing Duck

답변:


65

이 목적을 위해 MD5는 지적인 적에 대항하여 깨졌습니다. 동일한 MD5 해시를 생성하는 서로 다른 두 개의 데이터 블록을 악의적으로 구성 할 수 있습니다.

그러나 MD5를 사용하여 전송 또는 저장시 우발적 인 데이터 손상을 방지하는 것이 전적으로 적합합니다 (거의 더 나은 방법이 있지만). 그러한 사건이 MD5 해시를 동일하게 만들 수 있다고 생각할 수 있지만, 확률이 너무 낮아서 걱정할만한 확률이 거의 상상할 수 없습니다. 백그라운드 방사선, 터널링, 정적 및 수십 개의 다른 소스로 인한 장애는 수십 배 더 높습니다.

1 조 개의 데이터 단위가 있더라도 일치하지 않는 MD5가 해당 4 조 단위 중 하나에 속하는 MD5 해시를 생성 할 확률은 1 조에서 1보다 훨씬 적습니다.


이론적으로 동일한 해시로 두 개의 파일을 생성하는 것이 가능할 수도 있지만 실제로는 불가능할 수도 있습니다. 특히 교체 파일도 의미가있는 경우. 예를 들어 원본 파일이 영어 텍스트 인 경우 영어와 일치하는 다른 일치 항목이 없을 수 있습니다. 또는 Excel 스프레드 시트 인 경우 해시가 같은 다른 파일은 유효한 스프레드 시트가 아닙니다.
Barmar

1
@Barmar : win.tue.nl/hashclash/Nostradamus 이 사람들은 실제로 MD5 해시로 여러 개의 pdf 파일을 만들어 실제로 실현 가능하다는 것을 증명했습니다.
philfr

26

MD5는 해시입니다. 기본적으로 파일의 전체 내용을 16 바이트 길이 IIRC의 작은 문자열로 매핑합니다.

분명히 동일한 MD5 합계로 해시되는 여러 파일이 있습니다. 따라서 일치하는 MD5 합계는 파일 간의 정확한 일치를 보장하지 않습니다.

해시가 작동하는 방식 때문에 임계 값이 없습니다. 따라서 MD5 합계는 단일 비트 변경도 감지 할 수 있습니다. 그러나 많은 단일 비트 변경으로 인해 MD5 해시가 동일 할 수 있습니다. 따라서 무작위 손상에 대해 파일 무결성을 검증하기 위해 MD5를 사용하는 것은 상당히 합리적이지만 누군가가 MD5 해시가 동일한 지 확인하면서 파일을 수정할 수 있으므로 악의적 인 의도가있을 수있는 경우에는 없습니다.


1
너무 짧은 이야기는 md5가 파일 무결성을 확인하는 빠르고 더러운 방법에 지나지 않으며 탐지되지 않은 오류가 격변 적 영향을 일으키지 않는 경우에만 사용해야한다는 것입니다.
Konner Rasmussen

3
이를 사용하는 가장 좋은 방법은 전송 또는 복사 중 손상을 감지하는 것입니다. 실제로 보안 문제는 아닙니다.
Michael Martinez

12
@KonnerRasmussen-그것은 영향의 정도가 아니라 위협의 본질입니다. 실수로 두 문서에 동일한 MD5가 있을지 걱정되는 경우 걱정하지 마십시오. 컴퓨터가 자연스럽게 불꽃에 터질 가능성은 상당히 높습니다. 지능형 공격자가 이미 보유한 문서와 일치하는 문서를 생성 할 수 있다는 우려가 있다면 이는 심각한 문제이며 더 나은 해시를 얻어야합니다. 지능형 공격자가 서로 일치하는 두 개의 문서를 생성 할 수 있다고 걱정되는 경우 "걱정"하지 마십시오 . 확실히 일어날 것입니다.
Malvolio

5
물론, MD5 해시 충돌을 생성하는 것은 이론적으로 가능하지만, 유용한 충돌을 생성하는 것 (충돌 파일은 동일한 유형의 파일이고 그 내용은 최소한 그럴듯합니다)
Shadur

6
@Shadur : 예전의 경우 였지만 지속적인 보안 연구를 통해 MD5 충돌을 발생시키는 새로운 방법을 발견했습니다. 특히 파일 형식에서 자유 형식의 "코멘트"데이터 청크를 허용하는 경우 적절한 주석을 삽입하여 모든 MD5 해시와 일치시킬 수 있습니다.
MSalters

17

MD5- 해시는 128 비트로 구성됩니다. 소스의 단일 뒤집힌 비트는 해시에서 64 비트를 뒤집습니다 (평균).

실수로 충돌하는 두 개의 해시의 확률은 1 / 2 ^ 128이며, 이는 340 개의 undecillion 282delayion 366 nonillion 920 octillion 938 septillion 463 sextillion 463 quintillion 374 quadrillion 607 조 6 억 4 억 1 억 7,800 만 211 천 456에서 1입니다.

그러나 모든 해시를 유지하면 생일 역설 덕분에 조금 더 높습니다. 50 %의 확률로 해시 충돌이 발생하려면 2 ^ 64 해시가 필요합니다. 이는 평균적으로 충돌을 일으키기 위해 100 년 동안 초당 60 억 개의 파일을 해시해야한다는 것을 의미합니다.

출처 : porneL, https://stackoverflow.com/questions/201705/how-many-random-elements-before-md5-produces-collisions


8
그래도 아직 기회가 있다고 말하는거야? : p
Holloway

1
문제는 100 년 동안 초당 60 억 개의 파일을 해시해야 충돌이 발생한다는 것을 확신 할 수 있다는 것입니다. 첫 번째 초 안에 잘 일어날 수 있습니다.
deroby

사실, 첫 번째 순간에 일어날 수 있습니다. 그러나 항상 균형 이유에 관한 것입니다. 위험이 용납 될 수없는 군사용 애플리케이션 일 수도 있지만 에어백 센서가 md5를 사용하는 곳을 다시 생각하지 않고 자동차를 렌트 할 것입니다. md5 충돌을 기다리는 동안 여러 번 번개를 맞았을 가능성이 있습니다.
Zsolt Szilagy

죄송하지만 2 ^ 128의 절반은 2 ^ 64가 아니라 2 ^ 127입니다.
fischi

2
@fischi, 생일 역설에 대한 링크와 en.wikipedia.org/wiki/Birthday_attack 의 링크를 읽으십시오. 단순히 총 해시 수를 절반으로 줄이는 문제는 아닙니다. 검색 공간 H가 주어지면 충돌 가능성이 50 %가되기 전에 생성해야하는 해시 수는 대략 sqrt ((pi / 2) * H)입니다. 2 ^ 128로 수학을하면 약 2 ^ 64의 숫자를 얻게됩니다.
Paul Dixon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.