"디지털서명"의 두 판 사이의 차이
(→작동방법) |
잔글 |
||
(다른 사용자 한 명의 중간 판 26개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''디지털서명'''<!--디지털 서명--> | + | [[파일:디지털서명 설치.PNG|썸네일|400픽셀|'''디지털서명(sharding)'''디지털서명 설치하는 사진]] |
+ | '''디지털서명'''(digital signature)<!--디지털 서명--> 이란 첨단 기술로 보안이 강화된 [[전자서명]] 의 한 종류로서, [[개인키]] 와 [[공개키 암호]](비대칭 암호화라고도 불림)을 이용한 전자서명이다. 송신자의 개인 키를 사용하여 서명을 보내면 수신 측에서는 송신자의 공용키를 이용해 보내온 메시지를 해독한 다음 이를 보관하게 되고, 송신자는 디지털 서명을 통해 본인임을 인증, 수신인은 해당 메시지가 위, 변조 되지 않았음을 확인한다. 그리고 [[블록체인]] 에 기록되는 데이터의 보안 및 무결성을 보장하는 주요 측면 중 하나이다. 예를 들어 송신자(A), 수신자(B)라 칭하게 된다면, A는 B에게 데이터를 보낼 때 A의 개인 키로 문서를 암호화하여 B에게 보내고 B는 A의 공개키로 복 호환 한 후, 그것이 정말 A가 보낸 것이 맞는지 확인을 하는 방식이 디지털 서명이다. | ||
− | + | == 개요 == | |
+ | 디지털 서명은 보통 3개의 알고리즘으로 구성되는데, [[공개키]] 쌍을 생성하는 키 생성 알고리즘과 이용자의 개인 키를 사용하여 서명(전자서명)을 생성하는 알고리즘, 그리고 그것과 이용자의 공개 키를 사용하여 서명을 검증하는 알고리즘이다. 서명 생성 프로세스에서 생성된 데이터도 '디지털 서명'이라고 지칭하며, 디지털 서명은 '메시지'의 인증기능을 제공한다. 메시지는 전자메일, 계약서, 혹은 더 복잡한 암호화 프로토콜로 송수신되는 데이터 등, 많은 것을 포함한다. 인증기관이 발행하는 공인인증서는 인증 기관의 사회적인 신뢰성을 담보로 이용자와 공개 값과 이용자의 관계를 보증하는 것으로 인증서가 인증 기관에서 발급된 것임을 증명하기 위해, 디지털 서명을 사용하고 있고 디지털 서명은 종종 전자 서명을 구현하기 위해 사용되기도 하지만, 모든 전자 서명이 디지털 서명을 이용하는 형태를 취하고 있지는 않다. | ||
== 역사 == | == 역사 == | ||
− | + | 디지털 서명은 [[휫필드디피]](Whitfield Diffie)와 [[마틴헬만]](Martin Hellman)이 1976년 처음으로 설명했다. 하지만 그것은 아직 확실하지 않은 추측이었다. 그 이후 [[로널드리베스트]] (Ron Rivest)와 [[아디샤미어]] (Adi Sh amir), [[레오나르도아델만]](Leonard Ad leman)이 디지털 서명에 사용될 수 있는 [[RSA]] 알고리즘을 발명하였다. 하지만 아직도 개념만 증명하는 단계였다. 디지털 서명을 제공하기 위하여 처음으로 판매된 소프트웨어는 Lotus Notes 1.0이었고 [[RSA]] 알고리즘을 사용하여 제작되었고 1989년에 출시되었다. 그 이후로 계속해서 디지털 서명 기법이 개발되었는데, [[Lamport 서명]] 부터 [[머클서명]], [[Rabin 서명]] 등이 개발되었다. | |
== 정의 == | == 정의 == | ||
− | + | 디지털 서명은 일반적으로 3개의 알고리즘으로 구성이 된다. | |
− | * 키 생성 알고리즘 : | + | * 키 생성 알고리즘 : 개인 키를 임의로 가능한 개인 키들의 세트로부터 알고리즘은 개인 키와 해당 공개키를 출력한다. |
− | * 서명 생성 알고리즘 : 서명을 만들기 위해 데이터와 | + | * 서명 생성 알고리즘 : 서명을 만들기 위해 데이터와 개인 키를 결합한다. |
* 서명 검증 알고리즘 : 서명을 확인하고 메시지, 공개키 및 서명을 기반으로 메시지가 인증되었는지 여부를 확인한다. | * 서명 검증 알고리즘 : 서명을 확인하고 메시지, 공개키 및 서명을 기반으로 메시지가 인증되었는지 여부를 확인한다. | ||
− | 디지털 서명은 | + | 디지털 서명은 두 가지의 주요 속성이 필요하다. 첫 번째로는 고정된 메시지 및 고정된 개인 키로부터 생성된 서명의 신뢰성은 대응하는 공개키를 사용함으로써 검증이 될 수 있다는 것이고, 두 번째로는 당사자의 개인 키를 알고 있다 하더라도 유효한 서명을 생성하는 것은 불가능하다는 것이다. |
''' 알고리즘의 핵심 기능 ''' | ''' 알고리즘의 핵심 기능 ''' | ||
− | * 공개키 또는 | + | * 공개키 또는 암호화된 데이터를 기반으로 개인 키를 만드는 것은 절대로 불가능하다. |
− | * 공개키를 통해 | + | * 공개키를 통해 확인된 메시지 및 개인 키를 기반으로 서명의 신뢰성을 보장한다. |
== 특징 == | == 특징 == | ||
− | 디지털 서명은 데이터의 신뢰성을 확인하는 데 사용되는 암호화 출력이고,서명 키를 사용하여 원시 데이터에 대한 서명을 생성하는 서명 작업, 서명 키를 알지 못하는 사람이 서명을 검증할 수 있는 확인 | + | 디지털 서명은 데이터의 신뢰성을 확인하는 데 사용되는 암호화 출력이고, 서명 키를 사용하여 원시 데이터에 대한 서명을 생성하는 서명 작업, 서명 키를 알지 못하는 사람이 서명을 검증할 수 있는 확인 작업이 있으며, 디지털 서명은 공개키 암호화라고도 하는 비대칭 암호화를 사용한다. 비대칭 키는 공개키/비공개 키 쌍으로 구성되며, 비공개 키는 서명을 만드는 데 사용되고, 해당 공개키는 서명을 확인하는 데 사용된다.<ref name="구">구글클라우드 공식 홈페이지 -〈http://a.to/19oLuJq〉 </ref> 메시지 인증 방식은 송수신 자의 메시지 교환을 제3자로 부터 보호할 수 있다. 그러나 송수신 자 간의 서로를 보호할 수 없다. A가 B에게 메시지 M을 보냈는데 B가 M을 위조하여 N을 받았다고 주장할 수 있다. 혹은 A가 B에게 메시지 M을 보내놓고 그런 메시지를 보낸 적이 없다고 부정할 수 있다. 즉 메시지 인증 방식은 신뢰가 깨진 상태에는 대응을 못 한다. 디지털 서명이 제공한다, 저자, 날짜 및 서명 시간, 메시지 내용 인증, 분쟁 해결을 위한 제 3자의 확인이 있다. 비트 패턴은 서명되는 메시지에 의존된다. [[forgery]]와 [[denial]]을 방지하기 위해 송신자의 고유한 정보를 사용해야 하고 서명을 만드는 것이 쉬워야 하고 쉽게 인식하고 증명해야 하며, 계산상 불가능하도록 위조를 못 하게 해야 한다. 기존 디지털 서명에 새로운 메시지로 바꿀 수 없고, 주어진 메시지에 대한 사기성 디지털 서명을 만들 수 없으며, 저장소에 디지털 서명의 사본을 보관하는 것이 실용적이다. |
− | * '''디지털 서명 워크플로(Digital Signature Workflow)''' | + | * '''디지털서명의 지향점''' |
+ | : 서명의 진위 여부가 아니라, 특정 서명자와 특정 메시지 간에 결부되어있다는 사실을 증명하는 것 즉, 문서에 기재되는 서명의 위조 방지보다는, 후에 서명된 그 문서에 대해 변경행위의 검출에 주안점을 둔 것이다. 전자문서 내용에 대한 암호화가 아니고, 서명자가 진짜 서명자이며, 작성내용이 위변조되지 않았고, 문서 작성 사실을 나중에 작성자가 부인할 수 없도록 증명하는 것이다. | ||
+ | |||
+ | * '''디지털 서명의 구현방식''' | ||
+ | : 서명자가 자신의 `비공개 서명 키`로 메시지와 결합해, 암호화된 작은 고유정보(전자서명 값)를 메시지 일부로 하여 덧붙이거나 분리하여 보내고, 후에 이를 `공개키`로 누구나 쉽게 사실 여부를 확인하게 한다. | ||
+ | |||
+ | * '''디지털 서명 [[워크플로]](Digital Signature Workflow)''' | ||
서명을 만들고 검증하기 위한 이 워크플로는 데이터 서명자와 데이터 수신자의 두 참가자로 구성되어 있다. | 서명을 만들고 검증하기 위한 이 워크플로는 데이터 서명자와 데이터 수신자의 두 참가자로 구성되어 있다. | ||
# 서명자가 디지털 서명을 지원하는 비대칭 키를 만든다. | # 서명자가 디지털 서명을 지원하는 비대칭 키를 만든다. | ||
# 서명자는 이 키를 사용하여 여러 서명을 만들 수 있다. | # 서명자는 이 키를 사용하여 여러 서명을 만들 수 있다. | ||
# 서명자가 데이터에서 비공개 키 작업을 수행하여 디지털 서명을 만든다. | # 서명자가 데이터에서 비공개 키 작업을 수행하여 디지털 서명을 만든다. | ||
− | # 서명자가 데이터 및 디지털 서명을 데이터 수신자에게 | + | # 서명자가 데이터 및 디지털 서명을 데이터 수신자에게 제공한다. |
− | # 수신자가 서명자의 | + | # 수신자가 서명자의 공개키/비공개 키 쌍에서 공개키 부분을 사용하여 디지털 서명을 확인하고, 확인에 실패하면 데이터가 변경된다. |
+ | |||
+ | * '''디지털 서명의 요구 조건''' | ||
+ | # 인증(Authentication) : 정당한 서명자(서명자 개인 비밀키)만이 서명을 생성한다. | ||
+ | # 위조 불가능성(무결성) : 위조할 수 없도록 한다. | ||
+ | # 거부의 불가능성(부인방지) : 서명한 자가 서명 후에 서명 사실을 부인 못 하게 한다. | ||
+ | # 재사용 불가능성(유일성) : 다른 문서의 서명으로 대치하는 행위를 못 하게 한다. | ||
+ | # 진위확인의 용이성 : 서명의 진위를 누구든 쉽게 확인한다. | ||
+ | |||
+ | === 디지털 서명의 유형 === | ||
+ | * '''[[인증 서명]](Certified Signatures)''' : 인증 서명은 PDF에 인증된 서명을 추가할 시 사용자가 문서 작성자임을 증명해주게 되는 것으로 인증을 받은 문서는 서명자와 발행자 모두 표시되는데 이때 문서 상단에 파란색 리본으로 보인다.<ref name="유">유서트, 〈[http://a.to/19k0kWF 전자 서명(Electronic Signatures)과 디지털 서명(Digital Signatures)]〉,《네이버》, 2018-01-25 </ref> | ||
+ | * '''[[승인 서명]](Approval Signatures)''' : 승인된 서명은 개인이나 부서에서 만든 전자 승인을 받아 실제 PDF 내에 적용됨으로써 조직의 승인 절차를 신속하게 처리할 수 있으며, 이미지와 서명의 세부정보(지역, 날짜, 서명 목적)를 포함한 맞춤형 서명이 가능하다. <ref name="유"></ref> | ||
+ | * '''서명란(Signature Line)''' : 실제로 표시 가능한 디지털 서명은 실제 문서와 비슷한 서명란으로 나타나는데, 보통 이런 방법은 계약하거나 계약서와 비슷한 문서에 서명 시 진행하며 여러 사용자가 필요할 경우에 주로 사용되고 있다. <ref name="유"></ref> | ||
− | === | + | === 디지털서명의 이점 === |
− | + | 디지털 서명은 3가지의 주요 이점이 있다. | |
− | + | * 무결성 보장 : 이론적으로 보았을 때, 전송되는 데이터를 해커가 보지 않아도 변경을 할 수 있지만 디지털 서명이 있는 데이터의 경우 이러한 상황이 발생이 된다면 서명이 무효가 되어 암호화가 된 디지털 서명 데이터는 위, 변조가 되었는지 확인을 할 수 있어 안전하다. | |
+ | * 개인의 신원 보호 : 디지털 서명의 소유권은 특정 사용자에게 구속력을 가지고 있어 원하는 사람과 의사소통을 하고 있는지 확인이 가능하다. | ||
+ | * 개인 키가 개별 사용자와 연결 : 디지털 서명에 부인 방지의 품질을 부여한다. 이것은 데이터에 서명한 개인 키가 그 소유자가 아닌 다른 사람에 의해 손상되거나, 사용될 일이 없다는 것이다. | ||
+ | * 문서를 전송하는 주체에 대한 정보가 문서에 포함되는 경우가 많지만, 그 정보가 잘못될 가능성은 있다. 디지털 서명은 문서의 원본 발신처를 인증하는 데에 사용할 수 있는데, 디지털 서명에 사용되는 개인 키 값의 소유권을 특정 이용자에게 인증될 수 있을 때, 서명이 유효하다면 그 문서가 개인 키 값을 소유한 사람에게서 발신되었다는 것을 확인할 수 있게 된다. 발신자임을 높은 신뢰도로 확인하는 것은 금융에서 특히 중요하다. 은행 지점에서 본점에 있는 서버에 어떠한 계좌의 잔고를 변경하는 일을 한다고 가정한다면, 변경 명령이 실제 은행 지점에서 일어났는지 높은 신뢰도로 확인되지 않으며, 이러한 변경 명령을 본점에서 받아들이는 것은 치명적인 오류를 낳을 수 있다. | ||
+ | * 디지털 서명의 안정성 : 문서를 발신한 사람과 수신한 사람은 문서가 전송 중에 위변조된 일이 없음을 확인할 필요가 있다. 암호화는 문서의 내용을 은폐하지만, 그것의 이해와 무관하게 암호화된 문서를 변경할 가능성이 상존하나 만약 문서에 디지털 서명이 되어 있는 경우라면, 문서의 어떠한 변경이 발생하면 서명이 무효가 되고, 유효한 서명이 된 가짜 문서를 생성하기 위해서 어떤 문서와 서명을 조작할 만한 효과적인 방법은 없다. 이유인 즉슨, 많은 해시 함수와 계산적인 문제로 거의 불가능하기 때문이다. | ||
− | * '''ELGamal Digital Signature''' | + | === 차이점 === |
+ | * '''[[전자서명]]''' : 전자서명은 계약 또는 기타 기록에 첨부되거나 관련이 있는 문서의 내용이나 조건을 확인하는 데 주로 사용된다. 전자서명은 계약 또는 기타 기록에 첨부된 서명으로 서명하려는 사람의 실행, 채택하는 전자기호 및 프로세스라고 정의되며, 기본적으로는 손으로 작성된 서명을 디지털화한 것이라 볼 수 있고 문서 내용이나 조건을 확인하는 데 사용한다. | ||
+ | * '''디지털 서명''' : 디지털 서명은 메시지를 확인하는 데 사용되고, 기본적으로 메시지의 암호화 된 해시이다. 수신자는 수신된 메시지를 해싱하고 이 값을 암호 해독된 서명과 비교하여 메시지가 조되었는지 확인할 수 있으며, 서명을 해독하려면 해당 공개 키가 필요하다. 디지털 서명은 서명을 한 사람이 본인이 맞는지, 문서의 내용이 위조 혹은 변조가 된 것은 아닌지 확인하는 데 주로 사용된다. 한마디로 신뢰할 수 있는 CA 인증기관이 신원을 확인하는 과정에서 공증인 역할을 하는 것으로, 인증기관은 사용자의 신원을 [[PKI]] 기반 디지털인증서에 연결하여 디지털 서명을 문서 및 [[클라우드]] 기반 서명 [[플랫폼]]에 적용할 수 있도록 하는데 이때 디지털 서명을 문서에 적용하면 암호화 작업이 진행되고, 이 작업이 디지털 인증서와 서명된 데이터를 하나의 유일한 지문으로 바인딩하는 것이다. | ||
+ | # 인증된 문서이며 출처가 분명하다. | ||
+ | # 변경 사항이 있을 경우 서명은 유효하지 않은 것으로 표시되므로 문서가 변조되지 않음을 증명해 준다. | ||
+ | # 신뢰할 수 있는 기관에 의해 확인된다. | ||
+ | * '''[[디지털인증서]]''' : 디지털 인증서는 공개 키를 사람 또는 다른 개체에 바인딩하는 데 사용되고, 인증서가 없으면 받는 사람이 공개 키가 보낸 사람인지 여부를 확인할 수 없기 때문에 쉽게 서명을 위조 할 수 있다. 인증서 자체는 VeriSign과 같은 인증 기관인 신뢰할 수 있는 제3 자에 의해 서명된다.<ref>코드로그 공식사이트 -〈https://codeday.me/ko/qa/20190320/105128.html〉 </ref> | ||
+ | |||
+ | ==디지털 서명 방식== | ||
+ | * '''Direct Digital Signature''' : 공개키 암호 알고리즘과 [[hash function]]을 사용한 모델 송수신 자만 존재하는 디지털 서명 구조 수신자는 송신자의 공개키를 가지고 있다고 가정하면, 송신자의 개인 키로 전체메시지 또는 해시에 서명하고 서명 후 수신자의 공개키로 암호화한다. 대표적인 예로 [[ELGamal]] Digital Signature, [[Schnoor]] Digital Signature 가 있고 송신자의 개인 키 안전성에 따라 유효성이 달라지거나 송신자가 개인 키를 분실하거나 도난당했다고 거짓주장 하거나, 실제로 송신자의 개인 키가 도난당할 수 있으며, 제3자의 개입이 필요하다는 문제점이 있다.<ref name="디">백인감자, 〈[https://potatoggg.tistory.com/153 Digital Signature(디지털서명)]〉,《티스토리》, 2017-06-10 </ref> 직접적인 디지털 서명을 이해하는 것은 서명된 정보의 전달과 관련된 두 개의 당사자, 즉 발신자와 수신자가 있음을 인식함으로써 시작되고, 직접 디지털 서명은 데이터의 수신자 디지털 서명 이 발신자가 사용하는 공개 키를 알고 있기 때문에 이 두 엔티티 만 필요 하고, 서명을 보낸 사람은 수신자가 어떤 식으로든 문서를 변경하지 않도록 신뢰한다.<ref name="팀">팀 브루,〈[http://a.to/19O7rMF 직접 및 중재 된 디지털 서명의 차이점]〉,《techwalla》 </ref> | ||
+ | : '''단점''' : 직접적인 디지털 서명으로 잠재적인 문제를 안다면 중재된 디지털 문서와 차별화하는 데 도움이 되는데 가장 큰 우려는 독립적인 검증 프로세스가 없기 때문에 발신자와 수신자 간의 신뢰가 필요하다 이 프로세스에서는 보낸 사람에게 개인 키가 있어야 하고 받는 사람에게만 공개 키가 있어야 한다. 보낸 사람이 분실했거나 도난당했다고 말하면 서명이 위조되었음을 주장 할 수 있고, 개인 키를 실제로 도난당한 후 서명을 위조하는 것은 직접적인 디지털 서명을 사용하여 잠재적인 보안 위협이 된다.<ref name="팀"></ref> | ||
+ | |||
+ | * '''Arvitrated Digital Signature''' : 관용암호 알고리즘과 중재자를 사용한 모델 [[arbiter]](중재자)가 등장한다. arbiter는 서명된 메시지의 유효성을 검사한다. 이를 위해 중재자에 대한 적절한 신뢰가 필요하고, 개인 키나 공개키 알고리즘 어디에서든 구현 가능하며, arbiter는 메시지를 보거나 안 볼 수 있다.<ref name="디"></ref> 중재된 디지털 서명을 구현하면 타사를 "신뢰할 수 있는 중재자 (trusted arbiter)"라고 불리는 프로세스에 신뢰할 수 있는 중재자의 역할은 대개 두 가지이다. 먼저인 독립 제 3자가 서명된 메시지 또는 데이터의 무결성을 확인한다. 둘째로, 신뢰할 수 있는 중재인은 서명한 문서를 최종 목적지에 도착시키고 그 영수증을 확인하고 문서를 날짜 또는 시간 소인으로 찍는다.<ref name="팀"></ref> | ||
+ | : '''단점''' : 신뢰할 수 있는 중재자를 사용하여 직접 서명의 큰 우려를 채우는 중재 된 서명에는 자체의 단점이 있는데, 중재자를 사용하는 것은 발신자와 수신자 모두로부터 완전한 신뢰를 요구하며, 중재인은 지시에 따라 문서에 시간을 표시하고 전달할 뿐만 아니라 어떤 식으로든 데이터를 변경하지 않을 것이고, 중재인이 일방이나 상대방에 대한 편견을 보여줄 수 있는 가능성이 있다.<ref name="팀"></ref> | ||
+ | |||
+ | * '''엘가말 디지털 서명'''(ELGamal Digital Signature) | ||
A : 송신자, B : 수신자 라고 하자 | A : 송신자, B : 수신자 라고 하자 | ||
# 소수 q와 primitive root a 선택 | # 소수 q와 primitive root a 선택 | ||
44번째 줄: | 83번째 줄: | ||
* '''Schnoor Digital Signature''' : 쉬노아 서명으로 서명값이 짧다는 특징이 있다. | * '''Schnoor Digital Signature''' : 쉬노아 서명으로 서명값이 짧다는 특징이 있다. | ||
− | |||
− | |||
− | |||
− | |||
== 작동방법 == | == 작동방법 == | ||
− | + | 디지털 서명을 만드는 가장 일반적인 방법은 [[PKC]](Public Key Cryptography)를 사용하는 것이다. 그리고 PKC 를 제공하는데 사용되는 시스템은 PKI(Public Key Infrastructure)라고 한다. | |
− | ''' | + | * '''디지털 서명 삭제 및 지우기''' |
− | : 디지털 서명은 PDF 문서에서 삭제할 수 있지만 서명 확인을 잃게 된다. 서명 필드는 서명을 지운 후에도 남아 있지만 문서의 보안 설정에 따라 제거할 수 있다. | + | : 디지털 서명은 PDF 문서에서 삭제할 수 있지만, 서명 확인을 잃게 된다. 서명 필드는 서명을 지운 후에도 남아 있지만, 문서의 보안 설정에 따라 제거할 수 있다. |
− | + | : '''서명 필드를 지우기''' : 서명 필드를 지우는 방법은 2가지가 있다. | |
− | : | + | : 첫 번째 방법, [손 도구] 또는 [문서 서명] 도구를 사용하여 서명 필드를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 [서명 필드 지우기]를 선택한다. |
− | : | + | : 두 번째 방법, [서명] 패널을 열고 지우려는 서명 필드를 선택한 다음 마우스 오른쪽 단추로 클릭하거나 [옵션] 메뉴에서 [서명 필드 지우기]를 선택한다. |
− | + | : '''현재 문서의 모든 서명 필드 지우기''' : 서명 필드 지우기는 영구적이므로 이 작업은 취소할 수 없다. | |
# 검토 모드의 [보안] > [서명/인증] > [서명/인증] 메뉴에서 또는 왼쪽 도구 모음에 있는 [서명] 패널의 [옵션] 메뉴에서 [모든 서명 필드 지우기]를 합니다. | # 검토 모드의 [보안] > [서명/인증] > [서명/인증] 메뉴에서 또는 왼쪽 도구 모음에 있는 [서명] 패널의 [옵션] 메뉴에서 [모든 서명 필드 지우기]를 합니다. | ||
# 메시지가 표시되면 [확인]을 클릭하여 모든 서명 필드를 지운다. | # 메시지가 표시되면 [확인]을 클릭하여 모든 서명 필드를 지운다. | ||
− | + | : '''서명 필드 삭제''' : 우선 서명 필드를 지우고, 서명 필드를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 [서명 필드 삭제]를 선택한다. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== 주의할 점 == | == 주의할 점 == | ||
− | [[블록체인]] 기술을 사용할 때 사용자는 [[공개키]]와 [[개인키]]를 가지며 둘 다 임의의 숫자와 문자열로 나타내는데 공개키는 전자 메일 주소 및 비공개 키와 비교할 수도 있기에 누구와도 | + | [[블록체인]] 기술을 사용할 때 사용자는 [[공개키]] 와 [[개인키]] 를 가지며 둘 다 임의의 숫자와 문자열로 나타내는데 공개키는 전자 메일 주소 및 비공개 키와 비교할 수도 있기에 누구와도 개인 키를 공유하지 않는 것이 가장 중요하고, 개인 키를 적어서 안전한 곳에 보관하는 것도 중요하다. |
== 활용 == | == 활용 == | ||
[[파일:블.PNG|썸네일|400픽셀]] | [[파일:블.PNG|썸네일|400픽셀]] | ||
* '''PoS(Proof-of-Stake)블록체인''' | * '''PoS(Proof-of-Stake)블록체인''' | ||
− | : 일반적인 | + | : 일반적인 POS 기반 블록체인의 구조는 이렇다. |
# 선택된 사용자들로 구성된 위원회가 다음에 추가할 블록 B에 대해 합의된 하위 프로토콜을 실행한다. | # 선택된 사용자들로 구성된 위원회가 다음에 추가할 블록 B에 대해 합의된 하위 프로토콜을 실행한다. | ||
− | # 각 위원회 구성원은 B 블록에 | + | # 각 위원회 구성원은 B 블록에 서명한다. |
− | # 충분한 수의 위원회 구성원이 블록 B에 대한 서명을 볼 경우 각 노드는 그들의 분산 원장에 블록 B를 | + | # 충분한 수의 위원회 구성원이 블록 B에 대한 서명을 볼 경우 각 노드는 그들의 분산 원장에 블록 B를 추가한다. |
[[파일:블1.PNG|썸네일|400픽셀]] | [[파일:블1.PNG|썸네일|400픽셀]] | ||
− | : 이 블록 B의 위원회 서명 컬렉션을 블록 | + | : 이 블록 B의 위원회 서명 컬렉션을 블록 인증서이다. 위원회가 선택되고 서브 프로토콜이 합의되는 방식은 다양한 설계에 따라 다른 방식들도 나뉘는데, 최근 연구에서는 알고 랜드는 모든 POS 기반 블록체인의 공통 암호화 코어인 새로운 서명 체계인 위원회가 사용하는 서명 체계를 설계했다. 효율성 측면에서 POS 프로토콜의 주요 비용은 위원회 서명을 전파하고 블록 인증서를 저장하는 데 필요한 대역폭 및 공간과 이러한 인증서의 서명 검증에 필요한 계산 리소스이다. 보안 측면에서, 서명은 선행 보안인 키 계약 프로토콜에 의해 이행되는 선행 보안과 유사한 속성이 되어야 하고, 각 서명은 서명된 메시지 외에 현재 기간과 연결되어 있으며, 매시간 간격 후에는 사용자의 비밀 키를 업데이트하여 이후 기간 동안만 메시지에 서명하는 데 사용할 수 있고 이전 기간에는 서명할 수 없다. [[포워드보안]] 서명을 사용하면 POS 기반 블록체인에 대한 적응형 공격을 방지할 수 있다. 알고랜드의 구성을 사용하면 위원회 서명 집합(S_1, … , S_n)은 효율적으로 검증 가능한 단일 서명 S로 압축(aggregate)할 수 있으며, 라운드 r에 대한 블록에 서명한 후에는 사용자가 키를 돌려 위에서 설명한 대로 선행 보안을 충족할 수 있다. 요약하자면, 이 계획은 블록체인에서 확장할 수 있고 안전한 합의를 구축하는 데 사용된다.<ref>Algorand KR, 〈[http://a.to/19TIypU 지분 증명 블록체인을 위한 효율적이고 안전한 디지털 서명]〉,《미디움》 </ref> |
* '''Cloud KMS 디지털 서명''' | * '''Cloud KMS 디지털 서명''' | ||
− | Cloud KMS는 디지털 서명을 위해 타원 곡선(EC) 및 RSA 알고리즘을 | + | : Cloud KMS는 디지털 서명을 위해 타원 곡선(EC) 및 [[RSA]] 알고리즘을 지원한다. 이 두 업계 표준 알고리즘 모두 다양한 키 크기와 다이제스트 알고리즘이며, 타원 곡선 암호 법은 단방향 해시 함수 및 점 곱셈을 사용하여 타원 곡선에서 점을 계산하기 때문에 점의 곱 함수를 파악하기가 어렵고, 곱 함수를 파악하기 어려운 것이 EC 암호 범의 암호화 이점이다. 곡선의 크기가 클수록 곱 함수를 계산하기가 더 어려워 EC 암호 법의 이점은 동일한 암호화 수준을 제공하는 RSA 키에 비해 EC 키의 크기가 작다는 것이다. RSA 암호 법은 큰 정수를 두 개 이상의 요소로 나누기가 어렵다는 점을 이용하는데, 키 크기가 클수록 정수를 계산하기 어렵다. Cloud KMS는 디지털 서명을 만들고 검증하는데 디지털 서명을 직접 검증할 수 없는 대신 OPEN SSL과 같은 공개적으로 사용 가능한 SDK 및 도구를 사용하여 디지털 서명을 검증하고 이러한 [[SDK]]와 도구에는 Cloud KMS에서 검색되는 공개 키가 필요하다. 디지털 서명의 기능으로는 |
− | RSA | ||
# 키 목적이 ASYMMETRIC_SIGN인 비대칭 키를 생성할 수 있고 비대칭 서명을 위한 Cloud KMS 키는 타원 곡선 서명 알고리즘과 RSA 서명 알고리즘을 모두 지원한다. | # 키 목적이 ASYMMETRIC_SIGN인 비대칭 키를 생성할 수 있고 비대칭 서명을 위한 Cloud KMS 키는 타원 곡선 서명 알고리즘과 RSA 서명 알고리즘을 모두 지원한다. | ||
# 디지털 서명을 생성할 수 있다. | # 디지털 서명을 생성할 수 있다. | ||
90번째 줄: | 117번째 줄: | ||
== 사례 == | == 사례 == | ||
− | * 디지털 서명을 사용하여 빌드를 검증할 수 있다. 예를 들어 비공개 키가 디지털로 서명한 바이너리의 경우, 비공개 키에 해당하는 공개 키를 사용하여 유효성을 검사할 수 있고, 바이너리의 서명이 유효하지 않으면 바이너리가 변조되거나 손상된 것이다. 다른 예로는 인증 기관(CA)에서 발급한 인증서의 주체를 검증하는 것인데, CA는 | + | * 디지털 서명을 사용하여 빌드를 검증할 수 있다. 예를 들어 비공개 키가 디지털로 서명한 바이너리의 경우, 비공개 키에 해당하는 공개 키를 사용하여 유효성을 검사할 수 있고, 바이너리의 서명이 유효하지 않으면 바이너리가 변조되거나 손상된 것이다. 다른 예로는 인증 기관(CA)에서 발급한 인증서의 주체를 검증하는 것인데, CA는 공개키/비공개 키의 비공개 키 부분에 대한 주체의 소유권을 바탕으로 주체에게 인증서를 발급한다. 인증서는 주체의 비공개 키로 생성된 디지털 서명을 포함하고 인증서는 공개키/비공개 키에서 주체의 공개키 부분도 포함하며, 주체와 상호작용하는 개체는 주체의 공개 키와 추가 인증서 확인 규칙을 사용하여 서명을 검증한다. 서명이 문제의 데이터에 상응하지 않거나 인증서에 규정된 확인 규칙을 위반하는 경우에는 서명이 유효하지 않은 것으로 판명된다.<ref name="구"></ref> |
− | + | * [[소프트웨어]](SW) 프로그램 신뢰성 판단 기준이 되는 디지털 서명 보안이 문제가 되었다. 현재까지 확인된 디지털 서명 유출 기업은 NHN, 넥슨, 이스트소프트 등으로 해당 기업들은 이미 문제가 됐던 디지털 서명을 모두 폐쇄 조치하였다. 디지털 서명 유출은 해당 기업의 SW를 사용하는 많은 이용자에게 피해를 줄 수 있으나 디지털 서명 관리가 허술하다 보니 해커들이 악의적인 공격행위를 시도하기 시작했고 피해가 발생했다. 해커들이 악용한 디지털인증서는 인터넷상에서 신뢰성을 나타내주는 일종의 전자 보증서라고 생각하면 된다(인증서 내에 서명이 포함돼 있다). 이는 특정 인증기관을 통해 발급되며 해당 인증서의 소유자 이름, 유효기간, 소유자 전자서명을 확인할 수 있는 공개키는 물론, 사실 여부를 확인해주는 인증기관의 전자서명 값까지 포함하고 있다.<ref>김희연 기자, 〈[http://www.zdnet.co.kr/view/?no=20111206103139 디지털서명 보안 ..."이러니 뚫리지"]〉,《ZD넷코리아》, 2011-11-06 </ref> | |
{{각주}} | {{각주}} | ||
102번째 줄: | 129번째 줄: | ||
* 구글클라우드 공식 홈페이지 -〈http://a.to/19oLuJq〉 | * 구글클라우드 공식 홈페이지 -〈http://a.to/19oLuJq〉 | ||
* Gaaiho PDF파일, 〈[http://a.to/19a9if8 디지털 서명 지우기 및 삭제]〉《Gaaiho Doc》 | * Gaaiho PDF파일, 〈[http://a.to/19a9if8 디지털 서명 지우기 및 삭제]〉《Gaaiho Doc》 | ||
+ | * 차재복, 〈[http://a.to/19g6gWI 전자 서명, 디지털 서명, 시그니처]〉, 《정보통신기술》 | ||
+ | * 〈http://a.to/19FmCyX〉, 《위키백과》 | ||
+ | * 박종혁, 〈[http://a.to/19W0LtF 제 9장 디지털 서명]〉, 《PDF파일》 | ||
== 같이 보기 == | == 같이 보기 == |
2019년 8월 5일 (월) 20:59 기준 최신판
디지털서명(digital signature) 이란 첨단 기술로 보안이 강화된 전자서명 의 한 종류로서, 개인키 와 공개키 암호(비대칭 암호화라고도 불림)을 이용한 전자서명이다. 송신자의 개인 키를 사용하여 서명을 보내면 수신 측에서는 송신자의 공용키를 이용해 보내온 메시지를 해독한 다음 이를 보관하게 되고, 송신자는 디지털 서명을 통해 본인임을 인증, 수신인은 해당 메시지가 위, 변조 되지 않았음을 확인한다. 그리고 블록체인 에 기록되는 데이터의 보안 및 무결성을 보장하는 주요 측면 중 하나이다. 예를 들어 송신자(A), 수신자(B)라 칭하게 된다면, A는 B에게 데이터를 보낼 때 A의 개인 키로 문서를 암호화하여 B에게 보내고 B는 A의 공개키로 복 호환 한 후, 그것이 정말 A가 보낸 것이 맞는지 확인을 하는 방식이 디지털 서명이다.
목차
개요[편집]
디지털 서명은 보통 3개의 알고리즘으로 구성되는데, 공개키 쌍을 생성하는 키 생성 알고리즘과 이용자의 개인 키를 사용하여 서명(전자서명)을 생성하는 알고리즘, 그리고 그것과 이용자의 공개 키를 사용하여 서명을 검증하는 알고리즘이다. 서명 생성 프로세스에서 생성된 데이터도 '디지털 서명'이라고 지칭하며, 디지털 서명은 '메시지'의 인증기능을 제공한다. 메시지는 전자메일, 계약서, 혹은 더 복잡한 암호화 프로토콜로 송수신되는 데이터 등, 많은 것을 포함한다. 인증기관이 발행하는 공인인증서는 인증 기관의 사회적인 신뢰성을 담보로 이용자와 공개 값과 이용자의 관계를 보증하는 것으로 인증서가 인증 기관에서 발급된 것임을 증명하기 위해, 디지털 서명을 사용하고 있고 디지털 서명은 종종 전자 서명을 구현하기 위해 사용되기도 하지만, 모든 전자 서명이 디지털 서명을 이용하는 형태를 취하고 있지는 않다.
역사[편집]
디지털 서명은 휫필드디피(Whitfield Diffie)와 마틴헬만(Martin Hellman)이 1976년 처음으로 설명했다. 하지만 그것은 아직 확실하지 않은 추측이었다. 그 이후 로널드리베스트 (Ron Rivest)와 아디샤미어 (Adi Sh amir), 레오나르도아델만(Leonard Ad leman)이 디지털 서명에 사용될 수 있는 RSA 알고리즘을 발명하였다. 하지만 아직도 개념만 증명하는 단계였다. 디지털 서명을 제공하기 위하여 처음으로 판매된 소프트웨어는 Lotus Notes 1.0이었고 RSA 알고리즘을 사용하여 제작되었고 1989년에 출시되었다. 그 이후로 계속해서 디지털 서명 기법이 개발되었는데, Lamport 서명 부터 머클서명, Rabin 서명 등이 개발되었다.
정의[편집]
디지털 서명은 일반적으로 3개의 알고리즘으로 구성이 된다.
- 키 생성 알고리즘 : 개인 키를 임의로 가능한 개인 키들의 세트로부터 알고리즘은 개인 키와 해당 공개키를 출력한다.
- 서명 생성 알고리즘 : 서명을 만들기 위해 데이터와 개인 키를 결합한다.
- 서명 검증 알고리즘 : 서명을 확인하고 메시지, 공개키 및 서명을 기반으로 메시지가 인증되었는지 여부를 확인한다.
디지털 서명은 두 가지의 주요 속성이 필요하다. 첫 번째로는 고정된 메시지 및 고정된 개인 키로부터 생성된 서명의 신뢰성은 대응하는 공개키를 사용함으로써 검증이 될 수 있다는 것이고, 두 번째로는 당사자의 개인 키를 알고 있다 하더라도 유효한 서명을 생성하는 것은 불가능하다는 것이다.
알고리즘의 핵심 기능
- 공개키 또는 암호화된 데이터를 기반으로 개인 키를 만드는 것은 절대로 불가능하다.
- 공개키를 통해 확인된 메시지 및 개인 키를 기반으로 서명의 신뢰성을 보장한다.
특징[편집]
디지털 서명은 데이터의 신뢰성을 확인하는 데 사용되는 암호화 출력이고, 서명 키를 사용하여 원시 데이터에 대한 서명을 생성하는 서명 작업, 서명 키를 알지 못하는 사람이 서명을 검증할 수 있는 확인 작업이 있으며, 디지털 서명은 공개키 암호화라고도 하는 비대칭 암호화를 사용한다. 비대칭 키는 공개키/비공개 키 쌍으로 구성되며, 비공개 키는 서명을 만드는 데 사용되고, 해당 공개키는 서명을 확인하는 데 사용된다.[1] 메시지 인증 방식은 송수신 자의 메시지 교환을 제3자로 부터 보호할 수 있다. 그러나 송수신 자 간의 서로를 보호할 수 없다. A가 B에게 메시지 M을 보냈는데 B가 M을 위조하여 N을 받았다고 주장할 수 있다. 혹은 A가 B에게 메시지 M을 보내놓고 그런 메시지를 보낸 적이 없다고 부정할 수 있다. 즉 메시지 인증 방식은 신뢰가 깨진 상태에는 대응을 못 한다. 디지털 서명이 제공한다, 저자, 날짜 및 서명 시간, 메시지 내용 인증, 분쟁 해결을 위한 제 3자의 확인이 있다. 비트 패턴은 서명되는 메시지에 의존된다. forgery와 denial을 방지하기 위해 송신자의 고유한 정보를 사용해야 하고 서명을 만드는 것이 쉬워야 하고 쉽게 인식하고 증명해야 하며, 계산상 불가능하도록 위조를 못 하게 해야 한다. 기존 디지털 서명에 새로운 메시지로 바꿀 수 없고, 주어진 메시지에 대한 사기성 디지털 서명을 만들 수 없으며, 저장소에 디지털 서명의 사본을 보관하는 것이 실용적이다.
- 디지털서명의 지향점
- 서명의 진위 여부가 아니라, 특정 서명자와 특정 메시지 간에 결부되어있다는 사실을 증명하는 것 즉, 문서에 기재되는 서명의 위조 방지보다는, 후에 서명된 그 문서에 대해 변경행위의 검출에 주안점을 둔 것이다. 전자문서 내용에 대한 암호화가 아니고, 서명자가 진짜 서명자이며, 작성내용이 위변조되지 않았고, 문서 작성 사실을 나중에 작성자가 부인할 수 없도록 증명하는 것이다.
- 디지털 서명의 구현방식
- 서명자가 자신의 `비공개 서명 키`로 메시지와 결합해, 암호화된 작은 고유정보(전자서명 값)를 메시지 일부로 하여 덧붙이거나 분리하여 보내고, 후에 이를 `공개키`로 누구나 쉽게 사실 여부를 확인하게 한다.
- 디지털 서명 워크플로(Digital Signature Workflow)
서명을 만들고 검증하기 위한 이 워크플로는 데이터 서명자와 데이터 수신자의 두 참가자로 구성되어 있다.
- 서명자가 디지털 서명을 지원하는 비대칭 키를 만든다.
- 서명자는 이 키를 사용하여 여러 서명을 만들 수 있다.
- 서명자가 데이터에서 비공개 키 작업을 수행하여 디지털 서명을 만든다.
- 서명자가 데이터 및 디지털 서명을 데이터 수신자에게 제공한다.
- 수신자가 서명자의 공개키/비공개 키 쌍에서 공개키 부분을 사용하여 디지털 서명을 확인하고, 확인에 실패하면 데이터가 변경된다.
- 디지털 서명의 요구 조건
- 인증(Authentication) : 정당한 서명자(서명자 개인 비밀키)만이 서명을 생성한다.
- 위조 불가능성(무결성) : 위조할 수 없도록 한다.
- 거부의 불가능성(부인방지) : 서명한 자가 서명 후에 서명 사실을 부인 못 하게 한다.
- 재사용 불가능성(유일성) : 다른 문서의 서명으로 대치하는 행위를 못 하게 한다.
- 진위확인의 용이성 : 서명의 진위를 누구든 쉽게 확인한다.
디지털 서명의 유형[편집]
- 인증 서명(Certified Signatures) : 인증 서명은 PDF에 인증된 서명을 추가할 시 사용자가 문서 작성자임을 증명해주게 되는 것으로 인증을 받은 문서는 서명자와 발행자 모두 표시되는데 이때 문서 상단에 파란색 리본으로 보인다.[2]
- 승인 서명(Approval Signatures) : 승인된 서명은 개인이나 부서에서 만든 전자 승인을 받아 실제 PDF 내에 적용됨으로써 조직의 승인 절차를 신속하게 처리할 수 있으며, 이미지와 서명의 세부정보(지역, 날짜, 서명 목적)를 포함한 맞춤형 서명이 가능하다. [2]
- 서명란(Signature Line) : 실제로 표시 가능한 디지털 서명은 실제 문서와 비슷한 서명란으로 나타나는데, 보통 이런 방법은 계약하거나 계약서와 비슷한 문서에 서명 시 진행하며 여러 사용자가 필요할 경우에 주로 사용되고 있다. [2]
디지털서명의 이점[편집]
디지털 서명은 3가지의 주요 이점이 있다.
- 무결성 보장 : 이론적으로 보았을 때, 전송되는 데이터를 해커가 보지 않아도 변경을 할 수 있지만 디지털 서명이 있는 데이터의 경우 이러한 상황이 발생이 된다면 서명이 무효가 되어 암호화가 된 디지털 서명 데이터는 위, 변조가 되었는지 확인을 할 수 있어 안전하다.
- 개인의 신원 보호 : 디지털 서명의 소유권은 특정 사용자에게 구속력을 가지고 있어 원하는 사람과 의사소통을 하고 있는지 확인이 가능하다.
- 개인 키가 개별 사용자와 연결 : 디지털 서명에 부인 방지의 품질을 부여한다. 이것은 데이터에 서명한 개인 키가 그 소유자가 아닌 다른 사람에 의해 손상되거나, 사용될 일이 없다는 것이다.
- 문서를 전송하는 주체에 대한 정보가 문서에 포함되는 경우가 많지만, 그 정보가 잘못될 가능성은 있다. 디지털 서명은 문서의 원본 발신처를 인증하는 데에 사용할 수 있는데, 디지털 서명에 사용되는 개인 키 값의 소유권을 특정 이용자에게 인증될 수 있을 때, 서명이 유효하다면 그 문서가 개인 키 값을 소유한 사람에게서 발신되었다는 것을 확인할 수 있게 된다. 발신자임을 높은 신뢰도로 확인하는 것은 금융에서 특히 중요하다. 은행 지점에서 본점에 있는 서버에 어떠한 계좌의 잔고를 변경하는 일을 한다고 가정한다면, 변경 명령이 실제 은행 지점에서 일어났는지 높은 신뢰도로 확인되지 않으며, 이러한 변경 명령을 본점에서 받아들이는 것은 치명적인 오류를 낳을 수 있다.
- 디지털 서명의 안정성 : 문서를 발신한 사람과 수신한 사람은 문서가 전송 중에 위변조된 일이 없음을 확인할 필요가 있다. 암호화는 문서의 내용을 은폐하지만, 그것의 이해와 무관하게 암호화된 문서를 변경할 가능성이 상존하나 만약 문서에 디지털 서명이 되어 있는 경우라면, 문서의 어떠한 변경이 발생하면 서명이 무효가 되고, 유효한 서명이 된 가짜 문서를 생성하기 위해서 어떤 문서와 서명을 조작할 만한 효과적인 방법은 없다. 이유인 즉슨, 많은 해시 함수와 계산적인 문제로 거의 불가능하기 때문이다.
차이점[편집]
- 전자서명 : 전자서명은 계약 또는 기타 기록에 첨부되거나 관련이 있는 문서의 내용이나 조건을 확인하는 데 주로 사용된다. 전자서명은 계약 또는 기타 기록에 첨부된 서명으로 서명하려는 사람의 실행, 채택하는 전자기호 및 프로세스라고 정의되며, 기본적으로는 손으로 작성된 서명을 디지털화한 것이라 볼 수 있고 문서 내용이나 조건을 확인하는 데 사용한다.
- 디지털 서명 : 디지털 서명은 메시지를 확인하는 데 사용되고, 기본적으로 메시지의 암호화 된 해시이다. 수신자는 수신된 메시지를 해싱하고 이 값을 암호 해독된 서명과 비교하여 메시지가 조되었는지 확인할 수 있으며, 서명을 해독하려면 해당 공개 키가 필요하다. 디지털 서명은 서명을 한 사람이 본인이 맞는지, 문서의 내용이 위조 혹은 변조가 된 것은 아닌지 확인하는 데 주로 사용된다. 한마디로 신뢰할 수 있는 CA 인증기관이 신원을 확인하는 과정에서 공증인 역할을 하는 것으로, 인증기관은 사용자의 신원을 PKI 기반 디지털인증서에 연결하여 디지털 서명을 문서 및 클라우드 기반 서명 플랫폼에 적용할 수 있도록 하는데 이때 디지털 서명을 문서에 적용하면 암호화 작업이 진행되고, 이 작업이 디지털 인증서와 서명된 데이터를 하나의 유일한 지문으로 바인딩하는 것이다.
- 인증된 문서이며 출처가 분명하다.
- 변경 사항이 있을 경우 서명은 유효하지 않은 것으로 표시되므로 문서가 변조되지 않음을 증명해 준다.
- 신뢰할 수 있는 기관에 의해 확인된다.
- 디지털인증서 : 디지털 인증서는 공개 키를 사람 또는 다른 개체에 바인딩하는 데 사용되고, 인증서가 없으면 받는 사람이 공개 키가 보낸 사람인지 여부를 확인할 수 없기 때문에 쉽게 서명을 위조 할 수 있다. 인증서 자체는 VeriSign과 같은 인증 기관인 신뢰할 수 있는 제3 자에 의해 서명된다.[3]
디지털 서명 방식[편집]
- Direct Digital Signature : 공개키 암호 알고리즘과 hash function을 사용한 모델 송수신 자만 존재하는 디지털 서명 구조 수신자는 송신자의 공개키를 가지고 있다고 가정하면, 송신자의 개인 키로 전체메시지 또는 해시에 서명하고 서명 후 수신자의 공개키로 암호화한다. 대표적인 예로 ELGamal Digital Signature, Schnoor Digital Signature 가 있고 송신자의 개인 키 안전성에 따라 유효성이 달라지거나 송신자가 개인 키를 분실하거나 도난당했다고 거짓주장 하거나, 실제로 송신자의 개인 키가 도난당할 수 있으며, 제3자의 개입이 필요하다는 문제점이 있다.[4] 직접적인 디지털 서명을 이해하는 것은 서명된 정보의 전달과 관련된 두 개의 당사자, 즉 발신자와 수신자가 있음을 인식함으로써 시작되고, 직접 디지털 서명은 데이터의 수신자 디지털 서명 이 발신자가 사용하는 공개 키를 알고 있기 때문에 이 두 엔티티 만 필요 하고, 서명을 보낸 사람은 수신자가 어떤 식으로든 문서를 변경하지 않도록 신뢰한다.[5]
- 단점 : 직접적인 디지털 서명으로 잠재적인 문제를 안다면 중재된 디지털 문서와 차별화하는 데 도움이 되는데 가장 큰 우려는 독립적인 검증 프로세스가 없기 때문에 발신자와 수신자 간의 신뢰가 필요하다 이 프로세스에서는 보낸 사람에게 개인 키가 있어야 하고 받는 사람에게만 공개 키가 있어야 한다. 보낸 사람이 분실했거나 도난당했다고 말하면 서명이 위조되었음을 주장 할 수 있고, 개인 키를 실제로 도난당한 후 서명을 위조하는 것은 직접적인 디지털 서명을 사용하여 잠재적인 보안 위협이 된다.[5]
- Arvitrated Digital Signature : 관용암호 알고리즘과 중재자를 사용한 모델 arbiter(중재자)가 등장한다. arbiter는 서명된 메시지의 유효성을 검사한다. 이를 위해 중재자에 대한 적절한 신뢰가 필요하고, 개인 키나 공개키 알고리즘 어디에서든 구현 가능하며, arbiter는 메시지를 보거나 안 볼 수 있다.[4] 중재된 디지털 서명을 구현하면 타사를 "신뢰할 수 있는 중재자 (trusted arbiter)"라고 불리는 프로세스에 신뢰할 수 있는 중재자의 역할은 대개 두 가지이다. 먼저인 독립 제 3자가 서명된 메시지 또는 데이터의 무결성을 확인한다. 둘째로, 신뢰할 수 있는 중재인은 서명한 문서를 최종 목적지에 도착시키고 그 영수증을 확인하고 문서를 날짜 또는 시간 소인으로 찍는다.[5]
- 단점 : 신뢰할 수 있는 중재자를 사용하여 직접 서명의 큰 우려를 채우는 중재 된 서명에는 자체의 단점이 있는데, 중재자를 사용하는 것은 발신자와 수신자 모두로부터 완전한 신뢰를 요구하며, 중재인은 지시에 따라 문서에 시간을 표시하고 전달할 뿐만 아니라 어떤 식으로든 데이터를 변경하지 않을 것이고, 중재인이 일방이나 상대방에 대한 편견을 보여줄 수 있는 가능성이 있다.[5]
- 엘가말 디지털 서명(ELGamal Digital Signature)
A : 송신자, B : 수신자 라고 하자
- 소수 q와 primitive root a 선택
- 송신자는 비밀키(개인키, X_A) 선택 후 고개키 계산(1<=X_A<p-1,A : 송신자)
- 메시지 M을 hash 적용시켜 m으로 만든다. 0<= m <=q-1
- 임의의 값 K선택한다.(1<=K<=q-1,gcd(k,q-1)=1)
- 서명값 S_1,S_2 계산후 수신자에게 m과 서명값을 전달한다. 계산
- 수신자는 서명값 계산을 통해 검증하고, V_1,V_2 가 일치하면 유효한 것이다.
- Schnoor Digital Signature : 쉬노아 서명으로 서명값이 짧다는 특징이 있다.
작동방법[편집]
디지털 서명을 만드는 가장 일반적인 방법은 PKC(Public Key Cryptography)를 사용하는 것이다. 그리고 PKC 를 제공하는데 사용되는 시스템은 PKI(Public Key Infrastructure)라고 한다.
- 디지털 서명 삭제 및 지우기
- 디지털 서명은 PDF 문서에서 삭제할 수 있지만, 서명 확인을 잃게 된다. 서명 필드는 서명을 지운 후에도 남아 있지만, 문서의 보안 설정에 따라 제거할 수 있다.
- 서명 필드를 지우기 : 서명 필드를 지우는 방법은 2가지가 있다.
- 첫 번째 방법, [손 도구] 또는 [문서 서명] 도구를 사용하여 서명 필드를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 [서명 필드 지우기]를 선택한다.
- 두 번째 방법, [서명] 패널을 열고 지우려는 서명 필드를 선택한 다음 마우스 오른쪽 단추로 클릭하거나 [옵션] 메뉴에서 [서명 필드 지우기]를 선택한다.
- 현재 문서의 모든 서명 필드 지우기 : 서명 필드 지우기는 영구적이므로 이 작업은 취소할 수 없다.
- 검토 모드의 [보안] > [서명/인증] > [서명/인증] 메뉴에서 또는 왼쪽 도구 모음에 있는 [서명] 패널의 [옵션] 메뉴에서 [모든 서명 필드 지우기]를 합니다.
- 메시지가 표시되면 [확인]을 클릭하여 모든 서명 필드를 지운다.
- 서명 필드 삭제 : 우선 서명 필드를 지우고, 서명 필드를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 [서명 필드 삭제]를 선택한다.
주의할 점[편집]
블록체인 기술을 사용할 때 사용자는 공개키 와 개인키 를 가지며 둘 다 임의의 숫자와 문자열로 나타내는데 공개키는 전자 메일 주소 및 비공개 키와 비교할 수도 있기에 누구와도 개인 키를 공유하지 않는 것이 가장 중요하고, 개인 키를 적어서 안전한 곳에 보관하는 것도 중요하다.
활용[편집]
- PoS(Proof-of-Stake)블록체인
- 일반적인 POS 기반 블록체인의 구조는 이렇다.
- 선택된 사용자들로 구성된 위원회가 다음에 추가할 블록 B에 대해 합의된 하위 프로토콜을 실행한다.
- 각 위원회 구성원은 B 블록에 서명한다.
- 충분한 수의 위원회 구성원이 블록 B에 대한 서명을 볼 경우 각 노드는 그들의 분산 원장에 블록 B를 추가한다.
- 이 블록 B의 위원회 서명 컬렉션을 블록 인증서이다. 위원회가 선택되고 서브 프로토콜이 합의되는 방식은 다양한 설계에 따라 다른 방식들도 나뉘는데, 최근 연구에서는 알고 랜드는 모든 POS 기반 블록체인의 공통 암호화 코어인 새로운 서명 체계인 위원회가 사용하는 서명 체계를 설계했다. 효율성 측면에서 POS 프로토콜의 주요 비용은 위원회 서명을 전파하고 블록 인증서를 저장하는 데 필요한 대역폭 및 공간과 이러한 인증서의 서명 검증에 필요한 계산 리소스이다. 보안 측면에서, 서명은 선행 보안인 키 계약 프로토콜에 의해 이행되는 선행 보안과 유사한 속성이 되어야 하고, 각 서명은 서명된 메시지 외에 현재 기간과 연결되어 있으며, 매시간 간격 후에는 사용자의 비밀 키를 업데이트하여 이후 기간 동안만 메시지에 서명하는 데 사용할 수 있고 이전 기간에는 서명할 수 없다. 포워드보안 서명을 사용하면 POS 기반 블록체인에 대한 적응형 공격을 방지할 수 있다. 알고랜드의 구성을 사용하면 위원회 서명 집합(S_1, … , S_n)은 효율적으로 검증 가능한 단일 서명 S로 압축(aggregate)할 수 있으며, 라운드 r에 대한 블록에 서명한 후에는 사용자가 키를 돌려 위에서 설명한 대로 선행 보안을 충족할 수 있다. 요약하자면, 이 계획은 블록체인에서 확장할 수 있고 안전한 합의를 구축하는 데 사용된다.[6]
- Cloud KMS 디지털 서명
- Cloud KMS는 디지털 서명을 위해 타원 곡선(EC) 및 RSA 알고리즘을 지원한다. 이 두 업계 표준 알고리즘 모두 다양한 키 크기와 다이제스트 알고리즘이며, 타원 곡선 암호 법은 단방향 해시 함수 및 점 곱셈을 사용하여 타원 곡선에서 점을 계산하기 때문에 점의 곱 함수를 파악하기가 어렵고, 곱 함수를 파악하기 어려운 것이 EC 암호 범의 암호화 이점이다. 곡선의 크기가 클수록 곱 함수를 계산하기가 더 어려워 EC 암호 법의 이점은 동일한 암호화 수준을 제공하는 RSA 키에 비해 EC 키의 크기가 작다는 것이다. RSA 암호 법은 큰 정수를 두 개 이상의 요소로 나누기가 어렵다는 점을 이용하는데, 키 크기가 클수록 정수를 계산하기 어렵다. Cloud KMS는 디지털 서명을 만들고 검증하는데 디지털 서명을 직접 검증할 수 없는 대신 OPEN SSL과 같은 공개적으로 사용 가능한 SDK 및 도구를 사용하여 디지털 서명을 검증하고 이러한 SDK와 도구에는 Cloud KMS에서 검색되는 공개 키가 필요하다. 디지털 서명의 기능으로는
- 키 목적이 ASYMMETRIC_SIGN인 비대칭 키를 생성할 수 있고 비대칭 서명을 위한 Cloud KMS 키는 타원 곡선 서명 알고리즘과 RSA 서명 알고리즘을 모두 지원한다.
- 디지털 서명을 생성할 수 있다.
- 비대칭 키의 공개 키를 검색할 수 있다.
사례[편집]
- 디지털 서명을 사용하여 빌드를 검증할 수 있다. 예를 들어 비공개 키가 디지털로 서명한 바이너리의 경우, 비공개 키에 해당하는 공개 키를 사용하여 유효성을 검사할 수 있고, 바이너리의 서명이 유효하지 않으면 바이너리가 변조되거나 손상된 것이다. 다른 예로는 인증 기관(CA)에서 발급한 인증서의 주체를 검증하는 것인데, CA는 공개키/비공개 키의 비공개 키 부분에 대한 주체의 소유권을 바탕으로 주체에게 인증서를 발급한다. 인증서는 주체의 비공개 키로 생성된 디지털 서명을 포함하고 인증서는 공개키/비공개 키에서 주체의 공개키 부분도 포함하며, 주체와 상호작용하는 개체는 주체의 공개 키와 추가 인증서 확인 규칙을 사용하여 서명을 검증한다. 서명이 문제의 데이터에 상응하지 않거나 인증서에 규정된 확인 규칙을 위반하는 경우에는 서명이 유효하지 않은 것으로 판명된다.[1]
- 소프트웨어(SW) 프로그램 신뢰성 판단 기준이 되는 디지털 서명 보안이 문제가 되었다. 현재까지 확인된 디지털 서명 유출 기업은 NHN, 넥슨, 이스트소프트 등으로 해당 기업들은 이미 문제가 됐던 디지털 서명을 모두 폐쇄 조치하였다. 디지털 서명 유출은 해당 기업의 SW를 사용하는 많은 이용자에게 피해를 줄 수 있으나 디지털 서명 관리가 허술하다 보니 해커들이 악의적인 공격행위를 시도하기 시작했고 피해가 발생했다. 해커들이 악용한 디지털인증서는 인터넷상에서 신뢰성을 나타내주는 일종의 전자 보증서라고 생각하면 된다(인증서 내에 서명이 포함돼 있다). 이는 특정 인증기관을 통해 발급되며 해당 인증서의 소유자 이름, 유효기간, 소유자 전자서명을 확인할 수 있는 공개키는 물론, 사실 여부를 확인해주는 인증기관의 전자서명 값까지 포함하고 있다.[7]
각주[편집]
- ↑ 1.0 1.1 구글클라우드 공식 홈페이지 -〈http://a.to/19oLuJq〉
- ↑ 2.0 2.1 2.2 유서트, 〈전자 서명(Electronic Signatures)과 디지털 서명(Digital Signatures)〉,《네이버》, 2018-01-25
- ↑ 코드로그 공식사이트 -〈https://codeday.me/ko/qa/20190320/105128.html〉
- ↑ 4.0 4.1 백인감자, 〈Digital Signature(디지털서명)〉,《티스토리》, 2017-06-10
- ↑ 5.0 5.1 5.2 5.3 팀 브루,〈직접 및 중재 된 디지털 서명의 차이점〉,《techwalla》
- ↑ Algorand KR, 〈지분 증명 블록체인을 위한 효율적이고 안전한 디지털 서명〉,《미디움》
- ↑ 김희연 기자, 〈디지털서명 보안 ..."이러니 뚫리지"〉,《ZD넷코리아》, 2011-11-06
참고자료[편집]
- 유서트, 〈전자 서명(Electronic Signatures)과 디지털 서명(Digital Signatures)〉, 《네이버 블로그》, 2018-01-25
- 〈전자 서명과 디지털 서명의 차이〉, 《개인 블로그》
- Algorand KR, 〈지분 증명 블록체인을 위한 효율적이고 안전한 디지털 서명〉,《미디움》
- 백인감자, 〈Digital Signature(디지털서명)〉,《티스토리》, 2017-06-10
- 구글클라우드 공식 홈페이지 -〈http://a.to/19oLuJq〉
- Gaaiho PDF파일, 〈디지털 서명 지우기 및 삭제〉《Gaaiho Doc》
- 차재복, 〈전자 서명, 디지털 서명, 시그니처〉, 《정보통신기술》
- 〈http://a.to/19FmCyX〉, 《위키백과》
- 박종혁, 〈제 9장 디지털 서명〉, 《PDF파일》
같이 보기[편집]