DevOps/그 외

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

luvris2 2023. 5. 22. 18:05
반응형

 

디지털 서명 (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 확장자 명으로 백업

 

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


참고

 

반응형