보안
전자서명
MDanderson
2025. 2. 7. 23:20
-서명과정-
1. A의 공개키와 개인키 쌍을 생성한다.
키 쌍을 생성하는 위치와 도구
2.1 일반적인 환경
- 사용자의 컴퓨터:
- 키 쌍은 사용자가 사용하는 컴퓨터에서 소프트웨어를 통해 생성됩니다.
- 예: OpenSSL, GPG, Keytool(Java), SSH-keygen.
- 스마트폰:
- 모바일 인증 앱이나 전자서명 앱에서 키 쌍을 생성.
- 예: 금융기관 앱, FIDO 인증 앱.
- 하드웨어 보안 장치:
- 키는 HSM(Hardware Security Module), 스마트카드, 보안 토큰 같은 장치에서 생성되고 안전하게 보관.
2.전자문서(원문)을 해시함수(SHA)에 통과시켜 고정된 길이의 출력값( digest)으로 변환한다.
3.digest를 1번 과정의 개인키로 암호화(RSA)한다.
-검증 과정-
B는 A의 공개키, 전자문서(원문) , 전자서명(A의 비밀키로 만듦) 을 받는다.
4. B는 A의 공개키를 이용해서 전자서명을 복호화한다.
5. 전자문서(원문)(SHA)을 해시함수에 통과시켜 digest를 만든다
6. 복호화된 전자서명(A가만든 digest) 랑 5번에서 만든 digest 와 일치하는지 대조하여 검증한다.
출처가 A라는 것과, 데이터변조가 없다는 것을 검증해낼수 있는 과정이다.
결론 예시
- A가 인증기관(CA)로부터 디지털 인증서를 발급받음.( CA의 전자서명, A의 신원 정보와 A의 공개키을 포함)
- A는 B에게 문서(원문), 원문에 대한 A의 전자서명, 인증서(A공개키함유)를 함께 전달.
(인증서에 포함되는 데이터 요약- A의 신원 정보: 인증서의 소유자를 식별할 수 있는 정보.
- A의 공개키: A의 비밀키와 쌍을 이루는 공개키.
- 인증서의 유효 기간: 인증서가 언제부터 언제까지 유효한지.
- 발급자 정보: 인증서를 발급한 CA의 정보.
- 전자서명: CA가 인증서 내용을 서명한 값.
- 서명 알고리즘: 서명에 사용된 알고리즘.
- 추가적인 도메인 이름(SAN), 정책, 인증서 폐지 정보 등.)
- B는 CA의 공개키를 사용해 인증서의 전자서명을 검증해서 A공개키를 얻은 후 이를 통해 A의 전자서명을 검증
- 원문을 해시화한것 (digest)과 A의 전자서명을 복호화한 것 (digest)일치를 확인하여 데이터변조가 없는지 확인
-5가지 필수 원칙-
1.위조불가조건 : 합법적인 서명자만이 전자문서에 대한 전자 서명을 생성할 수 있다. ( A의 개인키로 암호화했기 때문)
2.서명자 인증 조건 : 전자서명의 서명자를 누구든지 검증할 수 있다.( 서명자의 공개키로 검증되기에 누구나 접근 가능)
3. 부인 불가 조건 : 서명자는 서명 후에 자신의 서명 사실을 부인할 수 없음 ( A의 개인키로 암호화했기 때문)
4.변경 불가 조건 : 서명한 문서의 내용은 변경 할 수 없음 (해시함수를 통과시킨 값(digest)가 일치 하는지 대조)
5. 재사용 불가 조건: 전자문서의 서명은 다른 전자 문서의 서명으로 사용될 수 없음 ( 다른 문서의 내용은 해시 값이 다르므로, 서명을 다른 문서에 복사하여 사용하면 검증에 실패합니다.)
A의 공개키는 어떻게 B에게 전달되나?
1.1 인증서를 통해 전달
- 공개키는 디지털 인증서를 통해 전달됩니다.
- A는 키 쌍을 생성한 후, 자신의 공개키를 **인증기관(CA)**에 제출하여 인증서를 발급받습니다.
- CA의 전자서명 생성 과정 (인증서 서명)
- A가 자신의 공개키와 신원 정보를 포함한 **CSR(Certificate Signing Request)**을 CA에 제출.
- CA는 CSR 내용을 검증하여 인증서를 생성.
- 인증서 파일의 구조
- 인증서 파일에는 다음이 포함됩니다:
- 인증서 내용:
- 사용자(A)의 공개키.
- 사용자 신원 정보(예: 이름, 이메일, 도메인 이름 등).
- 인증서의 유효 기간.
- 기타 메타데이터(예: 인증서 시리얼 번호).
- CA의 전자서명:
- 인증서 내용을 해싱한 뒤, CA의 개인키로 암호화한 값.
- 인증서 내용:
- 인증서 파일에는 다음이 포함됩니다:
- CA는 인증서 내용을 **해싱(SHA-256)**하고, 이 해시 값을 CA의 개인키로 암호화하여 전자서명을 생성.
- 전자서명을 인증서에 포함하여 A에게 발급.
- CA의 전자서명 생성 과정 (인증서 서명)
- 인증서는 , CA의 전자서명,A의 신원 정보와 A의 공개키을 포함하고 있습니다.
- 이제 원본 인증서 내용과 CA의 개인키로 전자서명을 B에게 보냅니다
- B는 인증서를 CA공개키로 복호화하여 검증한 후 A의 공개키를 안전하게 획득합니다.
- . CA의 전자서명 검증 과정
- B는 인증서를 수신한 후, 인증서에 포함된 CA의 전자서명을 검증하는데 아래와 같다.
- CA의 공개키로 전자서명을 복호화하여 인증서 내용의 원래 해시값(digest)을 얻는다.
- 원본 인증서 내용을 다시 해싱하여 생성된 해시 값과 복호화된 해시 값을 비교한다.
- 두 값이 일치하면 인증서가 변조되지 않았음을 확인. CA의 공개키로 검증할때 A의 정보가 들어있는것으로 A에게서 받았다는것을 입증,
- . 단, B말고 다른 사람도 검증할 수 있다
- 인증서는 기본적으로 공개된 문서입니다.
- 인증서에는 A의 공개키, A의 신원 정보, 그리고 이를 CA가 인증한 전자서명이 포함되어 있습니다.
- CA의 전자서명은 CA의 공개키로 검증할 수 있으므로, 누구나 인증서의 신뢰성을 확인할 수 있습니다.
- 인증서에 포함된 A의 공개키는 누구나 접근할 수 있지만, 공개키만으로는 A의 개인키를 알 수 없기 때문에 A의 전자서명을 위조하거나 A의 이름으로 데이터에 서명할 수는 없습니다.
- A의 개인키는 비밀로 보호되며, 서명 생성 시에만 사용됩니다.
- . CA의 전자서명 검증 과정
출처: https://yeongjin.tistory.com/354 [Yeong Jin:티스토리]