developer tip

해시 코드와 체크섬-차이점은 무엇입니까?

optionbox 2020. 8. 12. 08:10
반응형

해시 코드와 체크섬-차이점은 무엇입니까?


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

즉, 동일한 숫자 해시 / 체크섬 값을 생성하는 두 데이터 블록의 확률은 응용 프로그램의 목적을 위해 무시할 수있을만큼 충분히 낮습니다.

그래서 우리는 같은 것에 대해 두 단어를 가지고 있습니까, 아니면 해시 코드와 체크섬 사이에 중요한 차이점이 있습니까?


나는 말할 것이다 검사가 필요하다 해시 코드 . 그러나 모든 해시 코드가 좋은 체크섬을 만드는 것은 아닙니다.

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

해시 코드는 단순히 데이터를 어떤 값에 매핑 하는 수학 함수설명 합니다. 데이터 구조 (예 : 해시 테이블)에서 인덱싱 수단으로 사용되는 경우 낮은 충돌 확률이 바람직합니다.


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

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

실제로 동일한 기능이 두 가지 목적 모두에 좋은 경우가 많습니다. 특히, 암호화 된 강력한 해시 코드는 계산 비용을 감당할 수 있다면 좋은 체크섬입니다 (임의 오류가 강력한 해시 함수를 손상시키는 것은 거의 불가능합니다).


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

  • 체크섬은 입력이 다를 때 (가능한 자주) 달라야하지만 계산 속도가 빠르다는 것이 거의 중요합니다.
  • 해시 코드 (해시 테이블에서 사용하기위한)는 동일한 요구 사항을 가지고 있으며, 특히 유사한 입력에 대해 코드 공간 전체에 균등하게 배포되어야합니다.
  • 암호화 해시는 해시가 주어지면이 해시를 생성하는 입력을 구성 할 수 없다는 훨씬 더 엄격한 요구 사항이 있습니다. 계산 시간은 두 번째이며 응용 프로그램에 따라 해시가 매우 느리게 계산되는 것이 바람직 할 수도 있습니다 (무차별 대입 공격을 방지하기 위해).

Wikipedia는 다음과 같이 잘 설명합니다.

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


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

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


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

암호화 해시는 매우 의욕적 인 공격자로부터 보호합니다.

와이어에서 비트를 보낼 때 실수로 일부 비트가 뒤집어 지거나 삭제되거나 삽입 될 수 있습니다. 수신자가 이와 같은 사고를 감지 (또는 때때로 수정) 할 수 있도록 발신자는 체크섬을 사용합니다.

그러나 누군가가 능동적이고 지능적으로 메시지를 수정하고 있다고 가정하고 이런 종류의 공격자로부터 보호하고 싶다면 암호화 해시를 사용하십시오 (해시에 암호화 방식으로 서명하거나 보조 채널 등을 사용하는 것은 무시합니다). 질문은 이것에서 벗어나지 않는 것 같습니다).


요즘에는 서로 바꿔서 사용할 수 있지만, 예전에는 체크섬이 모든 데이터를 (일반적으로 바이트 단위로) 추가하고 끝에 해당 값으로 바이트를 추가하는 매우 간단한 기술이었습니다. 원본 데이터가 손상되었는지 확인합니다. 체크 비트와 유사하지만 바이트가 있습니다.


해시 코드와 체크섬 함수의 차이점은 서로 다른 목적으로 설계되었다는 것입니다.

  • 체크섬은 입력 내용이 변경 되었는지 확인 하는 데 사용됩니다 .

  • 해시 코드 찾아 사용할 경우 입력에서 무언가 변경 가능한 개별 해시 코드 값 사이의 많은 "거리"로서 가지고.

    또한 해시 코드 값의 트리 / 클러스터 / 버킷을 조기에 형성하는 기능과 같이이 규칙과 반대되는 해시 함수에 대한 추가 요구 사항 이있을 있습니다.

    공유 된 초기 무작위 화를 추가하면 최신 암호화 / 키 교환에 대한 개념을 얻을 수 있습니다.


확률 정보 :

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

  • 임의의 입력 데이터에서 정확히 1 비트가 변경된 경우 입력 데이터의 크기에 관계없이 시간의 100 %를 감지 할 수 있습니다.

  • 임의 입력 데이터의 2 비트가 변경된 경우 두 변경 사항이 서로를 무력화 할 수 있고 해시 / 체크섬 함수가 입력 데이터에서 실제로 2 비트가 다른 것을 감지하지 못하므로 "변경"을 감지 할 확률을 2로 나눕니다. .

    ...

This means, If the number of bits in your input data is multiple times larger than the number of bits in your hash/checksum value, your probability of actually getting different hash/checksum values, for different input values, gets reduced and is not a constant.


I tend to use the word checksum when referring to the code (numeric or otherwise) created for a file or piece of data that can be used to check that the file or data has not been corrupted. The most common usage I come across is to check that files sent across the network have not been altered (deliberately or otherwise).


Although hashing and checksums are similar in that they both create a value based on the contents of a file, hashing is not the same as creating a checksum. A checksum is intended to verify (check) the integrity of data and identify data-transmission errors, while a hash is designed to create a unique digital fingerprint of the data.

Source: CompTIA ® Security+ Guide to Network Security Fundamentals - Fifth Edition - Mark Ciampa -Page 191

참고URL : https://stackoverflow.com/questions/460576/hash-code-and-checksum-whats-the-difference

반응형