2014-12-22 5 views
3

Digital Signaturecodeword의 차이점은 무엇입니까?gzip이 일반 해시 알고리즘 대신 CRC를 사용하는 이유는 무엇입니까?

문맥 : 최근에 gzip으로 압축 한 파일로 상당한 양의 작업을해야했습니다. One interesting thing I found while reading the Python zlib documentation is the claim that CRC should not be used as a general hash algorithm. 이것이 일반적인 해시 알고리즘이 아닌 경우 CRC의 요점은 무엇입니까? 평등을 확인하는 요점이 아닌가?

+0

일부 알고리즘은 광범위한 입력에 대해 다른 알고리즘보다 충돌이 적습니다. 나는 그 이유를 언급 한 것으로 들었다. –

+0

그냥 일반적인 오류 완화 내가 비록 – chris

+2

고려해야 할 한 가지 : GZIP가 정의되었을 때 광범위하게 사용할 수없고 이해되지 않는 일반 해시 알고리즘. 또한 CRC 계산은 훨씬 빠르며 단 하나의 레지스터 만 필요합니다. – PMF

답변

6

zip 파일의 CRC는 주로 저장소 또는 전송 중에 파일이 손상되지 않았는지 확인하는 데 사용됩니다. 침입자가 변경 한 파일에 대해 진위성을 제공하거나 파일을 보호하는 데 사용되지 않습니다. 따라서 암호 학적 안전성은 요구되지 않습니다.

암호화 해시는 무결성 오류에 대해보다 나은 보호 기능을 제공합니다. 그러나 계산 집약적이며 더 큰 출력이 필요합니다. 해시의 출력이 너무 많이 줄어들면 CRC가 실제로 (임의의) 변경 사항을 더 잘 감지 할 수 있습니다.

CRC 값은 고의적 인 변경에 대해 보호하지 않으므로 동일한 CRC 값을 생성하는 파일을 찾기가 어렵지 않으므로 디지털 서명에 적합하지 않습니다. 그게 당신 암호화 해시가 필요합니다.

암호화 해시는 서명이 아닙니다. 서명에는 PGP와 같은 디지털 서명 응용 프로그램이 필요합니다. 디지털 서명 (일반적으로)은 해시로 구성되며 개인 키의 정보를 사용하여 처리됩니다 (수신자의 공개 키로 확인).


참고 : "지문"을 의미하는 단어가 종종 있습니다. 지문의 경우 암호화 해시 - 대부분 MD5 또는 SHA-1 은 여전히 ​​사용되는입니다. 하지만 그것은 오히려 가져온 것입니다 - 제 의견으로는 "서명"이라는 단어를 잘못 사용했습니다.

5

당신은 거기에 4 가지 또는 5 가지의 다른 질문을했으며 상황에 따라 모호한 용어를 사용했습니다. 질의 응답 사이트에서 한 번에 하나의 명확한 질문을하는 것이 좋습니다.

  1. 왜 gzip은 일반 해시 알고리즘 대신 CRC를 사용합니까?

CRC는 오류 검출에 우수하며 비교적 빠른 계산을합니다. 입력 비트는 CRC에 잘 분산되어 있으며, 양호한 버스트 오류 검출 능력을 갖는다. 그래서 이유가 있습니다. "일반 해시 알고리즘"(해시 테이블의 경우 또는 암호 학적으로 강력한 경우)이 의미하는 바가 명확하지 않습니다. 어쨌든, 목적은 파일의 룩업 테이블을 만드는 것이 아니며 데이터에 서명하는 것이 아닙니다. 암호 해시를 넣는 데 아무런 가치가 없습니다. MD5 또는 SHA-2를 gzip 파일에 저장합니다. 누군가가 단순히 데이터 을 해시로 변경할 수 있기 때문입니다. 누군가가 생성 할 수있는 해시는 다른 채널을 통해 해시를 얻는 경우에만 유용합니다.

  1. 디지털 서명과 코드 워드의 차이점은 무엇입니까?

"코드 워드"를 사용하면이 링크에서 CRC를 의미한다고 생각합니다. CRC는 데이터의 무결성을 검사하기 위해 하드웨어 및 소프트웨어 응용 프로그램에서 모두 구현되는 신속하게 계산 된 오류 검사 코드입니다. 문맥에서, 나는 당신이 디지털 서명을 말할 때 암호화 해시를 의미한다고 생각합니다.암호화 해시는 지정된 해시 값을 사용하여 메시지를 만드는 것을 매우 어렵게 만들도록 설계된 단방향 함수입니다. CRCs는 정반대입니다. 선형 함수이므로, modify a message to have any given CRC은 꽤 쉽습니다. 암호화 해시에는 실수로 충돌 할 확률을 효과적으로 없애기 위해 일반적으로 CRC보다 많은 비트가 있습니다. 그러나 단방향 및 다수 비트는 암호화 해시를 생성하기 위해 훨씬 더 계산 집약적으로 만듭니다.

  1. 파이썬 zlib 문서를 읽는 동안 발견 한 흥미로운 점 중 하나는 일반적인 해시 알고리즘으로 CRC를 사용해서는 안된다는 주장입니다.

맞습니다. CRC는 입력 비트를 값에 매우 잘 분배하고 해시로 성공적으로 사용할 수 있지만 it fails certain tests that you might like a hash algorithm to pass입니다. 알고리즘이 키로 해시 테이블을 만들도록하려면 hash algorithm designed for that purpose을 사용하십시오. 그게 전부라면, 해시는 암호 일 필요가 없으며 암호화해서는 안됩니다. 빠른 것이 더 중요합니다.

  1. 일반 해시 알고리즘이 아닌 경우 CRC의 핵심은 무엇입니까?

CRC는 오류 검출 및 수정 알고리즘을 제공하는 coding theory의 결과 중 하나입니다. CRC의 목적은 오류 감지입니다.

  1. 포인트가 평등을 확인하지 않습니까?

여기에 어떤 평등성이 언급되는지는 분명하지 않습니다. 어떤 경우이든 CRC의 요점은 무결성을 확인하는 것입니다. 전송중인 스트림의 부주의 한 손상을 거의 감지하는 스트림에 중복 정보를 제공합니다.

+0

내가 여러 가지 질문을 한 것은 분명한 사실이다. 나는 나의 문서 읽기에서 주어진 모든 전문 용어 수프 때문에이 질문을 주로했다. 이제 당신은 깔끔하게 물건을 쌓아 놓았으므로 여러 질문을 볼 수는 있지만 마음 속에는 내가 이것을 쓸 때 문맥에 대한 하나의 질문이었습니다. – AlexLordThorsen

+0

내가 링크 된 파이썬 문서가 "일반적인 해시 함수"가 무엇인지 명시하지 않았습니다. 나는이 질문이 그것을 분명히하기를 희망했다. – AlexLordThorsen

+0

또한 모든 추가 자료를 읽어 주셔서 감사합니다. 특히 Spoof.c 예제. – AlexLordThorsen