**암호화 해시 함수(CHF)**는 데이터의 유효성을 검증하는 데 사용되는 방정식입니다. 암호화 해시 함수는 블록체인의 트랜잭션을 보호하는 데에도 사용됩니다. 이러한 수학적 함수는 입력값을 받아 해당 입력값에 고유한 고정 길이의 출력을 생성합니다. [1][2]
암호화는 정보와 통신을 보호하여 의도된 수신자만 정보를 이해하고 처리할 수 있도록 보장하는 과학 및 기술입니다. 해싱은 임의 길이의 평문 데이터를 해시라고 알려진 고정 길이의 고유한 암호문으로 매핑하는 프로세스입니다. 해싱을 수행하는 함수는 해시 함수입니다. [1] [9]
해시 함수는 주어진 숫자 또는 영숫자 키를 작은 실용적인 정수 값으로 변환하는 함수입니다. 매핑된 정수 값은 해시 테이블의 인덱스로 사용됩니다. 간단히 말해, 해시 함수는 중요한 숫자 또는 문자열을 해시 테이블의 인덱스로 사용할 수 있는 작은 정수로 매핑합니다. 쌍은 (키, 값) 형태이며, 주어진 키에 대해서는 키를 값에 매핑하는 일종의 “함수”를 사용하여 값을 찾을 수 있습니다. 주어진 객체의 키는 해시 함수라고 하는 함수를 사용하여 계산할 수 있습니다. [6]
모든 암호화 해시 함수는 해시 함수이지만 모든 해시 함수가 암호화 해시 함수는 아닙니다. [3][4]
암호화 해시 함수(CHF)는 단방향 작업이므로 생성하는 데 사용된 정보를 재구성하기 위해 역으로 변환하는 것이 매우 어렵습니다. [1]
블록체인의 각 블록에는 이전 블록의 해시가 포함되어 수정이 거의 불가능한 체인을 생성하며, 우수한 CHF는 해싱 방정식 자체에 대한 모든 알려진 형태의 공격을 견딜 수 있을 뿐만 아니라 사이드 채널 공격에도 견딜 수 있어야 합니다. 즉, 방정식 자체가 아닌 이러한 방정식의 구현 방식에 대한 공격을 의미합니다.
암호화 해시 함수의 주요 응용 프로그램은 데이터 무결성을 보장하는 것입니다. 데이터의 고유한 해시 값을 생성함으로써 해당 데이터의 변조 또는 변경 사항을 쉽게 감지할 수 있습니다. 이는 디지털 서명에서 특히 중요합니다. 디지털 서명에서는 문서 또는 메시지에 대한 해시 값이 생성된 다음 발신자의 개인 키로 암호화됩니다. 그러면 수신자는 발신자의 공개 키를 사용하여 서명을 해독하고 메시지의 진위를 확인할 수 있습니다. [8]
암호화 해시 함수(CHF)는 크게 두 가지 클래스로 분류됩니다. 단일 매개변수(입력 메시지)를 사용하는 무키 해시 함수(조작 감지 코드(MDC) 또는 메시지 인증 코드(MAC)라고도 함)와 두 가지 고유한 입력(입력 메시지 및 비밀 키)을 사용하는 키 해시 함수입니다. 일반적으로 해시 함수라는 용어는 무키 해시 함수를 가리킵니다.
다음은 암호화 해시 알고리즘의 예입니다.
미국 연방 정보 처리 표준(FIPS)으로 미국 국립 표준 기술 연구소(NIST)에서 발표했습니다. 이 계열은 SHA-0, SHA-1, SHA-224, SHA-256, SHA-384 및 SHA-512의 여섯 가지 해시 함수를 지정합니다. 처음 네 가지는 32비트 단어로 나뉜 512비트 메시지 블록에서 작동하고, 마지막 두 가지는 64비트 단어로 나뉜 1024비트 블록에서 작동합니다. 원래이자 가장 큰 암호화폐인 비트코인은 SHA-256 해시 함수를 사용합니다. [3][5]
SHA-256은 NIST(국립 표준 기술 연구소)에서 권장하고 공식적으로 승인한 표준 알고리즘입니다. 데이터의 내용을 보여주지 않고도 내용을 확인할 수 있기 때문에 미국과 호주를 포함한 전 세계의 많은 정부 및 공공 부문 기관에서도 사용됩니다. [4]
MD는 RSA 보안을 위해 Ronald Rivest가 작성한 MD2, MD4, MD5 및 MD6로 구성되며 인터넷 표준 RFC 1321로 채택되었습니다. [3]
Katholieke Universiteit Leuven의 COSIC 연구 그룹에서 Hans Dobbertin, Antoon Bosselaers 및 Bart Preneel이 MD4에 사용된 설계 원칙을 기반으로 개발한 암호화 해시 함수 계열입니다. RIPEMD-160은 160비트(20바이트)의 해시 다이제스트를 생성합니다. [3]
Vincent Rijmen과 Paulo S. L. M. Barreto가 설계한 이 해시 함수는 고급 암호화 표준(AES)의 상당히 수정된 버전을 기반으로 합니다. Whirlpool은 512비트(64바이트)의 해시 다이제스트를 생성합니다. [3]
Jean-Philippe Aumasson, Luca Henzen, Willi Meier 및 Raphael C.-W. Phan이 NIST 해시 함수 경쟁에 제출한 해시 함수입니다. Dan Bernstein의 ChaCha 스트림 암호를 기반으로 하지만 각 ChaCha 라운드 전에 라운드 상수와 XOR된 입력 블록의 순열 복사본이 추가됩니다. [3]
IOTA 서명 체계(ISS)에서 이전에 사용되었던 해시 함수입니다. IOTA는 사물 인터넷(IoT) 및 자동차 생태계에서 사용하도록 설계된 암호화폐입니다. ISS는 Winternitz 일회용 서명을 기반으로 하지만 기존 Winternitz와 달리 IOTA 사용자는 메시지의 해시에 서명합니다. 따라서 ISS의 보안은 암호화 해시 함수(Curl-P-27)에 의존합니다. [3]
사용자가 암호를 입력하면 해시되고 결과는 회사 서버에 저장된 해시 값 목록과 비교됩니다. 그러나 이것은 완벽한 방법이 아닙니다. 해커는 일반적인 암호와 해시의 데이터베이스인 레인보우 테이블을 만들어 계정에 더 쉽게 침입할 수 있도록 했습니다. [7]
서명을 검증하는 것은 디지털 문서 또는 메시지의 진위를 확인하는 데 사용되는 수학적 프로세스입니다. 전제 조건이 충족되는 유효한 디지털 서명은 수신자에게 알려진 발신자가 메시지를 생성했으며 전송 중에 변경되지 않았다는 강력한 증거를 제공합니다. 디지털 서명 체계는 일반적으로 세 가지 알고리즘으로 구성됩니다. 키 생성 알고리즘, 메시지와 개인 키를 제공받아 서명을 생성하는 서명 알고리즘, 서명 검증 알고리즘입니다. [7]
해시는 발신자에서 수신자로 전송되는 메시지와 파일이 전송 중에 변조되지 않았는지 확인할 수 있습니다. 이 방법은 “신뢰 체인”을 구축합니다. 예를 들어, 사용자는 해시된 데이터 버전과 키를 게시하여 수신자가 계산한 해시 값을 게시된 값과 비교하여 일치하는지 확인할 수 있습니다. [7]