암호화 해시 함수
해시 함수는 매우 유용하며 거의 모든 정보 보안 응용 프로그램에 나타납니다.
해시 함수는 숫자 입력 값을 다른 압축 숫자 값으로 변환하는 수학 함수입니다. 해시 함수에 대한 입력은 임의의 길이이지만 출력은 항상 고정 길이입니다.
해시 함수에 의해 반환 된 값이 호출됩니다. message digest 또는 간단히 hash values. 다음 그림은 해시 함수를 보여줍니다-
해시 함수의 특징
해시 함수의 일반적인 기능은 다음과 같습니다.
Fixed Length Output (Hash Value)
해시 함수는 임의 길이의 데이터를 고정 길이로 변환합니다. 이 프로세스는 종종hashing the data.
일반적으로 해시는 입력 데이터보다 훨씬 작기 때문에 해시 함수는 때때로 호출됩니다. compression functions.
해시는 더 큰 데이터를 더 작게 표현한 것이므로 digest.
n 비트 출력이있는 해시 함수를 n-bit hash function. 인기있는 해시 함수는 160 ~ 512 비트 사이의 값을 생성합니다.
Efficiency of Operation
일반적으로 입력 x가있는 해시 함수 h의 경우 h (x) 계산은 빠른 작업입니다.
계산적으로 해시 함수는 대칭 암호화보다 훨씬 빠릅니다.
해시 함수의 속성
효과적인 암호화 도구가되기 위해 해시 함수는 다음과 같은 속성을 소유해야합니다.
Pre-Image Resistance
이 속성은 해시 함수를 되 돌리는 것이 계산적으로 어렵다는 것을 의미합니다.
즉, 해시 함수 h가 해시 값 z를 생성하면 z로 해시되는 입력 값 x를 찾는 것은 어려운 과정이어야합니다.
이 속성은 해시 값만 있고 입력을 찾으려고하는 공격자로부터 보호합니다.
Second Pre-Image Resistance
이 속성은 입력과 해시가 주어지면 동일한 해시를 가진 다른 입력을 찾기가 어렵습니다.
즉, 입력 x에 대한 해시 함수 h가 해시 값 h (x)를 생성하면 h (y) = h (x)와 같은 다른 입력 값 y를 찾기가 어렵습니다.
이 해시 함수의 속성은 입력 값과 해시를 가지고 있으며 원래 입력 값 대신 다른 값을 적법한 값으로 대체하려는 공격자로부터 보호합니다.
Collision Resistance
이 속성은 길이에 상관없이 동일한 해시를 생성하는 두 개의 다른 입력을 찾기가 어렵다는 것을 의미합니다. 이 속성은 충돌없는 해시 함수라고도합니다.
즉, 해시 함수 h의 경우 h (x) = h (y) 인 두 개의 다른 입력 x와 y를 찾기가 어렵습니다.
해시 함수는 고정 된 해시 길이로 압축 함수이므로 해시 함수가 충돌하지 않는 것은 불가능하다. 이 충돌이없는 속성은 이러한 충돌을 찾기가 어렵다는 것만 확인합니다.
이 속성은 공격자가 동일한 해시를 가진 두 개의 입력 값을 찾는 것을 매우 어렵게 만듭니다.
또한 해시 함수가 충돌에 강한 경우 then it is second pre-image resistant.
해싱 알고리즘 설계
해싱의 핵심은 해시 코드를 생성하기 위해 고정 된 크기의 데이터 블록 2 개에서 작동하는 수학 함수입니다. 이 해시 함수는 해싱 알고리즘의 일부를 구성합니다.
각 데이터 블록의 크기는 알고리즘에 따라 다릅니다. 일반적으로 블록 크기는 128 비트에서 512 비트입니다. 다음 그림은 해시 함수를 보여줍니다-
해싱 알고리즘은 블록 암호와 같은 위의 해시 함수의 라운드를 포함합니다. 각 라운드는 고정 된 크기의 입력을받습니다. 일반적으로 가장 최근 메시지 블록과 마지막 라운드의 출력의 조합입니다.
이 프로세스는 전체 메시지를 해시하는 데 필요한 수만큼 반복됩니다. 해싱 알고리즘의 개략도는 다음 그림에 묘사되어 있습니다.
따라서 첫 번째 메시지 블록의 해시 값은 두 번째 해시 작업의 입력이되며 그 출력은 세 번째 작업의 결과를 변경하는 식입니다. 이 효과는avalanche 해싱 효과.
눈사태 효과는 단일 비트의 데이터라도 다른 두 메시지에 대해 실질적으로 다른 해시 값을 생성합니다.
해시 함수와 알고리즘의 차이점을 올바르게 이해하십시오. 해시 함수는 고정 길이 이진 데이터의 두 블록에서 작동하여 해시 코드를 생성합니다.
해싱 알고리즘은 해시 함수를 사용하는 프로세스로, 메시지가 분할되는 방법과 이전 메시지 블록의 결과가 함께 연결되는 방법을 지정합니다.
인기있는 해시 함수
몇 가지 인기있는 해시 함수를 간단히 살펴 보겠습니다.
MD (Message Digest)
MD5는 꽤 오랫동안 가장 인기 있고 널리 사용 된 해시 함수였습니다.
MD 제품군은 해시 함수 MD2, MD4, MD5 및 MD6으로 구성됩니다. 인터넷 표준 RFC 1321로 채택되었습니다. 128 비트 해시 함수입니다.
MD5 다이제스트는 전송 된 파일의 무결성에 대한 보증을 제공하기 위해 소프트웨어 세계에서 널리 사용되었습니다. 예를 들어, 파일 서버는 종종 파일에 대해 미리 계산 된 MD5 체크섬을 제공하므로 사용자가 다운로드 한 파일의 체크섬을 비교할 수 있습니다.
2004 년 MD5에서 충돌이 발견되었습니다. 컴퓨터 클러스터를 사용한 분석 공격은 한 시간 만에 성공한 것으로보고되었습니다. 이 충돌 공격으로 인해 MD5가 손상되었으므로 더 이상 사용하지 않는 것이 좋습니다.
SHA (보안 해시 기능)
SHA 제품군은 4 개의 SHA 알고리즘으로 구성됩니다. SHA-0, SHA-1, SHA-2 및 SHA-3. 같은 가족이지만 구조적으로 다릅니다.
원래 버전은 160 비트 해시 함수 인 SHA-0으로, 1993 년에 NIST (National Institute of Standards and Technology)에서 발표했습니다. 약점이 거의 없었고 그다지 인기가 없었습니다. 1995 년 후반에 SHA-1은 SHA-0의 약점을 수정하기 위해 설계되었습니다.
SHA-1은 기존 SHA 해시 함수 중 가장 널리 사용됩니다. SSL (Secure Socket Layer) 보안을 포함하여 널리 사용되는 여러 응용 프로그램 및 프로토콜에 사용됩니다.
2005 년, SHA-1의 장기적 사용 가능성을 의심스럽게 만드는 실제 시간 프레임 내에서 SHA-1에 대한 충돌을 발견하는 방법이 발견되었습니다.
SHA-2 제품군에는 해시 값의 비트 수에 따라 4 개의 추가 SHA 변형 인 SHA-224, SHA-256, SHA-384 및 SHA-512가 있습니다. SHA-2 해시 기능에 대한 성공적인 공격은 아직보고되지 않았습니다.
SHA-2는 강력한 해시 함수이지만. 크게 다르지만 기본 설계는 여전히 SHA-1 설계를 따릅니다. 따라서 NIST는 새로운 경쟁 해시 함수 설계를 요구했습니다.
2012 년 10 월 NIST는 새로운 SHA-3 표준으로 Keccak 알고리즘을 선택했습니다. Keccak은 효율적인 성능 및 공격에 대한 우수한 저항과 같은 많은 이점을 제공합니다.
RIPEMD
RIPEMD는 RACE Integrity Primitives Evaluation Message Digest의 약어입니다. 이 해시 함수 세트는 개방형 연구 커뮤니티에서 설계했으며 일반적으로 유럽 해시 함수 제품군으로 알려져 있습니다.
세트에는 RIPEMD, RIPEMD-128 및 RIPEMD-160이 포함됩니다. 이 알고리즘의 256 비트 및 320 비트 버전도 있습니다.
원본 RIPEMD (128 비트)는 MD4에서 사용 된 설계 원칙을 기반으로하며 의심스러운 보안을 제공하는 것으로 확인되었습니다. RIPEMD 128 비트 버전은 원래 RIPEMD의 취약성을 극복하기 위해 빠른 수정 대체품으로 제공되었습니다.
RIPEMD-160은 개선 된 버전이며 제품군에서 가장 널리 사용되는 버전입니다. 256 비트 및 320 비트 버전은 우발적 인 충돌 가능성을 줄이지 만 각각 RIPEMD-128 및 RIPEMD-160에 비해 높은 수준의 보안을 제공하지 않습니다.
소용돌이
이것은 512 비트 해시 함수입니다.
AES (Advanced Encryption Standard)의 수정 된 버전에서 파생되었습니다. 디자이너 중 한 명은 AES의 공동 창작자 인 Vincent Rijmen이었습니다.
세 가지 버전의 Whirlpool이 출시되었습니다. 즉 WHIRLPOOL-0, WHIRLPOOL-T 및 WHIRLPOOL입니다.
해시 함수의 응용
암호화 속성을 기반으로 해시 함수를 직접 적용하는 방법은 두 가지가 있습니다.
비밀번호 저장
해시 기능은 암호 저장을 보호합니다.
암호를 명확하게 저장하는 대신 대부분의 모든 로그온 프로세스는 암호의 해시 값을 파일에 저장합니다.
암호 파일은 (사용자 ID, h (P)) 형식의 쌍 테이블로 구성됩니다.
로그온 과정은 다음 그림과 같습니다.
침입자는 암호에 액세스하더라도 암호의 해시 만 볼 수 있습니다. 그는 해시를 사용하여 로그온 할 수 없으며 해시 함수가 사전 이미지 저항의 속성을 가지고 있기 때문에 해시 값에서 암호를 도출 할 수 없습니다.
데이터 무결성 검사
데이터 무결성 검사는 해시 함수의 가장 일반적인 응용 프로그램입니다. 데이터 파일에 대한 체크섬을 생성하는 데 사용됩니다. 이 응용 프로그램은 사용자에게 데이터의 정확성에 대한 보증을 제공합니다.
프로세스는 다음 그림에 설명되어 있습니다.
무결성 검사는 사용자가 원본 파일의 변경 사항을 감지하는 데 도움이됩니다. 그러나 독창성에 대한 보증은 제공하지 않습니다. 공격자는 파일 데이터를 수정하는 대신 전체 파일을 변경하고 모두 함께 새 해시를 계산하여 수신자에게 보낼 수 있습니다. 이 무결성 검사 응용 프로그램은 사용자가 파일의 독창성을 확신하는 경우에만 유용합니다.