실제로 SHA 충돌 가능성을 무시하는 것이 안전합니까?


209

각각 1MB의 10 억 개의 고유 이미지가 있다고 가정 해 봅시다. 각 파일의 내용에 대한 SHA-256 해시를 계산합니다. 충돌 가능성은 다음에 따라 다릅니다.

  • 파일 수
  • 단일 파일의 크기

이 가능성이 0이라고 가정 할 때이 가능성을 무시하고 얼마나 멀리 갈 수 있습니까?


1
해시 키를 사용하는 대상에 따라 다릅니다. 파일 식별의 일종 인 경우 충돌은 파일이 동일하다는 것을 의미 할 수 있으므로 충돌이 발생하는 경우 파일을 비교해야합니다. 파일 크기를 비교하는 것이 상당히 안전하다고 말하고 싶습니다.
mojuba

예,이 경우 파일 크기를 비교하면 가능성이 크게 줄어 듭니다. 두 개의 해싱 알고리즘을 사용하여 결과를 연결할 수도 있습니다. 그러면, 동시에 둘의 충돌 가능성이 더 줄어 듭니다. 그러나 문제는 "공정하게"얼마나 안전합니까? 어쩌면 수식과 숫자가 필요할 수도 있습니다.
Hristo Hristov

2
@Hristo Hristov : 해시 키가 의사 난수 (이론적으로 올바른)라고 가정하면 10 억 개의 128 비트 키가 2.9 * 10 ^ -30의 충돌 확률을 제공합니다. 당신은 그것을 "
사소한

3
@ mojuba : 더 나은 그는 256 비트 해시에 대해 묻고 있습니다.
Michael Borgwardt

FWIW : GIT 버전 제어 시스템은 컨텐츠 SHA로 파일을 식별합니다.
snemarch

답변:


385

일반적인 대답은 다음과 같습니다. 다음 초 내에 도적 소행성이 지구에서 충돌하여 문명을 아는 문명을 없애고 수십억 명의 사람들을 죽일 확률은 얼마입니까? 그보다 낮은 확률을 가진 불행한 사건은 실제로별로 중요하지 않다고 주장 할 수 있습니다.

출력 크기가 n 인 "완벽한"해시 함수가 있고 해시 할 p 메시지가있는 경우 (개별 메시지 길이는 중요하지 않음) 충돌 확률은 약 p 2 / 2 n + 1입니다 (이는 근사치입니다). "작은" p , 즉 2 n / 2 보다 실질적으로 작은 유효 . 예를 들어 SHA-256 ( n = 256 ) 및 10 억 개의 메시지 ( p = 10 9 )를 사용할 경우 확률은 약 4.3 * 10 -60 입니다.

대량 살인자 우주 암석은 평균적으로 약 3 천만 년마다 한 번씩 발생합니다. 약 다음 제에서 발생하는 이러한 이벤트의 확률이 리드 (10) -15 . 그건 45 개 SHA-256 충돌보다 더 가능성이 크기 순서. 간단히 말해 SHA-256 충돌이 무섭다면 우선 순위가 잘못되었습니다.

공격자가 해시 될 메시지를 선택하는 보안 설정에서 공격자는 10 억 개가 넘는 메시지를 사용할 수 있습니다. 그러나 공격자의 성공 확률은 여전히 ​​거의 사라질 것입니다. 256 비트 출력으로 해시 함수를 사용하는 것이 요점입니다. 따라서 충돌 위험을 무시할 수 있습니다.

물론, 위의 모든 내용은 SHA-256이 "완벽한"해시 함수라고 가정하며, 이는 입증되지 않았습니다. 여전히 SHA-256은 상당히 강력 해 보입니다.


12
이것은 매우 좋은 답변입니다, 감사합니다! 그러나 충돌의 경우 원자력 발전소가 폭발하고 그것이 당신에게 달려 있다면 그 위험을 감수 할 것입니까? 당신이 완전히 옳다면, 우리는 문명이 파괴 될 가능성이 45 배나 높기 때문에 위험을 감수 할 수 있습니다. 권리?
Hristo Hristov

46
@Hristo 예라고 생각합니다. 위험을 감수해야합니다. 원자력 발전소는 이미 기계 고장, 건설 중 인적 오류 또는 원자력 발전소 가동 중 작업자 오류와 같은 다른 요인으로 인해 폭발 가능성이 훨씬 높으며, 이미 그러한 기회를 잡고 있습니다. 만약 SHA-256 충돌이 핵 사고를 일으키는 유일한 요인이라면 우리는 지금까지 정확히 0을 가지고 있었을 것입니다.
Roman Starkov

27
foxnews.com/science/2013/02/11/… SHA512에 대해 생각하기 시작했습니다.
Dustin Oprea

37
나는 SHA-256 충돌을 경험하기 오래 전에 소행성에 의해 지워질 것이라는 것을 알고 쉽게 쉬게 할 수있다.
AaronLS

10
죄송합니다, 당신은 소위 "생일 역설"에 누락되었습니다. "좋은 테이블"을 더 잘 살펴보면 생각대로 작동하지 않습니다. 내가 제시 한 그림의 경우,이 표에서 "4.3 * 10 ^ -60"으로 표시된 열과 "128 비트"행의 값은 "10 ^ 9"입니다 (하지만 표는 10 ^ -18 아래로 떨어지지 않습니다). ).
Thomas Pornin

47

충돌 가능성은 파일 크기에만 의존하지 않으며 파일 수에만 의존합니다.

이것은 생일 역설 의 예입니다 . Wikipedia 페이지는 충돌 가능성을 추정합니다. 숫자를 실행하면 지구상에서 생성 된 모든 하드 디스크가 SHA-256에 대해 0.01 %의 충돌 가능성을 얻기에 충분한 1MB 파일을 보유 할 수 없다는 것을 알 수 있습니다.

기본적으로 가능성을 무시할 수 있습니다.


5
나는 결론에 동의 할 수 없다. 예, 해당 개수의 파일을 저장할 수있는 hardisk는 없지만 IMO는 상황을 잘못 해석합니다. 충돌을 일으키는 데 두 개의 파일 만 있으면됩니다. 가능성은 매우 낮지 만 여전히 발생할 수 있습니다.
sharptooth

11
@sharptooth : 아니오, 나는 상황을 잘못 표현하지 않습니다. 귀하와 귀하가 알고있는 모든 사람이 같은 날 도로 사고로 사망 할 가능성은 매우 낮지 만 여전히 발생할 수 있습니다 (SHA-256 충돌보다 훨씬 높음). 그러나 당신은 그 가능성을 무시하고 있습니다.
Michael Borgwardt

11
@sharptooth : 저는 수백 명의 특정 사람들의 개별적인 동시 교통 사고에 대해 이야기하고있었습니다 . 당신은 실제로 그것을 낮추기 위해 어떤 단계도 취할 수 없습니다. 이미 기이하게 낮기 때문에 의미가 없습니다. 그러나 여전히 SHA-256 충돌보다 훨씬 더 많이 상상할 수 없습니다. 토마스가 만든 것과 같은 주장입니다.
Michael Borgwardt

12
@sharptooth : 아니요 . SHA-256 해시 공간의 크기로 인해 여전히 숫자가 절대적으로 왜소하기 때문에 가능성이 크게 증가 하지 않습니다 . 이것은 당신이 올바르게 고려하지 않은 것입니다-모든 요소는 동등하게가 아니라 실제 크기로 가중되어야합니다. 지구상의 모든 개인에 대해 초당 10 억 해시를 생성하고이를 천 년 동안 수행 한 경우에도 여전히 충돌 가능성은 1 % 미만입니다.
Michael Borgwardt

3
메모리에서 가져 오거나 디스크에서 읽을 때 (SHA-256 충돌보다 훨씬 높은 확률로) 모든 수정시 오류가 수정 될 가능성이 있는지 확인하지 않으면 확률을 완전히 이해하지 못할 수 있습니다.
Christophe

17

우선, 그것은 0이 아니라 0에 매우 가깝습니다 .

중요한 질문은 실제로 충돌이 발생하면 어떻게됩니까 ? 답이 "원자력 발전소가 폭발 할 것"이라면 충돌 가능성을 무시해서는 안됩니다. 대부분의 경우 결과는 그다지 심각하지 않으므로 충돌 가능성을 무시할 수 있습니다.

또한 소프트웨어 (또는 소프트웨어의 일부)가 여러 대의 컴퓨터 (현재는 거의 모든 곳에 포함 된 일부 소형 임베디드 마이크로 컴퓨터)에 배포되어 동시에 사용될 수 있다는 것을 잊지 마십시오. 이 경우 추정값에 가능한 최대 사본 수를 곱해야합니다.


... 사본 수는 아니지만 데이터 세트 수는 모든 사본을 요약합니다.
Andreas Spindler

1
이것은 잘못된 것이며, 실행중인 소프트웨어의 사본 수는 관련이 없습니다. 중요한 것은 처리되는 고유 파일의 수이며 생일 역설은 계산을위한 수학입니다.
Dirk Bester

1
다른 사람이 하드웨어 고장 가능성, 즉 방사선 등으로 인해 약간 뒤집어 질 가능성이 해시 충돌보다 가능성이 높으므로 해시 충돌에 대해 걱정하는 것은 어리석은 일이라고 다른 사람들이 언급 한 것을 들었습니다. 개인적으로, 나는 두 가지 경우를 모두 다루려고 안전하려고합니다 (원자력 발전소의 안전성이 높을수록 좋습니다), 해시 충돌은 잠재적 위험 목록에서 매우 낮을 것입니다 (해시 공간이 충분히 크다고 가정) . 그러나 이것은 해시 함수에 충돌이 더 자주 발생하는 숨겨진 동작이 없다고 가정합니다.
Chris Middleton


@GreenTree 당신이 연결 한 것은 의도적으로 충돌을 만드는 것입니다.
sharptooth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.