이전 글 "블록체인 개인키 관리 문제 해결, 분산 인증" 에 이여서,
이번 글은 개인키 분산인증(셀프인증)의 기술적 측면에서 안전성을 설명하고자 한다.
비트코인에 데이터 안전성을 확보하는 방식을 먼저 소개하고 셀프인증과 대비하고자 한다.
암호학적으로 데이터의 안정성이란 그림 1 과 같이3가지로 나눠진다. 이것을 보안의 3요소라고 한다.[1]
기밀성 - 소유자가 비밀을 유지하고 명백히 허가된 사용자만 볼 수 있다.
무결성 - 비인가자의 수정, 삭제, 생성을 막는다.
가용성 - 필요한 시점에 권한이 있는 사용자가 사용할 수 있다.
퍼블릭 블록체인은 보안의 3요소를 한꺼번에 제공한다. 비공개(PKI) 키를 통해서 기밀성을 유지하고, 데이터를 서로 묶는 체인을 통해서 무결성을 확보한다. 마지막으로 가용성은 국경없이 24시간 작동되는 노드들을 통해서 완성한다. 이해를 쉽게 전달하기 위해서 설명을 극단적으로 단순화했지만, 전체 암호화로 보호된 시스템을 이해하는데 어려움이 없을 것이다.
비트코인 작동방식>
현재 24시간 비트코인에 돈의 정보를 담아서 전세계적으로 거래되고 있으므로 비트코인 시스템의 안정성에는 의문이 없을 것이다. 그럼, 비트코인 시스템의 안전성은 어떻게 유지되고 있는지 최대한 단순화하여 설명하겠다. 비트코인 시스템은 데이터의 생성과 저장으로 단순화할 수 있다. 여기서 데이터는 블록의 생성과 저장으로 치환할 수 있다.
비트코인에서 블록 생성은 아무나 하지 못하고 작업증명(PoW), 즉 어려운 문제를 가장 빨리 푼 노드(서버)만 생성할 수 있다. 이 과정을 암호학에서는 인증된 사용자만 데이터를 생성한 것이라고 한다. 인증조건은 PoW를 한 노드이다. 이것은 보안의 3요소에서 무결성을 지킨 것이다.
다음으로 데이터(블록)의 저장 측면을 보자. 그림 3 에서처럼 블록이 만들어(생성) 지고, 만들어진 블록을 서로 연결하여 저장한다. 연결할 때 바로 앞 블록의 해시 값을 같이 저장하므로 블록 위변조을 막을 수 있다. 저장된 데이터의 무결성을 확보할 수 있다.
이후 비트코인의 보안 3요소인 기밀성과 가용성은 위에서 언급했다. 기밀성은 선택적으로 필요한 부분에 적용할 수 있고, 가용성은 노드 간에 24시간 안정적으로 교신할 수 있게 설계되어 있다.
셀프인증의 작동방식>
셀프인증과 개인키 분산인증은 저자가 만들어 낸 용어로 여기에서는 같은 개념으로 쓰인다. 그럼 셀프인증의 작동방식을 비트코인 시스템 대비해서 설명하겠다.
그림 4 : PoW 와 셀프인증의 작동방식 설명
셀프인증(개인키 분산 인증) 작동방식을 그림 4 와 같이 PoW 와 블록 연결에 대입해서 설명하겠다.
셀프인증도 추상화하면 인증 정보의 생성과 저장으로 단순화할 수 있다. 퍼블릭 블록체인에 개인키를 언제 사용할 지 예약정보를 입력한다. 비트코인의 경우에는 OP_CODE 라는 저장 공간에 해시화된 평문으로 저장할 수 있다. 인증 요청 정보인 예약정보가 블록체인에 저장되므로 위변조될 여지가 없다. 그러므로 인증 요청 정보의 무결성을 확보할 있다. 마지막으로 개인키를 실질적으로 사용할 때 개인키 사용 예약정보가 있는지 블록체인에 먼저 접근하여서 확인한다. 개인키 지갑이 해킹 공격 당했어도 공격자도 블록체인에 예약 이력을 남겨야하므로 사용자를 속이기 어렵다. 여기서 사용자가 확인할 시간이 필요하므로 디폴트 기본지연시간을 둔다. 최소한 얼마 전에 예약해야하는지를 설정한 시간이다. 사람이 반응할 수 있는 시간이 필요하므로 최소 60분으로 정했다. 자신이 예약하지 않은 내역이 블록체인에 있으면 정지 시켜서 해킹에 대응할 수 있다. 쉽게 말해서 사용자가 불편하면 해커도 불편하다. 디지털 세계에서 가장 안전한 본인 확인 절차는 실제 본인이 참여하게 하는 것이다. 그래서 셀프인증에서는 디폴트 기본지연시간에 자신의 이력(log)을 감시(audit)할 수 있게 보장해준다. 향후 인공지능 비서가 도입된다면 디폴트 기본지연시간을 1분내로 줄여서 감사(audit)을 대리 시킨다면 편의성이 대폭 증가할 것이다.
개선사항>
크게 2가지 방식이 있다.
하나, 개인키를 주소와 연동한다. 현재는 개인키를 전용 보관 장소인 지갑에 보관하게 되어 있으나, 지갑도 필요없도록 개인키의 속성을 블록체인에서 생성시 예약해서만 사용할 수 있도록 프로토콜을 업그레이드할 수 있다. 비트코인의 멀티시그 주소처럼 프로토콜단에서 반영해주어야 한다.
둘째, 특정 주소는 블록체인에 예약을 통해서만 코인 전송하게 한다. 셀프인증 과정과 같은데 셀프인증 방식을 주소 속성에 부여해서 개인키와는 상관없이 주소 간에 코인 전송시에 예약을 통해서만 송금될 수 있게 한다. 위 두 방식은 현재 블록체인 인프라에서는 구현할 수 없지만, 도입 시 개인에게 부여된 안전한 개인키 보관의 책임에서 벗어날 수 있다.
통지시스템의 문제점>
통지시스템이란 사용자에게 정보를 실시간 전달하는 시스템을 말한다. 문자메시지, 메일, 전화 등을 말한다. 전산시스템에 통지 기능을 아무리 강화하더라도 최고 권한이 탈취되었거나 관리자의 공모가 발생할 시엔 기능이 무력화 된다. 또한, 해당 시스템은 안전할 지라도 통지메시지를 중간에 전달하는 매체가 악성프로그램으로 오염되어도 사용자는 속을 수 밖에 없다. 그러므로, 통지 방식은 한계가 있다.
미국의 집중화되고 무절제한 달러 패권은 세계 시민들에게 고통을 주고있다. 트럼프 이런
부당한 행위는 달러 붕괴를 가속화 시킬 것이다. 한 실험에서 원숭이가 공평하지 못한 대우에 항의하듯 호모 사피엔스의 뇌도 같은 방식으로 반응한다. 인류사에서 집중된 힘과 권력은 언제나 도전을 받고 분권화되어 왔다. 그러므로 환경보호 같은 지구애가 없는 무분별한 달러 패권은 무너질수 밖에 없다.
참고문서
[1] http://arang99.tistory.com/1
[2] http://coinnews.tistory.com/144
[3] https://mastanbtc.github.io/blockchainnotes/consensustypes/
@kcod, I gave you a vote!
If you follow me, I will also follow you in return!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I did. ^^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @kcod! You received a personal award!
Click here to view your Board
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @kcod! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit