안전한 통신을 묶는 해시·ECDH·디지털 서명
Cryptographic Hash, ECDH 키 교환, 디지털 서명의 역할과 TLS·API·배포 환경에서의 운영 기준을 정리합니다.
2026-08-14 · 최초 발행 2024-04-29
해시·키 합의·인증이 함께 구성하는 보안 채널
안전한 통신에서는 메시지가 바뀌지 않았는지, 통신 상대가 누구인지, 세션 키가 노출되지 않는지를 따로 다뤄야 한다. Cryptographic Hash, Diffie-Hellman 기반 키 교환, Digital Signatures는 이 요구를 나눠 맡고 TLS, API 인증, 블록체인 같은 환경에서 함께 사용된다.
해시는 입력을 고정 길이 값으로 바꾼다
Cryptographic Hash는 임의 길이의 입력을 고정 길이 출력으로 매핑하는 단방향 함수다. SHA-256/384/512, BLAKE2, SHA-3가 대표적이다.
보안성은 역상 저항, 제2역상 저항, 충돌 저항으로 설명한다. SHA-256의 충돌 탐색 난이도는 ≈ 2^128 수준이다. 해시는 메시지 다이제스트 관리뿐 아니라 HMAC을 통한 무결성·인증, KDF를 통한 키 유도에도 쓰인다.
공개 채널에서 공유 비밀을 만드는 DH와 ECDH
Diffie-Hellman 키 교환은 공개 채널에서 비밀 키를 공유하기 위한 프로토콜이다. 정수 DH와 타원곡선 기반 ECDH가 있으며, ECDH에는 Curve25519와 P-256을 권고한다.
세션마다 에페메럴 키를 쓰는 ECDHE는 Perfect Forward Secrecy(PFS)를 제공한다. 장기 키가 유출되더라도 과거 세션을 보호할 수 있다는 의미다. 다만 키 교환만으로는 통신 상대를 확인할 수 없으므로 MITM 공격에 취약하다. 서버 인증서와 디지털 서명을 결합해야 한다.
디지털 서명은 발신자와 메시지를 검증한다
디지털 서명은 개인키로 서명하고 공개키로 검증하는 메시지 인증 메커니즘이다. RSA-PSS, ECDSA, Ed25519가 사용된다.
서명은 출처 인증, 무결성, 부인 방지를 제공한다. 서명 데이터 크기와 검증 속도는 알고리즘마다 다르다. 신뢰 체계는 루트·중간 CA, 인증서, CRL/OCSP로 구성된 PKI를 통해 이어진다.
알고리즘보다 중요한 선택과 운영 조건
무결성 확인에는 해시를 사용하고, 인증까지 필요하면 HMAC을 사용한다. 공유 비밀에서 세션 키를 만들 때는 HKDF를 사용한다. SHA-256/384, SHA-3-256, BLAKE2b/s가 권장되며 MD5와 SHA-1은 사용하지 않는다. 동일 입력·출력의 관리, 솔트와 도메인 구분, 충돌 리스크도 함께 관리 대상이다.
키 교환에는 Curve25519 또는 NIST P-256 기반 ECDH를 선택할 수 있다. 정수 DH를 쓸 때는 안전한 그룹과 소수를 골라야 한다. 세션 단위 에페메럴 키와 서버 인증서 기반 서명을 함께 적용해 PFS와 MITM 방지를 구성한다.
서버 인증에는 ECDSA P-256 또는 Ed25519를 권장한다. 호환성이 필요하면 RSA-2048/3072 with PSS를 사용할 수 있다. 인증서 만료와 회수(OCSP/CRL), 키 롤오버 자동화, CT 로그 모니터링을 운영에 포함하고, 키 사용 용도(KU/EKU)와 서명 스킴(PSS vs PKCS#1 v1.5)을 명시한다.
TLS 1.3 기준 암호 스위트는 ECDHE, AEAD(AES-GCM/ChaCha20-Poly1305), SHA-256/384의 조합을 권장한다. 공유 비밀은 HKDF Extract-Expand로 세션 키로 파생한다. 하이브리드 KEX(ECDH + PQC KEM)는 최신 정보 확인을 전제로 검토할 수 있다.
TLS와 API, 배포 경로에서의 결합 방식
TLS 1.3 핸드셰이크는 ECDHE로 키를 합의하고, 서버 인증서와 서명으로 서버를 인증한다. 이후 Transcript 해시 기반 Finished를 검증하고 HKDF로 대칭키를 파생한다. ECDHE 키의 일시성을 보장하고, OCSP Stapling/MC 전략과 세션 재개를 운영에 반영해야 한다. 0-RTT에는 재전송 공격 보호 정책이 필요하다.
API나 Webhook에서 단일 발신자와 수신자가 비밀을 공유하는 환경이라면 HMAC-SHA256을 사용할 수 있다. 다자 환경이거나 공개 검증이 필요하면 Ed25519 디지털 서명이 적합하다. 타임스탬프와 본문 canonicalization 뒤에 서명·검증을 수행하고, nonce와 리플레이 방어를 더한다.
파일 배포에서는 SHA-256 해시를 공개하고 다운로드 뒤 이를 검증한다. 공급망에는 코드 서명을 병행한다. DB와 로그는 이벤트 해시 체인(링크드 해시)으로 변조를 탐지하고 감사 증적을 보존할 수 있다. 블록체인과 분산원장은 Merkle tree로 거래 무결성을 검증하며, ECDSA/Ed25519로 계정 소유를 증명한다. 이 경우에도 키 관리와 회수 정책이 필요하다.
핸드셰이크에서 검증 실패를 처리하는 위치
보안 기능별 운영 특성
| 범주 | Cryptographic Hash | Diffie-Hellman(ECDH) | Digital Signatures |
|---|---|---|---|
| 성능 | 매우 높음(대용량 처리 우수) | 높음(곡선 선택에 따라 상이) | 중간~낮음(검증은 빠름, 생성은 알고리즘 의존) |
| 확장성 | 우수(병렬화 용이) | 우수(에페메럴 병렬 핸드셰이크) | 보통(검증 스케일 아웃 필요) |
| 일관성 | 결정적 출력, 안정적 | 파라미터/난수 품질에 의존 | PKI 정책·키 관리에 의존 |
| 안정성 | 충돌 저항 알고리즘 선택 시 높음 | 안전한 곡선·그룹 사용 시 높음 | 안전한 서명 스킴 사용 시 높음 |
| 운영 편의 | 간편(업데이트 용이) | 중간(키 수명/랜덤니스 관리) | 복잡(PKI, 회수/갱신 관리) |
보안성과 운영 부담 사이의 선택
SHA-256은 충돌 탐색 난이도가 ≈ 2^128이며, 임의 충돌 발생 확률은 사실상 무시 가능한 범주다. ECDHE는 장기 키 유출 뒤에도 과거 세션을 보호하고, 디지털 서명은 위·변조와 위장 행위를 차단한다.
Ed25519 서명은 64바이트이며 빠른 검증을 제공한다. RSA-2048 서명은 256바이트이고 호환성이 우수하다. TLS 1.3은 1-RTT로 수립할 수 있으며 세션 재개로 지연을 최소화한다. 키와 인증서의 수명 관리를 자동화하면 장애와 만료 사고를 줄이고 운영 리스크를 낮출 수 있다.
권장 조합은 SHA-256/384, HKDF, Curve25519/P-256 기반 ECDHE, Ed25519 또는 ECDSA P-256이다. 호환성이 필요하면 RSA-PSS를 고려한다. MD5, SHA-1, RSA PKCS#1 v1.5 서명, 취약한 파라미터와 재사용 nonce는 사용하지 않는다.
키 수명은 짧게 유지하고 HSM/TPM 저장, AAD를 포함한 AEAD, 안전한 난수(CSPRNG)를 사용한다. 인증서 자동화(ACME), OCSP Stapling 기반 회수 처리, 키 롤오버 계획도 필요하다. 하이브리드 KEX(ECDH+Kyber)와 PQ 서명인 Dilithium은 성숙도와 상호운용성의 최신 정보를 확인하면서 검토하며, 성능과 메시지 크기 증가를 함께 평가한다.
배포 전 확인할 정책 항목
요구사항을 무결성만 필요한 경우, 인증이 필요한 경우, 공개 검증이 필요한 경우로 나눈다. TLS 1.3, ECDHE, AEAD(AES-GCM/ChaCha20-Poly1305), SHA-256/384, HKDF를 기준 스택으로 잡을 수 있다.
곡선은 Curve25519 또는 P-256을 사용하고, 서명은 Ed25519/ECDSA를 선택한다. 호환성이 필요하면 RSA-2048 PSS를 사용한다. 키는 에페메럴 세션 키로 운용하며 인증서 정책은 90일~1년으로 잡는다.
만료, CT 로그, OCSP 상태, 키 사용량을 모니터링한다. 상호운용성 및 사이드채널(타이밍)을 점검하고 카나리 배포를 수행한다. 암호 스위트와 정책, 롤백·회수 절차도 문서화한다.