해시 함수의 단방향성은 정보 손실에 기인합니다. 임의 길이의 입력을 고정 길이의 출력으로 압축하므로, 원래 입력보다 정보가 줄어듭니다. 수학적으로 하나의 해시값에 대응하는 입력은 무한히 많기 때문에, 출력에서 원래 입력을 특정하는 것이 계산적으로 불가능합니다. 이를 역상 저항성(preimage resistance)이라 합니다.
256은 출력 해시값의 비트 수입니다. 256비트 = 32바이트 = 16진수 64자리입니다. 가능한 해시값의 수는 2^256으로, 이는 약 1.16 x 10^77개입니다. 참고로 관측 가능한 우주의 원자 수가 약 10^80개이므로, 해시 충돌이 발생할 확률은 사실상 0에 가깝습니다.
이론적으로는 가능합니다(비둘기집 원리). 무한한 입력을 유한한 출력에 대응시키므로 반드시 충돌이 존재합니다. 하지만 SHA-256의 경우 충돌을 찾으려면 약 2^128번의 연산이 필요하며, 현재 기술로는 수십억 년이 걸립니다. MD5나 SHA-1은 충돌이 발견되어 더 이상 안전하지 않습니다.
눈사태 효과가 없다면, 입력의 패턴이 출력에 반영되어 역추적이 가능해집니다. 예를 들어 "입력을 1 늘리면 해시가 1 증가"한다면, 해시에서 원래 입력을 쉽게 추측할 수 있습니다. 눈사태 효과는 이런 패턴을 완전히 제거하여 블록체인에서 위변조 감지와 데이터 보호를 가능하게 합니다.
비트코인은 SHA-256(SHA-256(x)), 즉 이중 해싱(double hashing)을 사용합니다. 이는 길이 확장 공격(length extension attack)에 대한 방어입니다. SHA-256 단일 적용 시, 해시값과 메시지 길이를 알면 원본을 모르고도 확장된 메시지의 해시를 계산할 수 있는데, 이중 해싱은 이를 방지합니다.
공개키와 개인키는 수학적으로 쌍을 이룹니다. 개인키(임의의 큰 수)에서 타원곡선 연산을 통해 공개키를 도출합니다. 이 과정은 단방향이어서 개인키 → 공개키는 가능하지만, 공개키 → 개인키는 불가능합니다. 이것이 타원곡선 이산 로그 문제(ECDLP)의 어려움에 기반합니다.
복구가 불가능합니다. 블록체인은 중앙 관리자가 없으므로 "비밀번호 찾기"가 존재하지 않습니다. 개인키를 잃으면 해당 주소의 자산에 영영 접근할 수 없습니다. 실제로 James Howells는 비트코인 개인키가 담긴 하드디스크를 버려 약 수천억 원 상당의 비트코인을 잃었습니다. 이것이 니모닉(Mnemonic) 문구 백업의 중요성입니다.
엄밀히 다릅니다. 디지털 서명(Digital Signature)은 공개키 암호를 이용한 수학적 서명으로, 위조가 계산적으로 불가능합니다. 전자 서명(Electronic Signature)은 더 넓은 개념으로, 이미지 서명, PIN 입력, 생체 인식 등을 모두 포함합니다. 디지털 서명은 전자 서명의 한 종류이며, 가장 안전한 형태입니다.
ECDSA(Elliptic Curve Digital Signature Algorithm)는 비트코인과 이더리움에서 트랜잭션 서명에 사용됩니다. 사용자가 코인을 보내려면: (1) 트랜잭션 데이터를 해시하고, (2) 개인키로 서명하여 (r, s) 값을 생성하고, (3) 네트워크에 트랜잭션과 서명을 전파합니다. 검증자는 공개키로 서명을 확인하여 해당 사용자가 정당한 소유자인지 확인합니다.
이론적으로 Shor 알고리즘은 ECC(타원곡선)를 해독할 수 있어, 공개키에서 개인키를 도출할 수 있습니다. 하지만 이를 위해서는 수백만 큐비트의 양자 컴퓨터가 필요하며, 현재(2026년) 가장 큰 양자 컴퓨터도 수천 큐비트 수준입니다. 또한 비트코인 주소는 공개키의 해시이므로, 코인을 사용하기 전까지는 공개키가 노출되지 않아 추가적인 보호가 있습니다.
PQC(Post-Quantum Cryptography)는 양자 컴퓨터로도 깨뜨리기 어려운 암호 알고리즘입니다. 기존 RSA/ECC가 "소인수분해"나 "이산 로그"의 어려움에 기반하는 반면, PQC는 격자(Lattice), 코드, 해시 기반 등 양자 컴퓨터에 저항성이 있는 수학적 문제를 사용합니다. NIST는 2024년 CRYSTALS-Kyber(키 교환)와 CRYSTALS-Dilithium(서명)을 표준으로 선정했습니다.
WIA-SEC-002는 블록체인 보안에서 양자 위협 대응 프레임워크를 제공합니다. 핵심 권고사항은: (1) 하이브리드 방식으로 기존 알고리즘과 PQC를 병행 사용, (2) 암호 민첩성(Crypto Agility) 확보를 위한 모듈화 설계, (3) 장기 보관 데이터에 대한 우선적 PQC 적용입니다. 시뮬레이터를 통해 기존 vs PQC 알고리즘의 성능 차이를 직접 비교할 수 있습니다.
"지금 수확하고, 나중에 해독한다"는 전략입니다. 공격자가 현재 암호화된 데이터를 대량으로 수집(harvest)해 놓고, 미래에 양자 컴퓨터가 실용화되면 그때 해독(decrypt)한다는 것입니다. 따라서 현재 데이터가 10~20년 후에도 기밀이어야 하는 경우(정부, 군사, 의료), 지금부터 PQC로 전환해야 합니다.
이 수업에서는 개념적 이해에 초점을 맞추므로 깊은 수학 지식이 필수는 아닙니다. 하지만 더 깊이 공부하려면 정수론, 추상대수학, 확률론이 도움됩니다. 특히 타원곡선 암호를 제대로 이해하려면 유한체(Finite Field) 위의 타원곡선에 대한 수학적 배경이 필요합니다.
네, 여러 대안이 있습니다:
import hashlib; hashlib.sha256(b"test").hexdigest()echo -n "test" | sha256sum (Linux/Mac)키 생성과 서명은 Python의 ecdsa 라이브러리로 실습할 수 있습니다.
암호학은 IT의 거의 모든 분야에서 사용됩니다: