전자서명
1. 전자서명
서명자를 확인하고 서명자가 당해 전자문서에 서명했다는 사실을 나타내는 데 이용하려고, 특정 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보를 말한다.
공개 키 기반 구조 (PKI) 기술측면에서 전자서명이란 전자문서의 해시(HASH)값을 서명자의 개인키(전자서명생성정보)로 변환(암호화)한 것으로서 RSA사에서 만든 PKCS#7 의 표준이 널리 사용되고 있다.
※ 공개 키 기반 구조 (PKI): 공개 키 암호 방식을 바탕으로 한 디지털 인증서를 활용하는 소프트웨어, 하드웨어, 사용자, 정책 및 제도 등을 총칭하여 일컫는다.
2. 공개키 암호화와 전자서명의 차이점
(1) 공개키 암호화
- 개인키 용도: 수신자가 복호화
- 공개키 용도: 송신자가 암호화
(2) 전자서명
- 개인키 용도: 송신자가 암호화 (서명)
- 공개키 용도: 수신자가 복호화 (검증)
3. 전자서명의 주요 기능
위조 불가, 서명자 인증, 부인방지, 변경 불가, 재사용 불가
※ 전자서명 자체로는 기밀성을 제공하지 않으며, 비밀키 암호화 또는 공개키 암호화를 함께 사용해야 한다.
4. 전자서명 알고리즘의 종류
(1) RSA 전자서명
RSA 알고리즘을 사용하여 전자서명을 하는 것이다. 기본적으로 안전하지 않아서 메시지에 암호 해시 함수를 적용하고 그 결과에 RSA 알고리즘을 적용하여 보완할 수 있다. RSA 알고리즘의 안전성은 해시 알고리즘에 달려있다.
(2) 램포트 서명 (Lamport Signature)
일방향함수를 이용한 디지털 서명 생성 기법이다. 큰 해시 함수를 가지기 때문에 RSA보다 안전하다고 본다. 각 Lamport Key는 단일 메시지를 서명하는 데만 사용할 수 있지만, 해시 트리와 결합하면 여러 메시지에 단일 키를 사용하여 효율적으로 사용 가능하다.
(3) ElGamal Signature
이산 로그 계산의 어려움을 기반으로 하는 디지털 서명 체계이다. 실제로는 거의 사용되고 있지 않다.
(4) Schnorr Signature
ElGamal에 기반을 두었지만 ElGamal보다 효율적이고 짧은 서명을 생성한다.
(5) DSS (Digital Signature Standard)
NIST에서 제정한 디지털 서명을 생성하는 데 사용할 수 있는 알고리즘 모음을 지정하는 표준이다.
디지털 서명에 대한 연방 정보 처리 표준인 DSA 알고리즘을 포함한다. DSA는 Schnorr 및 ElGamal 서명 체계의 변형이다.
오직 디지털 서명 기능만 제공하도록 설계되어 있고, RSA 알고리즘보다 빠르며, ElGamal 서명보다 서명의 길이가 짧다.
(6) ECDSA (Elliptic Curve DSA, 타원 곡선 DSA)
타원 곡선을 이용한 전자서명 알고리즘이다.
(7) KCDSA/EC-KCDSA
KCDSA는 KISA에서 개발한 인증서 기반 부가형 전자서명 알고리즘으로, ElGamal 서명 방식의 변형으로 이산대수 문제에 안전성을 두고 있다.
EC-KCDSA는 전자서명 알고리즘 KCDSA를 타원곡선을 이용한 알고리즘이며, 기존 공개키 암호시스템에 비하여 더 짧은 키로도 유사한 안전성을 얻을수 있는 장점이 있다.
두 알고리즘 모두 국가 표준으로 지정되었다.
※ 이외에도 머클 서명(Murkle Signature), 라빈 서명(Rabin Signature)가 있다.
5. 전자서명 방식
(1) 메시지 복원형 전자서명
메시지 전체를 암호화한 후 복호화하면 원래 메시지가 복원되는 방식으로 검증한다. 메시지 전체를 일정한 블록으로 나눠 전체 블록을 암호화 해야 하므로 검증 부하가 크기 때문에 실제로는 사용되지 않는다.
(2) 메시지 부가형 전자서명
메시지를 해시 암호화 하여 일정 길이의 해시값으로 압축한다. 해시된 값에 해시된 값으로 전자서명한 값을 덧붙여서 보낸다. 송신자는 공개키를 이용해 전자서명값과 해시값을 비교하여 메시지를 검증한다. 메시지 복원형에 비해 부하가 훨씬 작다.
6. 전자서명의 변형 및 응용
(1) 은닉 서명 (블라인드 서명)
메시지 내용이 서명되기 전에 위장(블라인드)되는 디지털 서명의 한 형태이다. 아래의 예시처럼 메시지 작성자는 메시지를 블라인드 시킨 후 서명자에게 보낸다. 서명자는 블라인드 된 메시지에 서명한 후 메시지 작성자에게 돌려준다. 메시지 작성자는 블라인드를 벗겨 서명을 얻어낸다.
(2) 전자투표
전자투표의 요구사항은 다음과 같다.
- 완전성: 투표결과가 정확하게 집계되어야 한다.
- 비밀성: 유권자 외 누구도 유권자의 투표 내용을 알 수 없어야 한다.
- 재사용불가: 단 1회만 투표 가능해야 한다. (2중 투표 방지)
- 공정성: 중간 집계 결과를 알 수 없어야 한다. (나머지 투표에 영향을 주어서는 안된다.)
- 적임성: 자격이 있는 유권자만 투표해야 한다.
- 검증성: 투표결과는 위조되어서는 안된다.
- 강선성: 유권자가 연합하여 부정 행위를 하더라도 시스템이 견뎌내야 한다.
전자투표 방식에는 아래와 같은 방식이 있다.
- PSEV 방식: 투표소와 개표소를 공공망으로 연결
- 키오스크 방식: 공공장소에 투표기 설치
- REV 방식: 유권자가 각자의 기기를 통해 투표
참고자료:
https://ko.wikipedia.org/wiki/%EC%A0%84%EC%9E%90%EC%84%9C%EB%AA%85
https://ko.wikipedia.org/wiki/%EB%94%94%EC%A7%80%ED%84%B8_%EC%84%9C%EB%AA%85
https://ko.wikipedia.org/wiki/%EB%9E%A8%ED%8F%AC%ED%8A%B8_%EC%84%9C%EB%AA%85
https://en.wikipedia.org/wiki/Lamport_signature
https://en.wikipedia.org/wiki/ElGamal_signature_scheme
https://en.wikipedia.org/wiki/Schnorr_signature
https://en.wikipedia.org/wiki/Digital_Signature_Standard
https://en.wikipedia.org/wiki/Digital_Signature_Algorithm
https://ko.wikipedia.org/wiki/%ED%83%80%EC%9B%90%EA%B3%A1%EC%84%A0_DSA
https://seed.kisa.or.kr/kisa/algorithm/EgovKCDSAInfo.do
http://itwiki.kr/w/%EC%A0%84%EC%9E%90%EC%84%9C%EB%AA%85
https://en.wikipedia.org/wiki/Blind_signature
http://itwiki.kr/w/%EC%A0%84%EC%9E%90_%ED%88%AC%ED%91%9C
알기사 알기쉬운 정보보안기사&산업기사 필기편