[블록체인 기반 기술] 부인방지 (non-repudiation)

in #kr-dev5 years ago (edited)

부인방지는 메시지를 보낸사람이 보낸 사실을 부인하거나, 받은 사람이 받지 않았다고 부인할 때 증명하는 기술이다. 예를 들자면, "나 너한테 메시지 보낸적 없는데?" "나 너한테 메시지 못받았는데?" 이런 식의 거짓말을 할 때 반박할 수 있게 된다. 특히 자산의 이동과 같이 무결성을 보장해야 할 때 꼭 필요하며, 그렇기 때문에 블록체인의 핵심 기능 중 하나이다.

핵심은 디지털 서명

디지털 서명은 비대칭 암호화를 이용해 메시지를 서명하여 메시지의 생성자를 특정하는 기술이다. 사실 우리에게 친숙한 개념이다. 메시지를 서명하기 위해서 공개키와 개인키 쌍이 필요하다. 그렇다면 키 쌍을 어떻게 생성하고 관리해야 할까? 키 쌍을 관리하는 업체들이 있는데 이들을 CA, 공인인증업체라고 하고, 이들이 발행한 키 쌍을 공인인증서라 부른다. 즉, 우리는 공인인증서를 이용해 메시지를 디지털 서명하고 있다.

디지털 서명의 원리를 살펴보자. 먼저 비대칭 암호화에 대한 개념이 필요하다. 평문(plain text)를 암호문(cipher text)로 바꿔주는 암호화 키 값과 암호문을 평문으로 바꿔주는 복호화 키 값, 이렇게 2개의 키값을 이용해서 암호화/복호화를 하는 알고리즘을 비대칭 암호화라고 한다. 암호화 키 값을 안다고 복호화 키 값을 아는 것은 매우 어렵다. 그러므로 암호화 키 값 혹은 복호화 키 값을 공개하더라도 보안성을 보장할 수 있다.

디지털 서명은 비대칭 암호화 키 쌍 중 암호화 키를 서명 키로, 복호화 키를 검증 키로 이용한다. 메시지 혹은 메시지의 해쉬 값을 암호화하고 이를 서명 데이터라 부른다. 그리고 만들어진 서명 데이터를 메시지와 함께 전달한다. 메시지를 받는측에서는 서명을 복호화 하여 메시지 혹은 메시지의 해쉬 값을 얻고 이를 전달받은 메시지와 비교한다. 같을 경우 해당 메시지는 보내는 사람이 특정된다.

만약에 메시지를 받는 사람이 거짓말을 하면 이를 어떻게 검증할 것인가? 이를 위해서는 ack 메시지를 보낼 때 디지털 서명하여 보내도록 하면 된다.

참고 자료

http://www.parkjonghyuk.net/lecture/2012-1st-lecture/modernCrypto/chap01.pdf
https://steemit.com/blockchain/@etainclub/blockchain-5
https://rsec.kr/?p=426
http://www.parkjonghyuk.net/lecture/modernCrypto/lecturenote/chap09.pdf
http://cris.joongbu.ac.kr/publication/%EB%B6%80%EC%9D%B8%EB%B0%A9%EC%A7%80%ED%91%9C%EC%A4%80-CISC99.pdf


Sponsored ( Powered by dclick )
웃으면 안되는데 웃음이 나와버렸네요(부제 : 일본의 어느 수족관 SNS를 보며..)

반복되는 일상속에서 웃을 일이 좀처럼 없어서 더 할나위 없이 웃음이 나왔네요 ㅋ

Sort:  

Congratulations @tmkor! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You made more than 1500 comments. Your next target is to reach 2000 comments.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.31
TRX 0.12
JST 0.033
BTC 64341.19
ETH 3145.13
USDT 1.00
SBD 4.00