귀하의 질문에 SHA-1 해시 충돌 부분의 경우, 몇 가지 답변으로 해결되었습니다.
그러나 이것의 대부분은 우리가 작업하는 파일 형식에 달려 있습니다.
파일의 전체 내용과 작업을 유지합니다 (물론 원래 내용 이 변경 되지 않은 악성 내용이 포함됨 )
이것이 의미하는 것은 변경 사항을 감지하는 내용에 따라 크게 다릅니다.
- 그것이 (합리적) 가능성이 아닌 서명 된 실행 파일 인 경우 어떻게 든 파일의 SHA-1과 내부 .exe 서명이라는 두 가지 해시 충돌이 발생해야합니다.
- 서명되지 않은 실행 파일, .com, 서명되지 않은 .dll 또는 이와 유사한 경우 리소스 포크는 작업을 변경하지 않는 방식으로 추가 될 수 있으므로 '정상'으로 감지 할 수없는 해시 충돌을 얻을 수 있습니다 조작.
- 소스 코드 파일 또는 유사한 구조 (.cs, .c, .h, .cpp, .rb, .yml, .config, .xml, .pl, .bat, .ini) 인 경우 추가, 수정 또는 제거 유효한 주석 구문으로 제한하여 대부분의 용도 (변경 또는 텍스트 편집기로 열지 않고 컴파일 또는 실행)에서 변경 사항을 식별 할 수 없도록 할 수 있습니다.
- .iso 또는 .zip 또는 다른 컨테이너 형식 인 경우 대부분의 임의 변경으로 인해 컨테이너가 손상 될 가능성이 높습니다. 가짜 파일 항목을 추가하거나 컨테이너 내에서 내용을 변경하고 다시 확인하는 것이 가능하지만 복잡성 계층을 추가하고 결과를 확인하기 위해 시간을 추가하는 것은 물론 자유도에 제한이 있습니다. 어떻게 그리고 어떤 내용이 변경 될 수 있는지.
- 텍스트 또는 텍스트와 같은 형식 인 경우 여전히 '유효한'파일 인 동안 원하는 방식으로 거의 변경할 수 있지만 내용은 눈에 잘 띄게됩니다.
- .rtf, .doc, .html, .xslx 및 기타 마크 업 형식과 같은 많은 형식을 사용하면 파서가 감지 할 수없는 방식으로 길이 (또는 제한된 길이)를 추가하거나 수정할 수 있습니다. , 자유도가 떨어짐) 파일은 유효한 파일 일뿐 아니라 일반적인 응용 프로그램에서 볼 수있는 방식으로 눈에 띄게 변경되지는 않지만 해시 충돌을 일으키도록 변경 될 수 있습니다.
따라서 남은 것은 손상되지 않고 어느 정도 감지 할 수없는 구조에서 충돌을 얻는 방법입니다.
- 원하는 기능 변경 (아마도 악성 콘텐츠 삽입)을 만들고 파일 형식 별 유효성을 유지하기 위해 추가 변경을 수행하십시오.
- 작동하지 않는 섹션을 추가합니다 (주석 블록 사이에 3k 캐리지 리턴이있는 텍스트 파일의 맨 끝에있는 주석 블록 사이에 현재 주석 블록을 분리)
- 수정을 위해 문자 / 코드 포인트 / 바이트를 추가하거나 선택하고 가능한 모든 유효한 조합을 시도하십시오 (예를 들어, 모든 바이트 조합이 다른 인코딩에 유효한 것은 아닙니다).
- 해시를 다시 계산하고 충돌이 일치하는지 확인하십시오.
- 그렇지 않은 경우 3으로 이동하십시오.
유효한 바이트 시퀀스로 수정하고 해시를 다시 계산하는 데 초고속 컴퓨터와 작은 파일이 있다고 가정 해 봅시다 (일부 전용 하드웨어가 필요할 수 있음). 해시 분포가 완벽하게 임의적이고 범위에 걸쳐 분포 된 경우2^160
시도 할 때마다 SHA-1과 충돌이 발생 합니다 (강제 강제).
2^160/1000/60/60/24/365.24
= 4.63x10^37 years
= 46,300,000,000,000,000,000,000,000,000,000,000,000 years
= 46 undecillion years.
그러나이 버전 2^60
과 2^52
버전을 사용해 보아 우리가 원하는 방식으로 파일을 수정할 수 있다고 가정 해 보자. 그렇지 않은 경우에도 1ms마다 시도 할 수있다.
2^52 yields 142,714 years
/*humans might still be around to care, but not about these antiquated formats*/
2^60 yields 3.65x10^7 years = 36,500,000 years
/*machines will probably have taken over anyway*/
그러나 당신은 운이 좋을 수도 있습니다. 정말, 정말, 무엇보다 기적보다 더 많은 사람들이 부르는 기적입니다.