블록체인은 분산처리와 동시에 암호화 기술을 적용하여 높은 보안성을 확보합니다. 암호화 기술은 보안성이 높고, 위변조가 어렵다는 특징이 있어, 데이터 무결성을 쉽게 증명할 수 있다는 장점이 있습니다.
(cf) 데이터 무결성
Data Integrity. 데이터 베이스에 값이 정확하다는 것을 의미합니다.
블록체인에 적용되는 암호화 기술에는 해시 함수, 전자 서명, 공개키 암호화 알고리즘 등이 있으며, 이 기술들은 보안을 높여 줍니다.
블록체인 플랫폼에는 51% 공격, 이중 지불 문제(Double Spending) 등 블록체인의 취약점을 노리는 다양한 공격 방식이 있으며, 이러한 공격은 블록체인 플랫폼의 펀더멘탈을 위협하기도 합니다.
암호학의 가장 중요한 목적은 군사 정보를 보호하기 위함이었습니다. 스파르타에서는 스키테일이라는 암호화 방식을 사용했습니다.
기원전 100년 경에 만들어진 카이사르 암호는 고대에 가장 발달한 암호화 방식으로 유명합니다. 카이사르 암호는 알파벳과 같은 문자를 숫자나 다른 문자로 치환하여 작성하는 방식입니다.
그 후로 암호해도학이 발전했습니다.
컴퓨터의 발달로 수학적 암호화가 발달하기 시작했으며, 컴퓨터 시스템의 표준이 되었습니다. 1990년대에는 양자암호학이 등장하였습니다. 이러한 암호 기술은 암호 화폐를 구현할 때도 사용되고 있습니다. 해시 함수, 공개 키 암호화, 디지털 서명과 같은 다양한 암호화 기술을 사용하며, 블록체인에 저장된 데이터의 일관성을 보호하고 거래를 인증하는 데 사용합니다. 타원곡선 전자서명 알고리즘(Elliptical Curve Digital Signature Algorithm, ECDSA)는 블록체인에 기록된 자산을 정당한 소유주만이 사용할 수 있도록 보장합니다.
해싱은 다양한 크기의 입력값을 고정된 크기의 출력값으로 생성해 내는 과정을 의미합니다. 따라서 해시 함수는 어떠한 크기의 입력이 들어와도 동일한 크기의 출력을 뱉는 함수입니다.
암호 해시 함수는 블록체인 및 다양한 분산 시스템에 데이터 무결성과 보안을 보장하는 데 사용합니다.
(ex) SHA-256 알고리즘은 어떤 입력값을 넣어도 256 비트 길이의 값을 출력하며 SHA-1은 160 비트 길이의 값을 출력합니다.
기존의 해싱은 데이터베이스 조회, 파일 분석, 데이터 관리 등에 사용되어 왔습니다. 반면, 암호 해시 함수는 메시지 인증, 디지털 서명 등 보안 어플리케이션에서 사용될 수 있습니다.
특히, 암호화폐 프로토콜에서 가장 중요한 기술 중 하나로, 사용자에게 익명성을 보장하고, 트랜잭션을 하나로 연결 및 압축하며, 블록을 연결하는 동시에 그 무결성을 보장하는 역할을 합니다.
공개키를 해싱한 값을 지갑 주소로 사용하여 거래를 익명화할 수 있습니다. 트랜잭션 기록에는 해시값으로 암호화된 지갑 주소와 송금 및 잔액을 확인할 수 있을 뿐, 해당 지갑의 주인이 누구인지 파악할 수는 없습니다.
블록체인에서 해시 함수를 사용해 무결성을 검증하는 경우는 두 가지가 있습니다.
최초의 블록체인 암호화폐인 비트코인에서는 PoW(작업 증명) 방식을 사용해 어떤 노드가 블록을 만들지 정합니다. 작업 증명 방식에서는 특정 조건을 만족하는 해시값을 만족하기 위해 입력값인 논스를 찾아야 합니다. 이를 가장 먼저 찾는 노드에게 블록을 채굴할 권한을 주며 채굴에 대한 보상으로 비트코인을 제공합니다.
블록체인에서 사용되는 해시 함수는 단방향 알고리즘을 사용하고, 입력값이 조금만 달라져도 아예 다른 형태로 변하기 때문에, 해싱된 값을 이용하여 기존의 값을 찾기란 매우 어렵습니다. 따라서, 해시 함수는 일방향 일반적으로 암호 해시 함수를 복호화하기 위해서는 수많은 무차별 대입을 시도해야 합니다.
한편으로, 서로 다른 입력값을 해시 함수에 넣었는데 동일한 출력값을 내뱉는 경우도 있습니다. 이를 충돌이라고 합니다. 충돌은 시스템에 심각한 위협이 될 수 있기 때문에 충돌은 해시 함수를 만들 때 가장 중요한 요소 중 하나로 작용합니다.
이를 종합해보면, 암호 해시 함수의 안정성을 평가하는 요소를 3가지로 볼 수 있습니다.