2017-03-17 2 views
1

브라우저에서 1G 파일을 1024MB 청크로 분할하고 모든 청크의 SHA1을 가져 와서이 해시를 임시 저장하십시오. 마지막으로 모든 청크를 해시 한 후 이전에 수집 한 모든 SHA1 해시의 SHA1을 수행합니다 (해시 해시 수행). 그런 다음이 "최종"해시를 내 서버로 보냅니다.여러 sha1 해시의 Sha1 해시 -> 파일을 식별하기 위해 보안?

서버에서 내 파일을 식별하기 위해이 해시가 안전합니까? (우리는 보안 연결이 있고 sha1은 충돌이 없다고 가정)

여러 해시의 해시를 수행하는 것은 나쁜 생각입니까?

+1

예, 그렇습니다. 왜 그렇습니까? 동일한 해시로 위조를 방지하고 있습니까? 아니면 두 개의 파일이 다른지 확인해야합니까? 첫 번째 사례의 경우 SHA1은 현재 모범 사례에 충분하지 않아 SHA256 또는 SHA-512 만 사용합니다. 두 번째 경우에는 단일 SHA1이면 충분하지만 SHA-256으로 이동하는 것이 좋습니다. – zaph

답변

0

이렇게하면됩니다. SHA-1이 collision free이라고 가정하면 두 개의 다른 파일에 대해이 해시 중 하나 이상이 서로 다릅니다. 따라서 "최종"해시도 달라집니다.

일반적으로 해싱 해시는 보안을 향상시키지 않습니다. 더 많은 보안을 원하면 SHA-256을 사용하십시오.

+0

링크를 읽으면 두 번째 단계를 완료하기 위해 1 초 공격에110 년의 GPU 계산을 완료하는 데 6,500 년의 CPU 계산이 필요하다는 사실을 알게 될 것입니다. 이것은 가능한 공격입니까? 아니요. 그 공격은 일반적으로 SHA1이 실제로 충돌 안전하다는 것을 증명합니다. – zaph

+1

나는 이것을 읽었다. SHA1은 이론적으로 몇 년 동안 부서졌고 이제 그들은 충돌을 일으켰습니다. 그래서 그것은 깨졌습니다. 시간 비용은 아마도 당신과 나에게는 문제 일 수 있지만, 어떤 사람들은 꽤 많은 CPU와 GPU를 가지고 있습니다. 따라서 보안을 원하면 새 프로젝트에 SHA1을 사용하지 않아야합니다. 보안에 신경 쓰지 않고 내부 사용을 위해 지문 만 있으면 SHA1을 사용할 수 있습니다. 사고로 충돌하지 않기 때문입니다. – AbcAeffchen

+1

SHA1의 사용은 보안 요구 사항에 따라 다릅니다. 그것은 인증을 위해 깨 졌다고 간주되지만, 힘내 사용과 같은 파일의 유일성에 대해서는 고려되지 않습니다. SHA-256은 일반적으로 SHA1보다 나은 선택이지만 SHA1은 여전히 ​​많은 용도에 유효합니다. 해시 당 6,500 CPU를 소비 할 수있는 공격자로부터 보호하려면 더 큰 문제가 있으며 [고무 호스 암호 해독] (https://en.wikipedia.org/wiki/Rubber-hose_cryptanalysis)에 대해 더 염려해야합니다. – zaph

3

귀하의 목표는 클라이언트 측과 서버 측에서 계산 된 Chekcsum을 비교하여 업로드 된 파일의 무결성을 확인하는 것입니다. 그런 다음 각 덩어리를 해싱하고 결합하여 결과가 충분해야합니다.

//pseudocode 
SHA1.digest ( 
    SHA1.digest(chunk 1) + SHA1.digest(chunk 2) + ... + SHA1.digest(chunk n)) 

그러나 계산에 각 청크를 추가하는 전체 파일에 증분 SHA1 해시를 수행 할 수 있습니다. 이러한 방법으로 결과는 한 번에 전체 파일을 해싱 및 시간 데이터

SHA1.update(chunk 1) 
    SHA1.update(chunk 2) 
    ... 
    SHA1.update(chunk n) 
    SHA1.digest() 

는 그러나 아마이 목적 SHA1를 들어, 주석과 같이 SHA256로 이동도 고려

을 결합 할 필요가 없다는 동일 충분할 것입니다