DSA
DSA(Digital Signature Algorithm, 디지털 서명 알고리즘)는 전자 문서나 메시지의 작성자가 누구인지와 내용이 변조되지 않았는지를 증명하기 위한 공개키 기반 서명 표준이다. 1991년 미국 NIST가 FIPS 186으로 표준화했다.
디지털 서명이 푸는 문제
- 인증(Authentication): 메시지 작성자가 누구인가?
- 무결성: 내용이 중간에 바뀌지 않았는가?
- 부인 방지(Non-repudiation): 작성자가 “내가 안 보냈다”고 부인할 수 없는가?
동작 흐름
- 서명 생성: 송신자가 개인키로 메시지의 해시에 서명
- 전송: 메시지 + 서명 함께 전달
- 검증: 수신자가 송신자의 공개키로 서명을 확인
서명 = Sign(개인키, Hash(메시지))
검증 = Verify(공개키, 서명, Hash(메시지))
다른 서명 알고리즘과 비교
| 알고리즘 | 기반 수학 | 특징 |
|---|---|---|
| RSA | 큰 수의 소인수분해 | 가장 보편적 |
| DSA | 이산 로그 | NIST 표준, 서명 전용 |
| ECDSA | 타원 곡선 | DSA + ECC, 짧은 키로 동일 보안 |
보안 주의
- 같은 서명용 난수를 두 번 사용하면 개인키가 노출된다 (소니 PS3 사고 사례)
- 신뢰할 수 있는 공개키 인증서가 있어야 의미가 있다 (PKI)
관련 노트
- ECC: ECDSA의 기반이 되는 타원 곡선 암호
- Elgamel: DSA의 모태가 되는 알고리즘
- 일방향 암호화 방식: 서명에 쓰이는 해시 함수
- 기밀성 · 무결성: 디지털 서명이 보장하는 보안 원칙