반응형
디지털 서명 (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 확장자 명으로 백업
- 파일 생성 확인
- 생성된 키 파일은 절대 공유해서는 안됩니다.
참고
반응형