이름이 멋있는 영지식 증명(zero-knowledge proof)이 최근 뜨고 있습니다. 개념 자체는 1985년때부터 내려오고 있는데 최근 이름이 언급되는건 zcash 가 사용하는 zk-Snarks 때문 일것입니다. 


http://설명이 잘 되어 있는 사이트


전 위키피디아 글 보다 위의 사이트가 더 설명이 잘 되어 있더군요. 


영지식 증명은 증명자(prover) 가 검증자(verifier) 에게 '무언가가 참'이라는 것을 증명하는 방법입니다. 단 '무언가'에 관한 어떤 정보도 노출 시키지 않습니다.



정의 보다는 예를 보면 확실하게 느껴질 수가 있습니다. 


색이 다른 두 공이 있습니다. 

내가 (prover) 맹인에게(verifier) 두 공을 주고, '두 공이 색이 다르다는 사실'을 증명 시키되 맹인에게 색을 직접적으로 언급하지 않습니다. 


맹인은 한손에 공을 한개씩 쥐고 테이블 밑으로 손을 내린 다음에 공을 위로 올려서 나에게 보이면 내가 그 공의 색을 말하지는 않지만 전꺼와 색이 같네 전꺼와 색이 다르네 라는 검증을 반복하면 할 수록 맹인은 두개의 공의 색이 정말 다르다는 것을 인식할 수가 있습니다. 


이게 블록체인에 적용이 되면 더 실용적으로 이해할 수가 있습니다. 기존 블록체인에서는 보내는 사람(sender), 받는 사람(receiver), 수량 등이 노출되어 있었습니다. 따라서 거래를 주고 받는 당사자 뿐만 아니라 그 트랜잭션을 지켜볼 수 있는 사람들도 전부 민감한 정보를 볼 수 있었죠.






위 그림에서 보듯이 트랜잭션의 센더(sender) 와 리시버(receiver) 끼리 센더가 리시버의 공개키로 내용을 암호화 해서 보내면 세상에서 리시버만 내용을 풀어볼 수가 있습니다. 그리고 이 트랜잭션을 밖에서 바라보는 사람들은 둘이 주고 받는 내용이 어떤 내용인지 알 수는 없지만 (PKI 란?   참조) 내용이 제대로 전달 되었다는 사실 여부는 알 수가 있습니다. 



요즘 바빠서 글을 잘 못 남기지만 정말 추천할 만한 포스트가 있어서 추천합니다. 간단한 파이썬 코드만 알면 요즘 유행하는 블록체인의 기본 원리를 알고 응용이 가능합니다. 쭈욱 따라하시면 됩니다. 


http://ecomunsing.com/build-your-own-blockchain



끝으로 요즘 여러 이야기가 있지만, 저는 블록체인을 흠잡을 이유가 없습니다. 분산 저장은 시대에 맞는 트렌드라고 봅니다. 다만 거래소가 안전하냐는 이야기는 절대 반대입니다. 돈이 오고 가는 서비스를 그리 허술하게 만들면 안된다고 봅니다. 



+ Recent posts