디지털 서명 - 개념, 절차, 생성 방법 (디지털 서명 파일(keystore) 만들기)

반응형

 

디지털 서명 (Digital Signature)

정의

네트워크에서 송신자의 신원을 증명하는 방법

송신자가 자신의 비밀키로 암호화한 메시지를 수신자가 송신자의 공용 키로 해독하는 과정

문서 또는 메시지에 대한 신뢰성, 무결성 및 부인 방지를 제공하는 데 사용되는 메커니즘


디지털 서명 파일 생성 절차

  • 해싱
    • 서명에 필요한 문서 또는 메시지의 해시 값 생성
    • 해시 함수는 입력 데이터를 가져와 고유한 고정 크기 문자열 생성
    • 일반적으로 사용되는 해시 함수는 SHA-256 / MD 5
  • 개인 키 서명
    • 해시 값은 보낸 사람의 개인 키를 사용하여 암호화하여 디지털 서명 생성
    • 공개-개인 키를 쌍으로 디지털 서명과 서명 검증 진행
    • 개인 키는 서명자가 기밀로 유지
  • 서명 첨부
    • 원본 문서나 메시지에 디지털 서명을 첨부하여 서명된 파일 생성
    • 문서에 서명을 추가 및 포함하거나 별도의 파일을 생성하여 첨부

디지털 서명 확인 절차

  • 해싱
    • 수신자는 받은 문서에 동일한 해시 함수를 적용하여 해시 값 생성
  • 공개 키 복호화
    • 수신자는 발신자와 관련된 공개 키 사용
    • 문서에 첨부된 디지털 서명을 복호화하여 원본 해시 값 확인
  • 비교
    • 수신 문서의 계산된 해시 값과 복호화된 해시 값 비교
    • 일치하면 서명이 생성된 이후 문서가 변경되지 않음을 의미
    • 즉, 서명이 유효함

디지털 서명 파일 만들기 

  • 윈도우의 경우, USER_NAME 부분에 윈도우 로그인 계정명 입력
# Mac OS
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

# Windows
keytool -genkey -v -keystore c:/Users/USER_NAME/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key -storetype JKS

 

  • 포스팅을 작업하는 글쓴이는 윈도우 환경이므로 윈도우 계정 사용자 이름을 넣어 명령어를 실행하였습니다.

 

  • 키 저장소 비밀번호 입력
    • 별도로 메모해두는 것을 권장
    • 비밀번호 입력 시 입력 내용이 보이지 않습니다. 당황하지 말고 그대로 비밀번호 입력해주시면 됩니다.

 

  • 이 후 아래의 내용은 빈 칸으로 입력해도 됩니다. (엔터 입력)
  • 내용 확인에서 '~이(가) 맞습니까? [아니요]' 질문에 '예' 라고 입력 후 엔터
  • 혹은 영어로 물어볼 경우 'yes' 입력

 

  • 엔터

 

  • 키를 생성하면 뜨는 메시지는 JKS에서 PKCS12 형식으로 마이그레이션을 권장하는 메시지입니다.
  • 제안이기 때문에 필요에 따라 추가 진행을 하여도 되고 안하셔도 됩니다.

 

  • PKCS12 형식으로 마이그레이션 하기
  • USER_NAME 부분에 윈도우 로그인 계정명 입력
# Windows
keytool -importkeystore -srckeystore c:/Users/USER_NAME/key.jks -destkeystore c:/Users/USER_NAME/key.jks -deststoretype pkcs12

 

  • 지정해둔 개인 키의 비밀번호를 입력 후 엔터
  • PKCS12 형식으로 마이그레이션 성공
  • 또한, 기존의 파일은 .old 확장자 명으로 백업

 

  • 파일 생성 확인
  • 생성된 키 파일은 절대 공유해서는 안됩니다.


참고

 

반응형