시나리오
A가 생성한 메세지를 B에 전달하려고 하는데 메세지를 전달받은 B에서 메세지가 A가 보낸 그대로인지 확인하고자 합니다.
- ECDSA(타원곡선을 이용한 전자서명 알고리즘)을 사용합니다.
- 타원곡선은 prime256v1을 사용합니다.
A | B |
준비작업 | |
키 페어 생성을 위한 파라메터 파일 생성 openssl ecparam -name prime256v1 -out keyParam.pem 결과물 : keyParam.pem 참고 : 키 페어 생성을 위한 파라메터일 뿐. 키 생성 후 버려도 되는 정보. |
|
키 페어 생성 openssl ecparam -in keyParam.pem -genkey -noout -out key.pem 결과물 : key.pem 참고 : 가장 중요한 정보. A 자신이 안전하게 잘 보관해야 함. B에게도 공유해주면 안됨. |
|
public key 생성 ( PEM 형식 ) openssl ec -in key.pem -pubout -out publicKey.pem 결과물 : publicKey.pem |
|
public key 생성 ( DER 형식 ) openssl ec -in key.pem -pubout -outform der -out publicKey.der 결과물 : publicKey.der |
|
B가 원하는 형식에 따라 publicKey.pem이나 publicKey.der을 B로 전달. | |
시나리오 수행 * 준비작업을 통해 A는 키 페어를 가지고 있고, B는 키 페어의 공개키를 가지고 있음 |
|
B로 보낼 메세지 생성 결과물 : message |
|
생성된 메세지에 대한 전자서명 생성 openssl dgst -sha256 -sign key.pem -out signature message 결과물 : signature |
|
message와 signature를 B로 전달 | |
전달받은 message와 signature에 대해 전자서명 검증 openssl dgst -sha256 -verify publicKey.pem -signature signature message 전자서명 검증 결과 verification이 되지 않는다면 message를 신뢰할 수 없음 |
|
message를 신뢰할 수 있는 경우 message 확인 |