본문 바로가기
💻Information Security

전자서명의 필요와 이해

by Prof. Panda 2024. 2. 13.

Signature Pro on Unsplash

전자서명의 개념

전자서명이란 아날로그 문서가 아닌 전자문서에서 서명의 기능을 수행할 수 있도록 구현하는 기능입니다. 서명이란 개념을 먼저 생각해보면, 문서에 서명을 한다는 것은 특정 누군가가 해당 문서를 인증하고 특정 행위를 한 것을 기록하고 유지시키는 것입니다. 전자서명 기능을 통해서 작성자가 누구인지, 문서가 어떻게 변경되었는지를 기록하고 관리할 수 있는 것입니다. 이런 기능을 하도록 하는 것에 비대칭 암호화 방식을 이용해서 무결성과 추적성을 확보합니다.

필요성

아날로그 환경에서만 문서를 관리하던 때와 다르게 전자적으로 문서를 처리해야 하는 경우가 많아졌습니다. 특히나 기업환경에서는 규모가 커질 수록, 수 많은 문서들이 생성되고 관리되며 이런 부분들이 추적되고 변조 여부를 체크할 수 있어야 합니다. 그렇지 않다면 인가받지 않은 악의적인 사용자가 문서를 변조하거나 도용하는 등 기업에 악의적인 영향을 끼칠 수 있습니다. 

특징과 기능

이런 필요에 따라서 전자서명은 아래의 5가지 특징을 가지고 있어야 합니다.

  • 서명자 인증 - 서명을 생성한 서명인을 검증
  • 부인방지 - 서명인이 서명한 사실을 취소/부인 불가
  • 위조 불가
  • 변경 불가
  • 재사용 불가 - 다른 문서의 서명으로 재사용 불가

전자서명은 2가지 인증 기능을 필수적으로 수행할 수 있어야 합니다. 하나는 사용자를 인증하는 것이고 다른 하나는 메시지를 인증하는 것입니다. 서명문의 서명인 것을 비대칭 암호화 기법을 통해서 인증하고, 메세지의 내용이 변조되지 않았는지, 무결성을 해시함수를 통해서 보증합니다.

과정

전자서명은 구현을 하는 사람이나 규격 등에 따라서 차이가 발생할 수 있지만 일반적으로 아래와 같은 과정을 통해 생성되고 인증됩니다.

  1. 전자서명 : 1 메세지 서명
    1. 메세지의 다이제스트를 해시함수를 통해 생성
    2. 메시지 다이제스트를 '송신자의 사설키'로 서명
    3. '송신자의 비밀키'로 서명을 암호화
  2. 전자서명 : 2 메시지 암호화
    1. '송신자의 비밀키'로 메세지를 암호화
  3. 전자서명 : 3 키 넣어서 보내기 : 비밀키를 공개키로 암호화
    1. '송신자의 비밀키'를 '수신자 공개키'로 암호화
  4. 서명, 메세지, 암호화된 키를 수신자에게 전송
  5. 서명 확인 : 1 키 복호화 : 비밀키를 사설키로 복호화
    1. '수신자의 사설키'로 송신자의 비밀키를 복호화 하여 알아냄
  6. 서명 확인 : 2 메세지 복호화
    1. '송신자의 비밀키'로 암호문을 복호화 하여 메세지 획득
    2. 메세지를 해시함수로 다이제스트 생성, 이후 서명과 비교하여 무결성 확인
  7. 서명 확인 : 3 무결성 확인
    1. 암호화된 서명을 '송신자의 비밀키'로 복호화 하여 서명값 획득
    2. 서명값을 '송신자의 공개키'로 복호화 하여 다이제스트 획득 후 비교하여 무결성 확인

전자서명 기법의 종류

전자서명의 기법에는 다양한 종류가 있습니다. 잘 알려진 기법으로는 아래와 같은 것들이 있을 수 있습니다.

  • RSA 전자서명
  • ElGamal 전자서명
  • Schnorr 전자서명
  • DSS(Digital Signature Standard)
  • KCDSA(Korea Certificate-based Digital Signature Algorithm)
  • ECC 전자서명