본문 바로가기

2.분석 및 설계

전자서명

들어가기

전자서명은 본인 확인에 대한 부인 방지나 데이터 위변조를 확인하기 위한 방법으로 많이 사용한다. 자신이 문서를 작성해서 보냈는데 누군가 중간에 문서 내용을 변경했다면 해당 문서가 내가 보낸 문서다라는 증명은 어떻게할까? 그냥 암호화해서 보내면 돼지 않을까라는 생각할 수 있다. 다수가 봐야하는 문서라면 비밀키는 어떻게 공유할지 문제가 있을 수 있다. 이때 사용할 수 있는게 전자서명으로 어떤 메커니즘으로 동작하는지 대략적인 내용을 살펴보자.

작성자: ospace114@empal.com, http://ospace.tistory.com/

암호화 종류

암호화는 대칭키, 비대칭키가 있다. 대칭키는 암호화하는 키와 복호화하는 키가 같은 방식이다. 대칭키를 사용하는 암호화 알고리즘은 DES, 3DES, AES, SEED 등이 있다. 비대칭키는 암호화 키와 복호화 키가 다르다. 성능 자체는 대칭키보다 느리지만 보안 측면에서 유리하다. 암호화 키를 개인 키라고도 하고 복호화 키를 공개키라고 한다. 공개키가 누구든지 접근할 수 있다고 하는 의미로 비대칭키를 공개키 알고리즘이라고 한다. 공개키 알고리즘으로는 RSA, ECC 등이 있다.

그외를 해시 함수로 임의 길이 데이터를 일정 길이 데이터로 매핑하는 함수다. 보통 해시값을 생성하는 방식으로 암호학으로 사용되는 알고리즘으로 MD5, SAH가 있다. 물론 그외에 데이터 검증을 위한 비 암호화로 사용되는 알고리즘으로 CRC32가 있다.

보통 전자서명에서는 비대칭키를 사용해서 암호화 처리를 한다.

전자 서명 방법

비대칭키는 상대방 공개키로 데이터를 암호화해서 상대방에게 보내고, 상대방은 자신의 개인키로 암호화된 데이터를 복호화해서 사용한다. 즉, 중간에 다른 사람은 개인키를 알 수 없기 때문에 실제 데이터를 볼 수 가 없다. 이는 1대1 데이터 교환에서는 문제가 없다.

Fig 01. 비대칭키 암호화

문제는 1대 다인 경우이다. 보통 문서는 다수의 대상으로 보내는 경우가 많다. 그러면 보댈 다수의 공개키를 가지고 개별적으로 암호화해서 보내기는 힘들다. 만약 아무나 볼 수 있는 문서는 어떻게 할까?

이런 형태의 문서의 핵심은 문서가 내가 작성했다라고 증명하면 된다. 누군가 중간에 수정했을 경우 문서가 변경되었다고 알수 있으면 된다. 그래서 문서의 위변조를 하지 못하고 본인이 작성했음을 확인하기 위한 방법을 제공하면 된다. 그래서 전자 서명의 다른 목적으로 부인 방지로 데이터 송수신 사실을 부인하지 못하도록 방지하는데 사용된다.

전자 서명의 방법은 비대칭키에서 사용한 암호화 방식을 역으로 사용한 방법이다.

개인키 공개키
소유권 개인이 소유 공개로 누구나 소유
암호화 수신자가 복호화 송신자가 암호화
전자서명 송신자가 서명 작성 수신자가 서명 검증

전자 서명은 아래와 같은 형태로 동작한다.

Fig 02. 전자서명

먼저 문서를 해시 함수로 사용해서 해시값을 추출한다. 그리고 개인키를 사용해서 해시값을 암호화해서 문서와 같이 상대방에게 보낸다. 이때 상대방이 서명된 문서를 받으면 다시 동일한 해시 함수로 서명된 문서에서 해시값을 추출한다. 그리고 공개키를 사용해서 암호화된 해시값을 복호화 해서 추출한 해시값과 비교해서 동일한 변경이 없는지 확인한다. 메커니즘 자체는 복잡하지 않다.

여기서 암호화된 해시값이 포함된 서명된 문서는 중간에 공격자에 의해 문서를 수정해서 새로운 해시값으로 변경하려고 해도 개인키를 알 수 없기에 변경이 불가능하다. 만약 다른 개인키로 변경해도 수신자가 해당 상대방의 공개키로 검증을 하면 위변조가 되었다는 사실을 알게 된다.

마무리

전자서명은 개념 자체는 크게 어렵지 않다. 물론 어떤 해시함수와 공개키 관리와 서명된 문서에 대한 형식은 별도 문제이다. 국내에서 전자서명 표준은

  • TTAS.KO-09.0003/R1 (부가형 디지털 전자서명방식 - 제1부: 기본 구조 및 모델(12/2005))
  • TTAK.KO-12.0001/R4 (부가형 전자 서명 방식 표준 - 제2부: 한국형 인증서 기반 전자 서명 알고리즘(KCDSA)(12/2016))
  • TTAK.KO-12.0015/R3 (부가형 전자 서명 방식 표준 - 제3부: 타원 곡선을 이용한 한국형 인증서 기반 전자 서명 알고리즘 (EC-KCDSA)(12/2016))

가 있다. 관심있으신 분은 참고하세요.

부족한 글이지만 도움이 되었으면 하네요. 모두 즐거운 코딩생활되세요. ospace.

참조

[1] 박종혁, 디지털 서명, http://www.parkjonghyuk.net/lecture/modernCrypto/lecturenote/chap09.pdf

반응형

'2.분석 및 설계' 카테고리의 다른 글

The C10k Problem  (4) 2024.01.13
CAP 이론 소개  (1) 2023.11.20
의사코드(pseudocode) 사용하기  (0) 2023.10.19
glTF 포멧  (0) 2023.06.08
[mybatis] Mybatis 내부동작 흐름  (0) 2022.01.26