본문 바로가기

Security

OpenSSL을 이용한 ECDSA 시뮬레이션

시나리오

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 확인

 

'Security' 카테고리의 다른 글

AES GCM  (0) 2021.02.03