검수요청.png검수요청.png

전자서명

해시넷
leejia1222 (토론 | 기여)님의 2019년 7월 9일 (화) 15:43 판 (전자서명 알고리즘의 종류)
이동: 둘러보기, 검색

전자서명 이란 전자서명법에 나와 있는 정의로는 서명자를 확인하고 서명자가 당해 전자문서에 서명하였음을 나타내는데 이용하기 위하여 당해 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보를 말한다. 전자서명은 대부분 공개키 암호 알고리즘을 이용하여 구현하며, 무결성을 확인하고 인증과 부인 방지 기능을 제공하는 암호 기술이다.

개요

전자서명이란 사이버 공간에서의 인감이다. 사이버 공간에서는 수많은 위협들이 존재하고 있으며, 또한 정보들도 쉽게 위변조 할 수 있다. 그렇기 때문에 프로그램의 제작자를 확인하고, 거래를 한 사람이 나 자신이 맞다는 것을 증명하기 위하여 나오게 된 것이 전자서명이다. 오프라인에의 인감증명서는 종이로 된 계약문서와 자신이 정부에 등록한 인감으로 날인을 한 것을 말한다. 정부에 등록된 인감은 자신이 직접 드옥한 것이기 때문에, 이 인감 도장이 찍혀있는 것은 법적 효력을 갖으며, 본인이 거래한 것으로 간주된다. 만약, 인감도장을 다른사람이 훔쳐가서 사용한다면, 법적 책임은 모두 인감의 소유자인 자신이 지게 된다. 그렇기 때문에 인감은 중요하게 보관해야 하는 것이다.

온라인에서는 인감이라는 개념 대신에 전자서명이라는 개념이 존재한다. 이미 발급된 전자문서의 해시값을 추출하여 자신의 개인키로 암호화 한다. 그 후 전자문서와 함께 암호화한 해시값을 함께 상대방에게 보낸다. 문서를 받은 상대방은 문서를 보낸 사람의 공개키로 해시값을 복호화 한 후 자신이 전달받은 문서의 해시값과 비교하여 일치하면 문서가 위변조 되지 않았으며, 자신이 올바른 사람에게서 정보를 전달 받았음을 확인할 수 있다. 여기에서 전자문서의 해시값을 개인키로 암호화 한 것이 바로 오프라인에서의 인감날인 역할을 하는 것이다. 따라서 인감과 전자서명은 이렇게 정리할 수 있다.

* 인감 : 종이문서 + 인감도장 날인
* 서명된 전자문서 : 전자문서 + 전자서명(전자문서 해시 + 개인키의 암호화)

기존의 암호화 방법은 메시지를 주고 받는 사람들이 서로에게만 메시지를 알 수 있게 하고, 다른 외부 사람들에게는 메시지를 못 알게 하는 방법이었다. 하지만 이러한 방법은 누군가가 메시지를 조작할 수 있어 이러한 상황을 막기 위하여 전자 서명이란 것이 나오게 된 것이다. 전자서명을 통해 인증과 무결성, 부인봉쇄라는 중요한 보안서비스를 제공한다. 즉, 전자서명 행위를 통해 개인이 송신하고자 하는 메시지의 근원이 나 자신이라는 것과 수신측에서는 내가 보낸 메시지가 중간에 위변조 되지 않았음을 검증할 수 있다. 또한 신뢰받는 제3자를 이용하면 나중에 상대바이 전자서명이 행위자체를 부인하는 것을 방지할 수가 있게 된다. 전자서명의 조건은 다음과 같다.

  • 위조 불가 (Unforgeable) : 합법적인 서명자만이 전자 문서에 대한 전자 서명을 생성할 수 있어야 한다.
  • 서명자 인증 (User Authentication) : 전자 서명의 서명자를 누구든지 검증할 수 있어야 한다.
  • 부인 불가 (Nonrepudiation) : 서명자는 서명 후에 자신의 서명 사실을 부인할 수 없어야 한다.
  • 변경 불가 (Unalteable) : 서명한 문서의 내용은 변경될 수 없어야 한다.
  • 재사용 불가 (Not Reusable) : 전자문서의 서명은 다른 전자문서의 서명으로 사용될 수 없어야 한다.

작동

당해 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보를 만들기 위해서 기술적으로는 서명 알고리즘이 이용되고, 서명자를 확인하고 서명자가 당해 전자문서에 서명하였음을 확인하기 위해서 검증 알고리즘이 적용된다. 그리고 서명과 검증 알고리즘에 이용되는 기술이 비대칭 키 암호시스템이다. 비대칭 키 암호시스템은 개인키와 공개키로 구성된다. 개인키는 자신만이 소유하고, 공개키는 타인에게 공개된다. 개인키로 암호화된 문서는 공개키만을 이용해서 복호화 가능하다.

사용자는 서명 알고리즘을 이용해서 자신의 개인키로 문서에 서명을 하게되며, 상대방에 보낸 서명된 문서는 검증 알고리즘을 이용해서 상대방의 공개키로 검증을 수행하게 된다. 즉, 송신자만이 고유한 개인키로 생성한 전자서명 정보와 원본 문서를 송신하면, 수신측에서는 송신자의 공개키를 이용하여 전자서명 정보를 복호화하고 이를 원본문서와 비교해서 인증과 무결성을 확인하게 된다.

한 가지 확인해볼만한 사실은 전자서명 자체가 기밀성을 제공하지는 않는다는 것이다. 다시 말하면 전자서명이란 송신자가 보내는 원본문서에 첨부된 전자서명의 생성과 검증에 관련된 이야기이며 원본문서 자체의 암호화는 또 다른 문제이다. 암호화 시스템에서 다양한 기술들이 존재하지만 개인키와 공개키를 이용한 암호화도 가능하다. 즉, 송신자가 수신자의 공개키로 암호화해서 송신하면 메시지는 개인키를 소유한 수신자만이 해독할 수가 있게 되며 따라서 기밀성을 제공할 수가 있다.

이를 정리해보자면, 비대칭 키 암호 시스템에서 전자서명의 과정은 서명자의 개인키로 서명을 하고 검증자는 서명자의 공개키로 서명을 검증하게 된다. 그리고 암호화는 수신자의 공개키로 암호화하며 수신자는 자신의 개인키로 해독을 하게 된다. 전자서며은 부인봉쇄를 제공하는데, 이를 위해서는 공인인증체계의 도움을 필요로 한다. 즉, 송신자와 수신자 사이에 신뢰받는 제3자가 개입하여 쌍방 사이의 거래를 증명해주는 것이다.

접근 방법

기존의 암호화 방법은, 메시지를 주고받는 사람들이 서로에게만 메시지를 알 수 있게 하고, 다른 외부 사람들에게는 메시지를 알지 못하게 하는 방법이었다. 물론, 여기에서 암호화나 복호화를 하는데 사용하는 키는 똑같다. 그러나 만약 메시지를 주고받는 사람 간에 문제가 생길 수도 있다. 예를 들어서 A가 B에게 메시지를 보냈다고 하자. A와 B는 키를 공유하고 있다. 그런데 만약 B가 어떤 메시지를 만든 다음 그것을 암호화 하여 메시지 뒤에 붙이고, 이 메시지가 A에서 온 것이라고 주장한다. 또, A가 B에게 메시지를 보냈는데 A가 '나는 메시지를 보내지 않았다'라고 주장한다. B게 메시지를 조작할 수 있으므로, 이 주장도 확실하게 구분할 수 없다. 이런 상황을 막기 위해 전자서명이란 것이 나오게 되었다. 전자서명은, 손으로 쓰는 서명과 비슷하다. 전자서명은 다음과 같은 성질을 가지고 있어야 한다.

  • 전자서명은 서명을 한 사람과 날짜 등을 증명할 수 있어야 한다.
  • 전자서명을 할 당시에 메시지의 내용을 증명할 수 있어야 한다.
  • 전자서명은 외부 기관에 의해 검사받을 수 있어야 한다.

이와 같은 성질을 가진 전자서명을 구현하기 위해 많은 접근 방법이 동원되었다. 그 방법은 크게 두 가지로 나눌 수 있다.

  1. 직접적인 방법 : 직접적인 방법에서는 보내는 사람과 받는 사람 둘 간에 전자서명이 오고 간다. RSA 알고리즘에서는 만약 받는 사람(B)이 보내는 사람(A)의 공개키를 알고 있다면, A의 전자서명은 보낼 메시지를 A의 비밀키로 암호화 한 것이 된다. 이 방법의 문제점은 보내는 사람의 비밀키의 안전성에 있다. 만약 어떤 시간 T에 A가 어떤 메시지를 보냈다고 하자. 그런데 3일 후에 A의 비밀키가 해커에게 유출된다면, 해커는 A의 비밀키를 사용해서 시간을 T로 하는 메시지를 만들 수 있다. 이 메시지를 받은 B는 A가 T 시간에 메시지를 보낸 것으로 착각할 것이다.
  2. 중재를 통한 방법 : 직접적인 방법은 A와 B 사이에 신뢰할 수 있는 중재자를 둠으로써 해결할 수 있다. A는 B에게 메시지를 바로 보내지 않고 먼저 중재자에게 메시지를 보낸다. 그 다음, 중재자는 B에게 메시지를 보낸다. 이 방법은 해커가 A의 비밀키를 알았다고 해도 시간을 조작할 수가 없다. 왜냐하면 시간은 중재자가 관리하기 때문이다.

인증 프로토콜

상호간의 인증

상호간의 인증에서는 통신을 하는 상대방이 서로를 신뢰할 수 있고, 키를 교환할 수 있어야 한다. 키를 교환하는 데 있어서 가장 중요한 것은 보안성과 시간 문제이다. 먼저 보안성은 공격자가 마치 상대방인 것처럼 위장하고 올 경우를 대비해서 모든 키 정보는 암호화된 형태로 전달 되어야 한다는 것이다. 시간 문제는 message replay 공격 때문에 매우 중요하다 메시지 리플레이란 A가 B엘게 보내는 메시지가 있을 때 그것을 중간에서 해커가 가로채서 누군가에게 다시 보내는 공격 방법이다. 메시지 리플레이에는 다음과 같은 방법이 있다.

  • 공격자가 메시지를 저장해 두었다가 나중에 다시 보낸다.
  • 공격자가 메시지를 일정 시간 안에 다시 보낸다.
  • 원래의 메시지가 어떤 이유에 의해 보내지지 않았을 때, 공격자가 B에게 메시지를 보낸다. 이 경우, 공격자의 메시지만 B에 도착하게 된다.
  • A가 보낸 메시지를 A에게 다시 보낸다.

리플레이 공격을 막는 한 가지 방법은, 메시지에 순서 번호를 붙이는 것이다. 그래서 새로운 메시지가 도착했을 때 그 순서가 맞는 경우에만 그 메시지가 옳은 것으로 보는 것이다. 이 방법의 단점은 보내는 사람과 받는 사람 모두 마지막 순서 번호를 저장해 두어야 한다는 것이다.

단방향 인증

단방향 인증이란 말 그대로 메시지를 받은 사람이 보낸 사람의 정당성을 믿을 수 있게 하는 것을 의미한다. RSA 알고리즘에서 이런 예제를 볼 수 있다. 먼저 보낼 메시지는 해시함수의 입력으로 들어간다. 그 결과, 일정 길이의 해시 코드가 나오게 된다. 이 해시 코드를 샌더의 비밀키로 암호화 한 것이 전자서명이 된다. 원레 메시지와 전자서명은 합쳐져서 받는 사람에게 보내지게 된다. 받는 사람은 그 메시지를 받고, 원래 메시지의 해시 코드를 구한다.. 그 다음, 같이 온 전자서명을 샌더의 공개키를 사용하여 복호화 한다. 계산한 두 개의 해시 값이 같다면 이 메시지는 안전하다고 생각하게 되는 것이다. 공격자는 A의 비밀키를 알지 못하는 한, A의 공개키로 복호화가 되는 메시지를 만들 수 없다.

조건

  • 위조 불가 (Unforgeable) : 합법적인 서명자만이 전자 문서에 대한 전자 서명을 생성할 수 있어야 한다.
  • 서명자 인증 (User Authentication) : 전자 서명의 서명자를 누구든지 검증할 수 있어야 한다.
  • 부인 불가 (Nonrepudiation) : 서명자는 서명 후에 자신의 서명 사실을 부인할 수 없어야 한다.
  • 변경 불가 (Unalteable) : 서명한 문서의 내용은 변경될 수 없어야 한다.
  • 재사용 불가 (Not Reusable) : 전자문서의 서명은 다른 전자문서의 서명으로 사용될 수 없어야 한다.


전자서명 알고리즘의 종류

미국에서는 1991년 표준 전자서명인 DSS를 공표했으며, 국내에서도 표준안으로 KCDSA를 발표했다. 이밖에도 독일의 Schnorr 서명, Nyberg-Rueppel 서명 등이 있고, 소인수분해 문제를 이용한 RSA 서명, Rabin 서명과 이산대수 문제를 이용한 ElGamal 서명, 아이디를 이용한 Flat-Shamir, 방식과 Ohta 방식, Knapsack, 문제를 이용한 Merkle-Hellman 방식 등이 있다.

  • RSA 전자서명 : Rivest, Shamir, Adleman에 의해서 1978년 제안된 공개 키 암호 방식을 응용한 전자서명의 방식을 응용한 전자서명 방식이다. 큰 합성수를 소인수분해하는 문제의 어려움에 근거해 안전도를 결정하는 방식이다.
  • ElGamal 전자서명 : 이산대수 문제를 기반으로 전자서명만을 위해 고안된 방식이다.
  • Schorr 전자서명 : ElGamal 전자서명의 변형으로 이산대수 문제에 안정성을 두고 있다.
  • DSS (DSA) 전자서명 : 1991년 미국의 NIST (National Institute of Standards and Technology) 에서 발표한 전자서명 방식으로 ElGamal 전자서명을 개량한 방식이다. ElGamal 전자서명 방식과 유사하지만 서명과 검증에 소요되는 계산량을 획기적으로 줄인 방식으로 미국의 전자서명 표준이다. 해시함수 SHA-1을 사용하여 해시 코드와 난수가 서명함수의 입력으로 제공된다.
  • KCDSA 전자서명 : 국내 표준 전자서명 방식으로 이산대수 문제를 기반으로 한다. KCDSA의 계산 효율을 높이고자 타원곡선 암호 시스템을 기반으로 변형한 전자서명이 ECKCDSA이다.
  • ECDSA (Elliptic Curve DSA) 전자서명 : 타원곡선 (Elliptic curve)상에서 군을 정의하고 이에 대한 이산대수 계산의 어려움에 근거 두고 있다.

참고자료

같이 보기


  검수요청.png검수요청.png 이 전자서명 문서는 암호 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.