DSA

DSA(Digital Signature Algorithm, 디지털 서명 알고리즘)는 전자 문서나 메시지의 작성자가 누구인지내용이 변조되지 않았는지를 증명하기 위한 공개키 기반 서명 표준이다. 1991년 미국 NIST가 FIPS 186으로 표준화했다.

디지털 서명이 푸는 문제

  • 인증(Authentication): 메시지 작성자가 누구인가?
  • 무결성: 내용이 중간에 바뀌지 않았는가?
  • 부인 방지(Non-repudiation): 작성자가 “내가 안 보냈다”고 부인할 수 없는가?

동작 흐름

  1. 서명 생성: 송신자가 개인키로 메시지의 해시에 서명
  2. 전송: 메시지 + 서명 함께 전달
  3. 검증: 수신자가 송신자의 공개키로 서명을 확인
서명 = Sign(개인키, Hash(메시지))
검증 = Verify(공개키, 서명, Hash(메시지))

다른 서명 알고리즘과 비교

알고리즘기반 수학특징
RSA큰 수의 소인수분해가장 보편적
DSA이산 로그NIST 표준, 서명 전용
ECDSA타원 곡선DSA + ECC, 짧은 키로 동일 보안

보안 주의

  • 같은 서명용 난수를 두 번 사용하면 개인키가 노출된다 (소니 PS3 사고 사례)
  • 신뢰할 수 있는 공개키 인증서가 있어야 의미가 있다 (PKI)

관련 노트