문제

내 이해는 해시 코드와 체크섬이 비슷한 것, 즉 데이터 블록에 대해 계산된 숫자 값이라는 것입니다. 비교적 고유한.

즉.동일한 숫자 해시/체크섬 값을 생성하는 두 데이터 블록의 확률은 애플리케이션 목적에 따라 무시할 수 있을 만큼 충분히 낮습니다.

그렇다면 동일한 것에 대해 두 개의 단어가 있습니까? 아니면 해시 코드와 체크섬 사이에 중요한 차이점이 있습니까?

도움이 되었습니까?

해결책

나는 그렇게 말할 것이다 체크섬 반드시입니다해시 코드. 그러나 모든 해시 코드가 좋은 체크섬을 만드는 것은 아닙니다.

체크섬에는 특별한 목적이 있습니다. 체크 무늬 데이터의 무결성 (일부는 오류 수정). "좋은"체크섬은 계산하기 쉽고 많은 유형의 데이터 손상 (예 : 1, 2, 3 개의 잘못된 비트)을 감지 할 수 있습니다.

해시 코드는 단순히 a를 설명합니다 수학적 함수 데이터를 일부 값으로 매핑합니다. 데이터 구조 (예 : 해시 테이블)에서 인덱싱 수단으로 사용될 때 충돌 확률이 낮은 것이 바람직합니다.

다른 팁

그들 각각 뒤에는 다른 목적이 있습니다.

  • 해시 코드 - 도메인에서 무작위로 설계되었습니다 (해시 테이블 등의 충돌을 최소화하기 위해). 암호화 해시 코드는 또한 반대로 계산할 수 없도록 설계되었습니다.
  • 점검 합계 - 데이터에서 가장 일반적인 오류를 감지하고 종종 빠른 데이터 스트림의 스트림을 위해 빠르게 계산하기 위해 설계되었습니다.

실제로, 동일한 기능은 종종 두 목적 모두에 좋습니다. 특히, 암호화 적으로 강한 해시 코드는 좋은 체크섬입니다 (계산 비용을 감당할 수 있다면 임의의 오류가 강한 해시 기능을 중단하는 것은 거의 불가능합니다).

실제로 몇 가지 차이점이 있습니다.

  • 입력이 다른 경우 (가능한 한 자주) 체크섬은 달라야하지만 계산하는 것이 빠릅니다.
  • 해시 코드 (HashTables에서 사용)는 동일한 요구 사항을 가지며, 특히 코드 공간에 걸쳐 고르게 분산되어야합니다.
  • 암호화 해시가 있습니다 많이 해시가 주어지면이 해시를 생성하는 입력을 구축 할 수없는 더 엄격한 요구 사항. 계산 시간이 두 번째로오고 응용 분야에 따라 해시가 계산하기가 매우 느리기 때문에 (무차별 인력 공격과 싸우기 위해) 바람직 할 수도 있습니다.

위키 백과 잘 넣습니다 :

체크섬 함수는 해시 함수, 지문, 무작위 배정 함수 및 암호화 해시 함수와 관련이 있습니다. 그러나 이러한 각 개념에는 응용 프로그램이 다르기 때문에 디자인 목표가 다릅니다. 점검 숫자 및 패리티 비트는 작은 데이터 블록 (예 : 사회 보장 번호, 은행 계좌 번호, 컴퓨터 단어, 단일 바이트 등)에 적합한 특수 체크섬입니다. 일부 오류 수정 코드는 일반적인 오류를 감지 할뿐만 아니라 특정 경우 원래 데이터를 복구 할 수있는 특수 체크섬을 기반으로합니다.

해시코드와 체크섬은 모두 데이터 항목에서 짧은 숫자 값을 생성하는 데 사용됩니다.차이점은 데이터 항목이 약간 수정되더라도 체크섬 값이 변경되어야 한다는 것입니다.해시 값의 경우 요구 사항은 실제 데이터 항목이 고유한 해시 값을 가져야 한다는 것뿐입니다.

명확한 예는 문자열입니다.문자열의 체크섬에는 모든 비트가 포함되어야 하며 순서가 중요합니다.반면에 해시코드는 길이가 제한된 접두사의 체크섬으로 구현되는 경우가 많습니다.이는 "aaaaaaaaaaba"가 "aaaaaaaaaaab"와 동일한 해시를 생성하지만 해시 알고리즘은 이러한 충돌을 처리할 수 있음을 의미합니다.

요즘 그들은 교환 할 수 있지만, 며칠 동안 체크섬은 모든 데이터를 추가하고 (보통 바이트로) 그 값으로 끝에 바이트를 압축 할 수있는 매우 간단한 기술이었습니다. 원래 데이터가 손상되었는지 알아보십시오. 체크 비트와 비슷하지만 바이트가 있습니다.

체크섬은 우발적 인 변경으로부터 보호합니다.

암호화 해시는 매우 동기 부여 된 공격자로부터 보호합니다.

와이어에 비트를 보내면 우연히 일부 비트가 뒤집거나 삭제되거나 삽입 될 수 있습니다. 수신기가 이와 같은 사고를 감지 (또는 때로는 올바른)로 만들기 위해 발신자는 체크섬을 사용합니다.

그러나 와이어의 메시지를 적극적이고 지능적으로 수정하고 이런 종류의 공격자로부터 보호하고 싶다고 생각한다면 암호화 해시를 사용하고 있습니다 (암호화 적으로 해시에 서명하거나 보조 채널 등을 사용하는 것을 무시하고 있습니다. 문제는 이것을 피하는 것 같지 않습니다).

해시 코드와 체크섬 함수의 차이점은 다른 목적을 위해 설계되고 있다는 것입니다.

  • 체크섬은 알아내는 데 사용됩니다 만약에 입력의 무언가가 변경되었습니다.

  • 해시 코드는 알아내는 데 사용됩니다 만약에 입력의 무언가가 변경되었습니다 그리고 개별 해시 코드 값 사이에 가능한 많은 "거리"를 갖는 것입니다.

    또한, 거기 ~할 것 같다 이 규칙에 반대하여 해시-코드 값의 나무/클러스터/버킷을 조기에 형성하는 능력과 같이 해시 기능에 대한 추가 요구 사항이 있어야합니다.

    그리고 공유 초기 무작위 화를 추가하면 현대 암호화/키 잉글 잉크 개념에 도달합니다.


확률에 대해 :

예를 들어, 입력 데이터가 실제로 항상 변한다고 가정합니다 (시간의 100%). 1 비트 해시/체크섬 값을 생성하는 "완벽한"해시/체크섬 함수가 있다고 가정하자. 따라서 임의의 입력 데이터에 대해 50%의 다른 해시/체크섬 값을 얻게됩니다.

  • 랜덤 입력 데이터에서 정확히 1 비트가 변경되면 입력 데이터가 아무리 큰지에 관계없이 시간의 100%를 감지 할 수 있습니다.

  • 임의의 입력 데이터에서 2 비트가 변경되면 "변경"감지 확률은 두 변경 사항이 서로 중화 될 수 있고 해시/체크섬 함수는 2 비트가 입력 데이터에서 실제로 다르지 않기 때문에 2로 나뉩니다. .

    ...

즉, 입력 데이터의 비트 수가 해시/체크섬 값의 비트 수보다 여러 배 더 큰 경우 실제로 다른 입력 값에 대해 다른 해시/체크섬 값을 얻을 확률이 줄어들고 감소하고 상수가 아닙니다.

나는 사용될 수있는 파일 또는 데이터 조각에 대해 생성 된 코드 (숫자 또는 기타)를 참조 할 때 Word Checksum을 사용하는 경향이 있습니다. 확인하다 파일이나 데이터가 손상되지 않았습니다. 내가 겪는 가장 일반적인 사용법은 네트워크를 통해 전송 된 파일이 (고의적으로 또는 다른 방식으로) 변경되지 않았는지 확인하는 것입니다.

해싱과 체크섬은 파일의 내용을 기반으로 값을 생성한다는 점에서 비슷하지만 해싱은 체크섬을 만드는 것과 다릅니다. 체크섬은 데이터의 무결성을 확인하고 데이터 전송 오류를 식별하기위한 반면 해시는 데이터의 고유 한 디지털 지문을 생성하도록 설계되었습니다.

출처 : Comptia ® 보안+ 네트워크 보안 기초에 대한 안내서 - 5 판 - Mark Ciampa -Page 191

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top