보안

전자서명

MDanderson 2025. 2. 7. 23:20

-서명과정-


1. A의 공개키와 개인키 쌍을 생성한다.

 

키 쌍을 생성하는 위치와 도구

2.1 일반적인 환경

  1. 사용자의 컴퓨터:
    • 키 쌍은 사용자가 사용하는 컴퓨터에서 소프트웨어를 통해 생성됩니다.
    • 예: OpenSSL, GPG, Keytool(Java), SSH-keygen.
  2. 스마트폰:
    • 모바일 인증 앱이나 전자서명 앱에서 키 쌍을 생성.
    • 예: 금융기관 앱, FIDO 인증 앱.
  3. 하드웨어 보안 장치:
    • 키는 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라는 것과, 데이터변조가 없다는 것을 검증해낼수 있는 과정이다.

 

결론 예시

  1. A가 인증기관(CA)로부터 디지털 인증서를 발급받음.(  CA의 전자서명, A의 신원 정보와 A의 공개키을 포함)
  2. A는 B에게 문서(원문), 원문에 대한 A의 전자서명, 인증서(A공개키함유)를 함께 전달.
    (인증서에 포함되는 데이터 요약
    • A의 신원 정보: 인증서의 소유자를 식별할 수 있는 정보.
    • A의 공개키: A의 비밀키와 쌍을 이루는 공개키.
    • 인증서의 유효 기간: 인증서가 언제부터 언제까지 유효한지.
    • 발급자 정보: 인증서를 발급한 CA의 정보.
    보안 관련 정보
    • 전자서명: CA가 인증서 내용을 서명한 값.
    • 서명 알고리즘: 서명에 사용된 알고리즘.
    선택적 정보 (확장 필드)
    • 추가적인 도메인 이름(SAN), 정책, 인증서 폐지 정보 등.)
  3. B는 CA의 공개키를 사용해 인증서의 전자서명을 검증해서 A공개키를 얻은 후 이를 통해 A의 전자서명을 검증
  4.  원문을 해시화한것 (digest)과 A의 전자서명을 복호화한 것 (digest)일치를 확인하여 데이터변조가 없는지 확인

-5가지 필수 원칙-

1.위조불가조건 : 합법적인 서명자만이 전자문서에 대한 전자 서명을 생성할 수 있다. ( A의 개인키로 암호화했기 때문)

2.서명자 인증 조건 : 전자서명의 서명자를 누구든지 검증할 수 있다.( 서명자의 공개키로 검증되기에 누구나 접근 가능)

3. 부인 불가 조건 : 서명자는 서명 후에 자신의 서명 사실을 부인할 수 없음 ( A의 개인키로 암호화했기 때문)

4.변경 불가 조건 : 서명한 문서의 내용은 변경 할 수 없음 (해시함수를 통과시킨 값(digest)가 일치 하는지 대조)

5. 재사용 불가 조건: 전자문서의 서명은 다른 전자 문서의 서명으로 사용될 수 없음 ( 다른 문서의 내용은 해시 값이 다르므로, 서명을 다른 문서에 복사하여 사용하면 검증에 실패합니다.)

 

 


 


 A의 공개키는 어떻게 B에게 전달되나?

1.1 인증서를 통해 전달

  • 공개키는 디지털 인증서를 통해 전달됩니다.
  • A는 키 쌍을 생성한 후, 자신의 공개키를 **인증기관(CA)**에 제출하여 인증서를 발급받습니다.
    •  CA의 전자서명 생성 과정 (인증서 서명)
      1. A가 자신의 공개키와 신원 정보를 포함한 **CSR(Certificate Signing Request)**을 CA에 제출.
      2. CA는 CSR 내용을 검증하여 인증서를 생성.
      3. 인증서 파일의 구조
        • 인증서 파일에는 다음이 포함됩니다:
          1. 인증서 내용:
            • 사용자(A)의 공개키.
            • 사용자 신원 정보(예: 이름, 이메일, 도메인 이름 등).
            • 인증서의 유효 기간.
            • 기타 메타데이터(예: 인증서 시리얼 번호).
          2. CA의 전자서명:
            • 인증서 내용을 해싱한 뒤, CA의 개인키로 암호화한 값.
      4. CA는 인증서 내용을 **해싱(SHA-256)**하고, 이 해시 값을 CA의 개인키로 암호화하여 전자서명을 생성.
      5. 전자서명을 인증서에 포함하여 A에게 발급.
  • 인증서는 , CA의 전자서명,A의 신원 정보와 A의 공개키을 포함하고 있습니다.
  • 이제 원본 인증서 내용과 CA의 개인키로 전자서명을 B에게 보냅니다
  • B는 인증서를 CA공개키로 복호화하여 검증한 후 A의 공개키를 안전하게 획득합니다.
    • . CA의 전자서명 검증 과정
      1. B는 인증서를 수신한 후, 인증서에 포함된 CA의 전자서명을 검증하는데 아래와 같다. 
      2. CA의 공개키로 전자서명을 복호화하여 인증서 내용의 원래 해시값(digest)을 얻는다.
      3. 원본 인증서 내용을 다시 해싱하여 생성된 해시 값과 복호화된 해시 값을 비교한다.
      4. 두 값이 일치하면 인증서가 변조되지 않았음을 확인. CA의 공개키로 검증할때 A의 정보가 들어있는것으로 A에게서 받았다는것을 입증, 
      5. . 단, B말고 다른 사람도 검증할 수 있다
        • 인증서는 기본적으로 공개된 문서입니다.
        • 인증서에는 A의 공개키, A의 신원 정보, 그리고 이를 CA가 인증한 전자서명이 포함되어 있습니다.
        • CA의 전자서명은 CA의 공개키로 검증할 수 있으므로, 누구나 인증서의 신뢰성을 확인할 수 있습니다.
        2 보안은 개인키에 의해 보장됨
        • 인증서에 포함된 A의 공개키는 누구나 접근할 수 있지만, 공개키만으로는 A의 개인키를 알 수 없기 때문에 A의 전자서명을 위조하거나 A의 이름으로 데이터에 서명할 수는 없습니다.
        • A의 개인키는 비밀로 보호되며, 서명 생성 시에만 사용됩니다. 
          •  

출처: https://yeongjin.tistory.com/354 [Yeong Jin:티스토리]