해시 알고리즘과 전자서명, 무결성과 신뢰를 만드는 방식

해시 함수와 전자서명의 원리, MD5·SHA 계열과 RSA·ElGamal·DSS·KCDSA의 특성, 구현 시 보안 고려사항을 정리한다.

2026-08-14 · 최초 발행 2025-05-23

데이터의 흔적을 고정 길이 값으로 남기는 해시 함수

해시 알고리즘은 길이가 제각각인 입력 데이터를 정해진 길이의 값으로 바꾸는 수학적 함수다. 생성된 해시값은 원본 데이터를 복원하는 용도가 아니라, 데이터가 동일한지 확인하는 기준으로 쓰인다.

해시 함수에 기대하는 성질은 세 가지다. 해시값만으로 원문을 되돌릴 수 없어야 하고, 서로 다른 입력이 같은 해시값을 만드는 충돌 가능성은 최소화해야 한다. 입력의 작은 차이도 결과값에는 큰 변화를 만들어야 한다.

이 특성은 데이터 무결성 검증, 패스워드 저장, 디지털 서명, 블록체인 기술에 활용된다.

원본 데이터해시 함수해시값

MD5와 SHA 계열의 차이

MD5(Message Digest Algorithm 5)는 로널드 리베스트가 1991년에 개발한 알고리즘으로, 128비트(16바이트) 해시값을 생성한다. 처리 속도는 빠르지만 충돌 공격에 취약하며, 2004년 왕샤오윤(Wang Xiaoyun)에 의해 충돌이 발견됐다. 현재는 보안 목적 사용을 지양한다.

원본: "안녕하세요"
MD5 해시값: "54186d3b245dc7fabf93ff37e978a38e"

SHA-1(Secure Hash Algorithm 1)은 미국 국가안보국(NSA)이 1995년에 개발했으며, 160비트(20바이트) 해시값을 만든다. MD5보다 안전성이 높았으나 2017년 구글이 충돌 취약점을 증명했다. 보안 용도로는 권장되지 않으며 SHA-2와 SHA-3로 대체되고 있다.

원본: "안녕하세요"
SHA-1 해시값: "58aff417a84e4e06449e3e5fd4eec4b20f5d209e"

SHA-2 계열에는 SHA-224, SHA-256, SHA-384, SHA-512가 포함된다. 보안성이 높아 널리 사용되고, SHA-256은 비트코인 등을 포함한 블록체인에서도 활용된다. SHA-3은 2015년에 표준화됐고, SHA-2와 다른 스폰지 구조를 사용한다. 미래의 양자 컴퓨팅 공격을 고려한 설계라는 점도 구분된다.

SHA 계열SHA-1SHA-2SHA-3SHA-224SHA-256SHA-384SHA-512SHA3-224SHA3-256SHA3-384SHA3-512

해시값에 서명자를 결합하는 전자서명

전자서명은 디지털 문서의 진위성, 무결성, 부인방지를 보장하는 암호화 기술이다. 검증자는 서명을 통해 서명자의 신원을 확인하고, 문서가 변경되지 않았는지 판단하며, 서명자가 자신의 서명 사실을 부인하지 못하게 할 수 있다.

서명 생성은 메시지의 다이제스트, 즉 해시값을 만드는 데서 시작한다. 서명자는 개인키로 이 다이제스트를 암호화하고, 그 결과가 전자서명이 된다. 수신자는 전달받은 메시지에서 해시값을 다시 생성한 뒤 공개키로 서명을 검증해 두 값을 비교한다.

수신자송신자수신자송신자메시지 해싱개인키로 해시값 암호화(서명)메시지와 서명 전송메시지 해싱공개키로 서명 복호화해시값 비교하여 검증

서명 알고리즘이 선택하는 수학적 기반

RSA(Rivest-Shamir-Adleman)는 리베스트, 샤미르, 에이들만이 1977년에 개발한 전자서명 알고리즘이다. 소인수분해 문제의 계산 복잡성을 기반으로 하며, 가장 널리 사용된다. 키 길이는 일반적으로 2048비트 이상을 사용한다. 구현이 쉽고 안전성이 검증됐다는 장점이 있지만, 키 길이에 따른 성능 제약이 있다. SSL/TLS 인증서, 이메일 암호화(PGP), 정부 시스템 전자서명에 활용된다.

ElGamal은 타히르 엘가말(Taher ElGamal)이 1985년에 개발했으며 이산대수 문제의 난이도에 기반한다. RSA보다 서명 크기가 크고, 같은 메시지에도 서로 다른 서명을 만들 수 있는 확률적 알고리즘이다. 이 특성은 재생 공격에 강점이 되지만, 서명 크기가 크고 처리 속도가 느리다. PGP와 GNU Privacy Guard(GPG)에서 활용된다.

DSS(Digital Signature Standard)는 미국 NIST가 1994년에 표준화한 방식으로 DSA(Digital Signature Algorithm)를 사용한다. 이산대수 문제를 기반으로 하며, 서명 크기는 RSA보다 작은 320비트다. 서명 생성 속도와 서명 크기에는 장점이 있지만 검증 속도는 RSA보다 느리다.

KCDSA(Korean Certificate-based Digital Signature Algorithm)는 한국정보보호진흥원(현 KISA)이 1996년에 개발한 한국형 전자서명 알고리즘이다. DSA를 바탕으로 개선됐고 이산대수 문제에 기반한다. 1998년 KICS(한국정보통신표준)에 채택됐으며, 공인인증서와 정부 전자서명 시스템에 활용됐다. 국내 암호 기술 독자 개발의 출발점이자 전자정부와 전자상거래 기반을 마련했다는 역사적 의미가 있다.

인증서, 거래, 전자문서에서의 검증

PKI(Public Key Infrastructure)는 전자서명과 인증서를 신뢰 관계 안에서 운용하기 위한 구조다. CA(Certificate Authority)는 인증기관이고, 인증서는 공개키의 신뢰성을 보장한다. CRL(Certificate Revocation List)은 폐기된 인증서 목록을 제공한다.

인증서 요청요청 전달인증서 발급폐기목록 발행인증서 검증사용자등록기관 RA인증기관 CACRL사용자2

블록체인에서는 개인키로 트랜잭션에 서명해 소유권을 증명하고 이중지불을 방지한다. 스마트 계약에서도 계약 당사자의 신원을 확인하고 계약 내용의 무결성을 보장하는 데 전자서명을 사용한다.

전자문서 시스템에서는 종이 없는(Paperless) 계약 체결과 법적 효력 보장에 연결된다. 전자정부 서비스는 공문서 전자화와 행정 효율성 증대, 시민 참여 플랫폼의 인증에 전자서명을 활용한다.

구현 단계에서 점검할 보안 조건

해시 알고리즘은 충돌 저항성을 기준으로 선택하며 SHA-256 이상을 권장한다. 처리 속도와 보안성의 균형은 사용 목적에 따라 판단해야 하고, 양자 컴퓨팅을 고려한다면 SHA-3도 검토 대상이다.

전자서명 구현에서는 RSA의 경우 최소 2048비트 이상 키 길이를 권장한다. 취약한 난수 생성기(RNG)는 보안 위협이 될 수 있으며, 개인키 보호는 전자서명 보안의 핵심이다. 서명 시점을 입증하려면 신뢰할 수 있는 타임스탬프도 필요하다.

양자 컴퓨팅은 공개키 암호와 해시 함수 모두에 영향을 준다. Shor 알고리즘은 RSA와 ElGamal 같은 공개키 암호를 해독할 수 있고, Grover 알고리즘은 해시 함수 공격의 효율성을 높인다. 이에 대응하는 포스트 양자 암호(PQC) 후보로는 격자 기반(Lattice-based) 암호, 해시 기반 서명인 XMSS와 LMS, 다변수 다항식 암호가 있다.

전자서명은 전자정부, 금융, 의료, IoT 등으로 적용 범위를 넓혀가고 있다. 양자 내성 암호 알고리즘, 경량화된 해시 함수와 서명 알고리즘, 새로운 수학적 난제 기반 암호화 기법의 발전이 이어지는 이유도 여기에 있다.

해시 알고리즘전자서명정보보안공개키 암호PKI