**암호화 해시 함수(CHF)**는 데이터의 유효성을 검증하는 데 사용되는 방정식입니다. 암호화 해시 함수는 블록체인에서 트랜잭션을 보호하는 데에도 사용됩니다. 이러한 수학적 함수는 입력을 받아 해당 입력에 고유한 고정 길이 출력을 생성합니다. [1][2]
암호화는 정보가 의도된 대상만 이해하고 처리할 수 있도록 정보를 보호하는 과학 및 기술입니다. 해싱은 임의 길이의 일반 텍스트 데이터를 해시라고 하는 고정 길이의 고유한 암호 텍스트로 매핑하는 프로세스입니다. 해싱을 수행하는 함수는 해시 함수입니다.[1] [9]
해시 함수는 주어진 숫자 또는 영숫자 키를 작은 실용적인 정수 값으로 변환하는 함수입니다. 매핑된 정수 값은 해시 테이블의 인덱스로 사용됩니다. 간단히 말해서 해시 함수는 중요한 숫자 또는 문자열을 해시 테이블의 인덱스로 사용할 수 있는 작은 정수로 매핑합니다. 쌍은 (키, 값) 형식이며, 주어진 키에 대해 키를 값에 매핑하는 일종의 "함수"를 사용하여 값을 찾을 수 있습니다. 주어진 객체의 키는 해시 함수라는 함수를 사용하여 계산할 수 있습니다.[6]
모든 암호화 해시 함수는 해시 함수이지만 모든 해시 함수가 암호화 해시 함수인 것은 아닙니다.[3][4]
암호화 해시 함수(CHF)는 단방향 작업이므로 이를 만드는 데 사용된 정보를 재현하기 위해 되돌리기가 매우 어렵습니다.[1]
블록체인의 각 블록에는 이전 블록의 해시가 포함되어 있어 수정하기 거의 불가능한 체인이 생성됩니다. 또한 건전한 CHF는 해싱 방정식 자체에 대한 알려진 모든 형태의 공격에 견딜 수 있어야 하지만 이러한 방정식이 구현되는 방식에 대한 공격을 의미하는 측면 채널 공격에도 견딜 수 있어야 합니다.
암호화 해시 함수의 주요 응용 분야는 데이터 무결성을 보장하는 것입니다. 데이터 조각에 대한 고유한 해시 값을 생성함으로써 해당 데이터에 대한 모든 변조 또는 변경 사항을 쉽게 감지할 수 있습니다. 이는 특히 디지털 서명에서 중요한데, 여기서 해시 값은 문서 또는 메시지에 대해 생성된 다음 보낸 사람의 개인 키로 암호화됩니다. 그런 다음 수신자는 보낸 사람의 공개 키를 사용하여 서명을 해독하고 메시지의 진위성을 확인할 수 있습니다.[8]
암호화 해시 함수(CHF)는 크게 두 가지 클래스로 분류됩니다. 키가 없는 해시 함수는 단일 매개변수(입력 메시지)가 있는 MDC(Manipulation Detection Code) 또는 MAC(Message Authentication Code)라고도 하며, 키가 있는 해시 함수는 두 개의 개별 입력(입력 메시지 및 비밀 키)이 있습니다. 일반적으로 해시 함수라는 용어는 키가 없는 해시 함수를 의미합니다. 다음은 암호화 해시 알고리즘의 예입니다.
미국 연방 정보 처리 표준(FIPS)으로 국립 표준 기술 연구소(NIST)에서 발행했습니다. 이 제품군은 SHA-0, SHA-1, SHA-224, SHA-256, SHA-384 및 SHA-512의 6가지 해시 함수를 지정합니다. 처음 4개는 32비트 단어로 나뉜 512비트 메시지 블록에서 작동하고 마지막 2개는 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 스트림 암호에 기반하지만 라운드 상수와 XOR된 입력 블록의 순열된 복사본이 각 ChaCha 라운드 전에 추가됩니다.[3]
IOTA 서명 체계(ISS)에서 이전에 사용된 해시 함수입니다. IOTA는 사물 인터넷(IoT) 및 자동차 생태계에서 사용하도록 설계된 암호화폐입니다. ISS는 Winternitz One-Time Signatures를 기반으로 하지만 기존 Winternitz와 달리 IOTA 사용자는 메시지의 해시에 서명합니다. 따라서 ISS의 보안은 암호화 해시 함수(Curl-P-27)에 의존합니다.[3]
사용자가 비밀번호를 입력하면 해시되고 결과가 회사 서버에 저장된 해시 값 목록과 비교됩니다. 그러나 이것은 완벽한 방법이 아닙니다. 해커는 일반적인 비밀번호와 해당 해시의 데이터베이스(레인보우 테이블이라고 함)를 만들어 계정에 더 쉽게 침입할 수 있도록 했습니다.[7]
서명 확인은 디지털 문서 또는 메시지의 진위성을 확인하는 데 사용되는 수학적 프로세스입니다. 전제 조건이 충족되는 유효한 디지털 서명은 수신자에게 알려진 보낸 사람이 메시지를 만들었고 전송 중에 변경되지 않았다는 강력한 증거를 제공합니다. 디지털 서명 체계는 일반적으로 키 생성 알고리즘, 메시지 및 개인 키가 주어지면 서명을 생성하는 서명 알고리즘, 서명 확인 알고리즘의 세 가지 알고리즘으로 구성됩니다.[7]
해시는 보낸 사람에서 수신자로 전송된 메시지와 파일이 전송 중에 변조되지 않도록 할 수 있습니다. 이 방법은 "신뢰 체인"을 구축합니다. 예를 들어 사용자는 수신자가 계산한 해시 값을 게시된 값과 비교하여 일치하는지 확인할 수 있도록 데이터의 해시 버전과 키를 게시할 수 있습니다.[7]