디지털 서명이란 무엇인가요?
디지털 서명은 개인 키를 사용하여 메시지나 문서에 대한 서명을 생성하는 암호화 방식으로, 대응하는 공개 키를 가진 누구나 데이터의 진본성과 무결성을 확인하기 위해 서명을 검증할 수 있다.
다른 이름: code signing, message signing
디지털 서명은 세 가지 보장을 제공한다. 인증(메시지가 주장된 발신자에 의해 생성됨), 무결성(메시지가 서명 이후 변경되지 않음), 부인 방지(서명자가 서명을 부인할 수 없음). 이 속성들은 디지털 서명을 많은 법적 관할권에서 법적 구속력이 있게 하고 소프트웨어 배포, 금융 트랜잭션, 신원 검증에 필수적으로 만든다.
서명 과정은 먼저 암호화 해시 함수(SHA-256 등)로 메시지를 해싱하여 고정 크기 다이제스트를 생성하고, 그 다이제스트를 서명자의 개인 키로 암호화하는 방식으로 작동한다. 검증은 역방향이다. 검증자가 서명자의 공개 키로 서명을 복호화하고 독립적으로 메시지를 해싱하여 두 다이제스트를 비교한다. 일치하면 서명이 유효하다. 일반적인 알고리즘은 RSA 서명, ECDSA(Elliptic Curve Digital Signature Algorithm), EdDSA다.
디지털 서명은 HMAC과 다르다. 둘 다 무결성을 검증하지만 HMAC은 공유 비밀 키를 사용한다. 양 당사자가 코드를 생성하고 검증할 수 있으므로 부인 방지를 제공할 수 없다. 디지털 서명은 비대칭 키를 사용하므로 개인 키 보유자만 서명할 수 있고 공개 키를 가진 누구나 검증할 수 있다. 이 비대칭성이 부인 방지를 가능하게 하고 공개 검증 시나리오에 디지털 서명을 적합하게 만든다.
Vaulted가 디지털 서명을 사용하는 방법
Vaulted는 핵심 암호화 흐름에 디지털 서명을 사용하지 않는다. 공유 모델이 대칭적이기 때문이다. 발신자와 수신자가 URL 프래그먼트를 통해 동일한 키를 공유하며 부인 방지나 공개 검증이 필요하지 않다. 그러나 Vaulted의 HTTPS 연결을 보호하는 TLS 인증서는 서버의 신원을 브라우저에 증명하기 위해 디지털 서명에 의존하며, 배포된 Vaulted 코드의 무결성은 CI/CD 파이프라인의 코드 서명을 통해 검증된다.