공개키와 비밀키(개인키)는 단지 암호화, 복화화에만 쓰이는 게 아니였다!
공개키는 암호화에도 쓰이지만, 디지털 서명 검증에도 쓰인다.
비밀키(개인키)는 복호화에도 쓰이지만, 디지털 서명 생성에도 쓰인다!
디지털 서명은 송신자가 개인키로 메시지 해시 값을 암호화한다. 이 암호화된 해시 값이 서명이다!
수신자는 송신자의 공개키를 사용해서 서명된 해시 값을 복호화 한다.
그리고 메시지의 실제 해시 값과 비교한다.
만약 두 해시 값이 일치하면 송신자 신원이 검증된 것!
메시지 준비: Alice는 Bob에게 보낼 메시지를 작성합니다.
해시 계산: Alice는 메시지의 해시 값을 계산합니다. 이 해시는 메시지의 짧은 요약으로, 메시지의 무결성을 검증하는 데 사용됩니다.
서명 생성: Alice는 자신의 개인키로 해시 값을 암호화합니다. 이 암호화된 해시 값이 서명입니다. 이 서명은 메시지가 Alice에 의해 작성되었고 메시지 전송 중에 변경되지 않았음을 보증합니다.
메시지 암호화: Alice는 Bob의 공개키를 사용하여 전체 메시지를 암호화합니다. 이렇게 함으로써 메시지는 Bob만이 복호화할 수 있게 됩니다.
전송: Alice는 암호화된 메시지와 함께 서명을 Bob에게 전송합니다.
메시지 복호화: Bob은 자신의 개인키를 사용하여 받은 메시지를 복호화합니다. Bob만이 자신의 개인키를 가지고 있으므로, Bob만이 이 메시지를 볼 수 있습니다.
서명 검증:
Bob은 Alice의 공개키를 사용하여 받은 서명을 복호화하여 해시 값을 얻습니다.
Bob은 받은 메시지의 해시 값을 직접 계산합니다.
Bob은 두 해시 값을 비교합니다. 만약 두 해시 값이 일치하면, 메시지가 전송 중에 변경되지 않았으며 Alice에 의해 보내진 것임을 확인할 수 있습니다.
개잍키가 먼저 생성됨. 생성된 개인키를 바탕으로 공개키를 생성.