원래 SHA-1 해시를 유지하는 방식으로 파일을 악의적으로 변경할 수 있습니까?

원래 SHA-1 해시를 유지하는 방식으로 파일을 악의적으로 변경할 수 있습니까?

에 따르면이것기사 및 기타 여러 기사에서 SHA-1은 안전하지 않습니다.

제 경우에는 비밀번호나 디지털 인증서에 대해 걱정하지 않습니다. 파일 무결성이 걱정됩니다.

파일(예: ISO 이미지 또는 실행 파일)이 다음과 같은 방식으로 악의적으로 변경되는 것이 합리적으로 가능합니까?

  • 원본 파일의 SHA-1 해시를 유지합니다.
  • 파일의 전체 내용과 작업을 유지합니다(물론 원래 존재하지 않았던 악성 콘텐츠도 포함됩니다).

내가 보기에 SHA-1 충돌을 일으키는 방식으로 파일을 변경하면 파일이 완전히 쓸모 없게 됩니다. ISO가 완전히 손상되었거나 실행 파일이 완전히 뒤섞여 더 이상 실행 파일이 아닐 수도 있습니다.

그러나 내가 보는 방식은 틀릴 수도 있다. 지금까지 파일 검증에 대한 SHA-1의 지속적인 적합성과 관련하여 Google 검색에서 아무 것도 발견하지 못했습니다. 어떤 통찰력이 있습니까?

답변1

아직 SHA-1에 대해 이 작업을 수행한 사람은 없습니다. 이론적으로는 가능하지만 여전히 실용적이지는 않습니다. SHA-1의 불안정성에 대한 보고서는 보안 수준이 우리가 원하는 만큼 높지 않다는 것을 의미하며, 이는 우리가 생각했던 것만큼 이에 대해 걱정해야 할 때까지 몇 년이 남지 않았다는 것을 의미합니다.

동일한 SHA-1 해시를 사용하여 두 개의 파일을 직접 만드는 것보다 주어진 파일과 동일한 SHA-1 해시를 사용하여 파일을 생성하는 것이 더 어렵습니다. 그리고 우리가 아는 한, 세계 어느 곳에서도 아직까지 이 쉬운 작업조차 수행한 사람은 없습니다. 그렇다고 내일 일어날 수 없다는 뜻은 아닙니다.

답변2

이론적으로는 가능하지만 아직 이루어지지 않았습니다.

당신이 찾고 있는 것은 "해시 충돌"이라고 합니다. 즉, 동일한 해시를 가진 두 파일입니다. SHA-1과 같은 암호화 해시 코드는 일반적으로 이를 어렵게 만들도록 설계되었습니다. SHA-1은 160비트 코드이므로 중복 항목을 찾으려면 평균 2^159번의 무차별 대입 시도가 필요합니다. 암호화 해시에 비해 안정적으로 더 나은 알고리즘이 발견되면 해시는 "깨진" 것으로 간주됩니다.

MD-5는 매우 손상된 해시의 예입니다. 평균 2^127번의 시도가 필요한 128비트의 강도를 가져야 했습니다. 알려진 취약점을 악용하는 경우 필요한 실제 시도 횟수는 2^47만큼 낮을 수 있습니다. 이는 2^127보다 훨씬 작습니다. 실제로 최신 컴퓨팅 클러스터에서는 이 작업이 하루 안에 완료되었습니다.

SHA-1을 사용하려는 방법과 가장 가깝기 때문에 해당 예를 제공합니다. 그러나 이는 해시가 손상되지 않았는지 확인하기 위해 암호화 분석에 사용되는 가장 일반적인 접근 방식은 아닙니다. 일반적으로 사용자가 하나의 파일을 선택하고 공격자가 이를 일치시키려고 하는 대신 공격자가 선택한 두 파일 간의 충돌을 허용합니다. 이런 종류의 공격은 벤치마킹하기 쉽다는 장점이 있습니다. 파일을 크랙하는 것이 "어려운" 경우 다른 파일도 마찬가지로 강력하다는 의미입니까? 공격자가 두 파일을 모두 선택하게 되는 이 공격을 통해 우리는 최악의 경우를 포착할 수 있습니다.

이러한 종류의 공격을 통해 "생일 공격." 간단히 말해서, 생일 공격을 사용하면 알고리즘의 강도가 절반으로 떨어지므로 SHA-1은 (평균) 2^80번의 시도가 필요하고 MD5는 (평균) 2^64번의 시도가 필요합니다. 이는 160번의 절반이고 각각 128개.

SHA-1에는 강도를 2^80에서 2^69로 감소시키는 공격이 알려져 있습니다. 이것은 당신에게 별로 중요하지 않을 것입니다. 2^69번의 시도는시간.

그러나 역사를 통해 우리는 해시 알고리즘이 저절로 깨지는 것이 아니라 시간이 지나면서 깨지는 것을 발견했습니다. 밤새 2^64에서 2^47로 변환하는 MD-5와 같은 알고리즘을 해독하는 사람은 아무도 없습니다. 많은 개인이 자신이 사용하는 수학에 대한 논문을 발표함에 따라 시간이 지남에 따라 발생합니다. 일반적으로 알고리즘 시작부터 공격의 복잡성이 천천히 감소하는 것을 볼 수 있습니다(최고의 공격은 일반적으로 생일 공격입니다).

충돌에서 일부 변화가 관찰되고 있다는 사실은 SHA-1이 터널 끝에서 빛을 보고 있음을 시사합니다. 여전히 강력하지만 현재 훨씬 더 안전한 최신 SHA-3으로 업그레이드하려는 욕구가 있을 수 있습니다.

실제로 위협 모델 관점에서 그러한 결정을 내려야 합니다. 공격자가 이러한 충돌 중 하나를 당할 경우 얼마나 많은 피해를 입힐 수 있습니까? 공격자는 노트북 몇 대에 액세스할 수 있는 스크립트 키디입니까, 아니면 전체 슈퍼컴퓨팅 클러스터를 마음대로 사용할 수 있는 정부입니까? 해시가 더 이상 사용되지 않기 전에 공격자가 해시를 깨뜨려야 하는 기간은 얼마나 됩니까(암호화를 사용하는 경우에는 비밀번호 순환과 같은 "경계 변경"이 포함됨). 이 모든 것이 충돌을 얼마나 심각하게 고려해야 하는지에 영향을 미칩니다.

답변3

해당 기사에서 논의된 SHA-1의 결함은 매우 구체적입니다. 이를 통해 공격자는 동일한 값으로 해시되는 두 가지 항목을 생성할 수 있습니다(이를 "충돌 공격"이라고 함). 그러나 충돌 공격은 공격자가 제어할 수 있어야 합니다.둘 다관련 파일. 공격자가 원본 파일을 제어하지 않는 경우 충돌 공격을 통해 동일한 해시 값을 가진 다른 파일을 찾을 수 없습니다.

이것이 TLS/SSL(및 일반적인 서명)에 중요한 이유는 공격자가 종종~할 수 있다두 파일을 모두 제어하십시오. TLS 인증서는 대부분 요청하는 사람이 생성하므로(그들이 제어하지 않는 비트는 종종 예측 가능함) 충돌로 인해 합법적인 인증서와 불법적인 인증서를 만들고, 합법적인 인증서에 서명하고 서명을 전송할 수 있습니다.

파일의 경우 항상 동일한 상황이 적용되는 것은 아닙니다. 파일을 만든 사람이 공격자라는 것이 우려되는 경우(예: 파일을 독립적으로 좋은 것으로 확인한 다음 동일한 해시와 함께 사악한 페이로드를 보냅니다) SHA-1 공격이 적용되며 살펴봐야 합니다. 단계적으로 폐지하는 방향으로(David Schwartz가 언급한 것처럼 아직 중요하지는 않지만) 원본 파일을 신뢰할 수 있는 경우 공격자는 현재 알려진 SHA-1 공격을 적용할 수 없습니다. 하지만 가능하다면 이를 단계적으로 중단하는 것을 고려해야 합니다(선택할 수 있는 경우 SHA-1과 같은 알려진 공격 없이 해시를 사용하십시오). 2).


"충돌은 유용하지 않습니다"에 대한 응답 - 공격은 공격자가 다음을 얻을 수 있도록 요구하지 않습니다.유용한일반적으로 "충돌"을 "유용한 충돌"로 바꾸는 것은 그리 어렵지 않습니다. 많은 파일 형식에는 파일 기능에 영향을 주지 않고 원하는 것을 무엇이든 가질 수 있는 상당한 공간이 있습니다. 공격자는 일반적으로 충돌을 일으키기 위해(실제로 충돌을 찾을 수 있는 경우) 기능 부분을 원하는 대로 유지하면서 이를 수정할 수 있습니다. "학술적 공격"과 "실제 공격" 사이의 격차는 클 수 있습니다. "모든 충돌"과 "유용한 충돌" 사이의 간격은 일반적으로 훨씬 작습니다.


알고리즘 선택과 관련이 없는 더 심각한 문제는 해시를 얻는 방법입니다. 해시가 하는 일은 문제를 "실제 파일 가져오기"에서 "실제 해시 값 가져오기"로 바꾸는 것입니다. 동일한 서버에서 파일과 동일한 연결 유형을 통해 전송된 해시 값은 악의적인 수정에 대해 전혀 쓸모가 없습니다(파일을 조작할 수 있는 모든 공격자는 해시를 조작할 수 있습니다). 해시는 파일보다 해시를 더 신뢰할 수 있는 경우에만 유용합니다. 그런 경우도 있지만(토렌트, 미러 등), 그렇지 않은 경우에도 자주 사용됩니다. 따라서 무결성 확인을 위해 해시를 사용할 때마다 이에 대해 매우 주의해야 합니다.

답변4

그만큼일반적인질문에 언급된 기사의 요점은 SHA1은 더 이상 사용되지 않으며 원활하게 수행할 수 있는 시간이 있는 동안 단계적으로 폐지되어야 한다는 것입니다. 일부 지역에서는 Google과 Microsoft가 기한을 정한 이후로 시간이 부족해지고 있습니다.

경험 법칙더 이상 사용되지 않음기술:

  • 새로운 디자인을 하거나 기능을 추가하는 경우에는 사용하지 마세요(SHA1).
  • 오래된 것을 유지하고 있다면 언제 교체할지 계획을 세우세요(SHA1).

Bruce Schneier의 2012년 블로그 게시물 요약 인용: "요점은 커뮤니티에서 이제 SHA-1에서 SHA-2/SHA-3으로의 마이그레이션을 시작해야 한다는 것입니다."

관련 정보