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

"링서명"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글
잔글
1번째 줄: 1번째 줄:
'''링서명'''<!--링 서명-->(ring signature)은 사용자의 [[공개키]]를 섞어 특정 사용자를 식별하지 못하게 해 사용자를 추적 불가능하게 만드는 서명 기술이다.
+
'''링서명'''<!--링 서명, ring 서명-->(ring signature)은 사용자의 [[공개키]]를 섞어 특정 사용자를 식별하지 못하게 해 사용자를 추적 불가능하게 만드는 서명 기술이다.
  
 
==개요==
 
==개요==

2019년 8월 5일 (월) 16:54 판

링서명(ring signature)은 사용자의 공개키를 섞어 특정 사용자를 식별하지 못하게 해 사용자를 추적 불가능하게 만드는 서명 기술이다.

개요

블록체인 기술을 활용할 때, 두 가지의 큰 장애물이 있다. 하나는 확장성, 또 다른 하나는 개인정보보호이다. 확장성의 경우는 많은 블록체인 플랫폼들이 고민하고 있는 중대한 문제로, POS, DPOS, POA 등의 많은 방식으로 해결책을 고민하고 있다. 또 다른 하나인 개인정보보호는 확장성에 비해 비교적 해결 가능성이 있는 문제지만, 모든 케이스에 적용할 수 있는 방법은 없기 때문에 각 케이스에 맞춘 부분적인 해결법을 적용해야 한다.[1]

고리서명이라고 불리우기도 하는 링서명은 거래자 결제키를 블록체인에서 접근 가능한 공개키들과 섞어 잠재적 사용자들의 키를 링으로 만들어 보여주는 방법이다.[2] 이를 통해 외부자가 거래의 대상자를 특정할 수 없도록 만들어준다. 링을 통해서 보이는 사용자들은 모두 거래에 적용 가능한 사람들이기 때문에 외부자는 거래 대상자를 골라낼 수가 없다.[3] 또한 거래할 때 송금자만 이용 가능한 일회성 주소가 발급된다. 이에, 코인을 받는 사람도 누가 보낸 건지 추적을 할 수 없다.[4] 이렇게 거래자의 신원을 보호하는 한편 링 기밀거래 기술로 거래액 보안이 될 수 있는 서비스를 제공한다.

등장 배경

링서명(Ring Signature)은 2001년 로널드 라이베스트(Ron Rivest), 아디 샤미르(Adi Shamir), 야엘 토먼(Yael Tauman)에 의해 처음 소개되었다.[5] 링서명이라는 용어는 서명 알고리즘의 구조가 링의 구조와 유사하다는 점에서 파생되었다. 즉, 모든 그룹 멤버들이 동일한 위치에 있으며 중심이 되는 멤버가 따로 존재하지 않는다.[6]

특징

링서명 과정
링서명 방식 동작

링서명 방식에서는 키를 가진 그룹 멤버들 중 어떤 사람에 의해서도 서명할 수 있다.[7] 따라서 링서명을 이용하여 서명된 메시지는 특정 그룹 멤버들 중 누군가에 의해서 보증된다. 링서명의 특징은 그룹 내의 어떤 멤버의 키를 이용하여 서명되었는지를 알 수 없다는 것이다. 링서명은 특히 그룹 서명과 많이 비교되는데, 둘은 매우 비슷하지만 다음 특성들에서 차이가 있다.[6]

  • 익명성을 폐기할 수 없다.
  • 그룹 매니저가 없다.
  • 어떤 그룹의 사용자든 추가적인 셋업 과정 없이 다른 그룹의 멤버가 될 수 있다.

그룹 구성원 각각이 공개키/비밀키 쌍(PK1, SK1), (PK2, SK2), …, (PKn, SKn)을 가지고 있다고 가정하자. 링서명 σ는 그룹 구성원 모두의 공개키와 서명자의 비밀키, 그리고 서명할 메시지를 이용하여 계산될 수 있다. 그리고 그룹의 모든 멤버들은 서명값, 메시지, 그리고 포함된 공개키 쌍 PK1, …, PK이 주어졌을 때 서명의 유효성을 확인할 수 있다. 링서명이 적절히 계산되었다면 서명값이 제대로 확인되어야 한다. 반면에 그 그룹 멤버들의 비밀키들을 알지 못한다면 누가 서명을 생성하였는지를 알 수 없다. 링서명 구조는 Ring-sign과 Ring-verify의 두 가지 과정으로 구성되어 있다.[6]

  • Ring-sign(m, PK1, PK2, …, PKn, i, SKi) : n명의 그룹 멤버들의 공개키와 i번째 그룹 멤버의 비밀키 SK₁를 가지고 메시지 m에 대한 서명 값 σ를 생성하는 과정
  • Ring-verify(m, σ) : 메시지 m과 모든 그룹 멤버들의 공개키가 담긴 서명 σ를 이용하여 서명을 검증하는 과정

링서명은 서명자가 그룹에 속한 사람들의 공개키만 알면 서명할 수 있으므로 그룹 멤버를 추가하거나 삭제하는 과정이 필요 없다. 하지만 서명 값에 그룹에 속한 멤버들의 공개키가 포함되어야 하므로 멤버의 수가 많아지면 서명 값도 이에 비례하여 길어진다는 것이 단점으로 지적되고 있다.[6] 링서명의 응용으로, 백악관 직원들 중 어느 누구로부터 메시지에 서명한 직원이 누구인지는 드러내지 않은 채, 익명 서명을 제공받기 위해서 사용될 수 있다. 링서명의 익명성은 폐기될 수 없고, 링서명을 위한 그룹은 급조될 수 없기 때문에 이러한 응용이 가능한 것이다.[6]

링 CT

링CT(Ring Confidential Transaction)란 링서명에서 한 단계 발전된 기술이다. 거래 금액이 표시되던 기존의 링서명과는 달리 트랜잭션의 출처나 주소를 식별할 수 없게 만드는 데 더해, 금액까지 숨길 수 있는 특징을 가지고 있다. 현재 일회성 주소(스텔스 주소), 링서명, 링CT를 모두 사용하는 코인으로 모네로가 있다. 이를 통해 모네로는 다른 선택적 다크코인과는 달리 완벽한 익명성을 추구하는 전략을 취하고 있다. 실제로 블록체인 익스플로러에서 모네로 주소 하나를 검색하면 다음과 같은 메시지가 뜬다.

모네로 주소에 접근하려고 하셨나요? 마치 우리 고객님의 잔고를 염탐하려는 것처럼 보였어요. 모네로가 대표해서 답변을 먼저 드리자면, '절대로 안 됩니다!'

링CT가 도입되면서 개인 프라이버시는 더욱 향상되었지만, 확장성은 후퇴했다. 도입 전 거래 사이즈는 약 3KB였으나 도입 후 13KB로 커졌다.[8]

활용

링서명과 암호화폐

송금자의 공개키만을 이용하는 일반적인 디지털 서명과 달리 링서명은 여러 사용자의 공개키를 사용한다.[9] A가 B에게 송금을 한다고 가정해보자. 이때 C와 D의 공개키와 자신의 공개키를 섞어 링서명을 했다. 링서명 방식에서는 A, C, D 세 명이 각각 1/3의 확률로 송금한 사람이라는 것은 알 수 있지만 송금인이 A라는 사실은 알 수 없다.[10]

스텔스주소가 수신인을 숨기는 역할을 수행했다면 링서명은 송신인을 감추는 역할을 함으로써 보안성을 높여준다. 하지만 링서명 방식만으로는 다른 사람들은 송금 사실을 알지 못하므로 이중 지불의 위험이 있다. 크립토노트(CryptoNote)는 키 이미지를 이용하여 이중 지불의 가능성을 차단시킨다. 서명 및 검증 공식에 일회용 비밀키에 일대일로 대응하는 숫자인 키 이미지를 대입하는 것이다. 키 이미지로 개인키와 공개키를 알아낼 수는 없지만 사용된 모든 키 이미지가 블록체인에 저장되어 네트워크에서 중복되지 않도록 한다.[10]

링서명과 모네로

모네로 로고

링서명은 암호화 기법들 중에서도 암호화 키가 있는 사용자 그룹의 구성원이 할 수 있는 디지털 서명의 한 종류이다. 링서명으로 서명된 트랜잭션 메시지는 발신자, 수신자, 서명자의 공개키 또는 신원이나 트랜잭션의 양의 노출 없이도 다른 구성원들로부터 트랜잭션 검증을 가능하게 한다. 링서명을 사용한 알고리즘을 성공적으로 구현한 최초의 암호화폐가 바로 모네로이다. 2015년 셴 노터(San Noether) 박사는 모네로에 구현된 링서명 알고리즘의 토대가 된 'Ring Confidential Transactions'라는 글을 발표했다.

모네로는 링서명과 일회성 주소(one-time keys, stealth address), 그리고 링CT(ringCT)의 세 가지 방법을 사용해 익명성을 구현한다. 모네로의 서명 알고리즘은 비트코인과 마찬가지로 '해시 기반의 공개키+개인키' 접근 방식을 사용하여 구현되었다. 비트코인과 모네로 서명 알고리즘의 차이점은, 모네로의 경우 링서명 기술을 사용하여 트랜잭션을 보낸 사람의 공개키가 다른 공개키와 혼합되어 정보에 서명한다는 것이다. 수신자가 트랜잭션을 수신하면 자체 개인키를 통해 서명을 확인한다. 잠재적 사용자들의 키를 링으로 만들여 보여주는 방법으로, 외부자가 거래의 대상자를 특정할 수 없다. 따라서 다른 사람들, 예를 들어 잠재적으로 악의적인 의도를 가진 사람들은 공개키 중 어느 것이 송신자의 것인지 알 수 없다. 이렇게 하여 모네로가 발신자의 주소 정보를 숨겨 외부의 공격자가 발신자를 상대로 공격을 할 수 없게 된다. 또한 거래할 때 송금자만 이용 가능한 일회성 주소가 발급되기 때문에, 코인을 받는 사람도 누가 보낸건지 추적할 수 없다.

2017년 09월 모네로는 하드포크를 하고 거래할 대 트랜잭션 되는 코인의 양을 암호화 하기 위해 RCT(Ring Signature Technology) 기술을 추가했다. 즉, 발신자와 수신자를 제외한 누구도 거래 세부 정보(보낸 사람의 주소와 보내진 가치의 총량)을 확인할 수 없으며, 이러한 조치 이후 새로운 RCT 주소가 모네로의 유일한 주소 포맷이 되었다.[11] 현재 모네로는 익명성과 편리성을 핵심가치로 두고 있다. 링서명과 일회성 주소를 통해 기본적으로 거래내용을 비공개로 설정했고, 공개 혹은 검사를 받아야 하는 거래 기록에 대해서는 뷰키(view key) 기능을 사용해 선택적으로 거래정보를 제공한다. 또한 마이 모네로(MY Monero)를 이용하여 별도의 설치 없이 웹에서 바로 모네로를 실행 가능하고, 모네로를 직접 설치해서 더 많은 서비스를 받을 수 있다. 가기.png 모네로에 대해 자세히 보기

방탄 기능(Bulletproof) 구현

이러한 확장성 문제 개선을 위해 모네로는 '방탄 기능'을 구현했다. 방탄 기능을 통해 거래 사이즈와 검증 시간이 80%가량 줄었다. 2017년 발표된 이 기술은 런던 대학교의 조나단 부틀 교수와 스탠포드 대학교의 베네딕트 번즈 교수가 비트코인용으로 개발한 것으로, 획기적인 프라이버시 보호책으로 주목받았다. 그러나 결국 이 기술을 암호화폐에 적용한 것은 2018년 10월 18일 모네로가 최초였다. 이러한 개선에도 불구하고 에런호퍼는 모네로 네트워크의 가장 큰 한계는 너무 긴 검증 시간이라고 말한다. 에런호퍼는 향후 어느 시점이 되면 모네로의 링 서명이 약 1천 개의 익명 서명을 포함할 정도로 확장될 것으로 기대하고 있다. 또한 살라자르는 앞으로 수개월 내에 모네로의 사용자 인터페이스(UI)와 사용자 경험(UX)이 개선될 것으로 내다보고 있다.[8]

링 크기 제한

처음부터 모네로는 '링 서명'을 사용해서 자금의 익명성을 보장해 왔다. 링 서명은 어느 그룹 구성원이 개인 키를 사용해서 특정 거래에 서명하더라도, 해당 그룹의 누가 실제 서명자인지 식별할 수 없는 기술이다. 모네로에서는 사용자가 인풋을 발생시키면 블록체인에서 다른 인풋, 제3자의 인풋을 무작위로 불러오며 이 모든 인풋이 실제로 발생한 것처럼 보이게 한다. 이 인풋들 가운데 어느 것이 진짜 트랜잭션에 쓰인 서명인지 식별하기란 수학적으로 불가능하다. 모네로 출시 초기에는 링 서명 사용이 의무 사항이 아니었다. 거래 프라이버시 보호에 관심이 없는 암호화폐 거래소나 퍼블릭 채굴 연합, 그 밖의 개인 사용자들은 '링 크기'를 0으로 설정할 수 있었다. 그러나 모네로 연구진들은 다수의 사용자가 거래 명세를 공개할 경우, 모든 사용자의 프라이버시가 위협을 받게 된다는 사실을 알게 되었다. 예를 들어 특정 사용자가 트랜잭션을 실행하면서 자신이 발생시킨 아웃풋을 분명하게 드러낸다면 모두가 해당 트랜잭션이 진실인지 검증할 수 있게 되고, 그 사용자 외의 아웃풋은 가짜로 밝혀지게 된다. 이런 이유로 2016년 3월 22일 시행한 하드포크에서 모네로는 링 크기를 최소 3 이상으로 설정하도록 제한했다. 즉, 모네로 사용자들은 트랜잭션을 실행할 때 네트워크에서 적어도 세 개의 다른 트랜잭션 인풋을 무작위로 불러와야 하며, 이는 전체 블록체인의 프라이버시 보호 수준을 강화하는 결과로 이어졌다.[12]

일회성 주소

스텔스 주소(Stealth Address)라고도 불리는 일회성 주소는 링서명을 사용하는 모네로에서 같이 사용된다. 모네로는 거래마다 자동으로 일회성 주소를 생성시켜 거래한다. 매 거래시 해당 거래에서만 이용되는 일회성 주소를 사용하기 때문에 본래 주소를 통해 거래내역을 찾을 수 없다.

비트코인의 경우는 이용자가 지갑마다 26 ~ 35자리의 다음과 같이 생긴 주소를 가진다.

1FetSviaqRATXbwEAMs33HjMyw6JmeBup

지갑의 주인은 이 주소로 비트코인을 입금받고, 누구나 이 주소에 얼마가 들어갔는지 알 수 있다. 만약 이 지갑에서 다른 지갑으로 비트코인을 송금한다면 얼마를 송금했는지까지도 누구나 볼 수 있다.

반면 모네로의 경우는 지갑의 주소(Public Address)는 다음과 같이 공개 읽기 키(Public view key)와 공개 쓰기 키(Public spend key)를 포함한 95개의 문자로 구성되어 있다. 공개 읽기 키와 공개 쓰기 키는 각각 비밀 읽기 키 및 비밀 쓰기 키와 쌍을 이룬다.

463tWEBn5XZJSxLU6uLQnQ2iY9xuNcDbjLSjkn3XAXHCbLrTTErJrBWYgHJQyrCwkNgYvyV3z8zctJLPCZy24jvb3NiTcTJ

A가 B에게 모네로를 보낼 때 A의 지갑은 B의 공개 읽기 키와 공개 쓰기 키 그리고 랜덤 데이터를 이용해 일회성 공개키를 만든다. 거래가 이루어 진 후에는 일회용 공개키를 블록체인 상에서 누구나 볼 수 있다. 하지만 단 한번만 이용되는 주소이기 때문에 A가 B에게 보냈다는 사실은 오직 두 사람만이 알 수 있다. 오직 B만이 자신의 비밀 읽기 키(Private view key)를 이용하여 계좌에 있는 금액을 확인 가능하고, 자신만이 비밀 쓰기 키(Private spend key)로 이 금액을 사용할 수 있다. 거래 내역은 블록체인 상에 일회성 공개키로 나타나기 때문에 다르 사람은 B의 공개주소(Public Address)를 블록체인에서 찾아보더라도 그 안에 얼마가 들어왔는지는 알 수 없다.

전망

하이퍼캐시(HyperCash) 또는 에이치캐시(Hcash)라고 불리는 암호화폐의 경우도 현재 링CT 기술을 채택했고, 이를 개선하기 위해 연구중에 있다. Hcash 팀은 '멀티 인풋-멀티 아웃풋' 트랜잭션을 지원하는 래티스 기반의 포스트 양자 보안 링CT 프로토콜을 제시했다. 이는 종합적인 링CT 프로토콜로서 링크 가능한 링 서명(사용자의 익명성 보장), 약정 스키마(거래 금액 숨김) 및 범위 증명(숨겨진 거래금액이 양수임을 보장)을 포함하여 보안에 필요한 모든 부분을 포괄하고 있다. 이 모든 구성은 격자 기반으로 설계되어 전체 프로토콜이 포스트 양자 저항이라고 받아들일 수 있다.

이러한 코드 출시를 통해, 다른 프로젝트와 유저들이 에이치캐시의 포스트 양자 서명 애플리케이션 및 개인 정보 보호 기능을 활용할 수 있다. 앞으로도 에이치캐시 개발팀은 양자 서명 및 링 서명의 방향에 대한 심층적인 연구를 지속할 것이다. 에이치캐시의 수석 과학자인 Joseph Liu 박사의 다음 논문은 현재 버전의 모네로보다 3 ~ 4배 많은 수의 서명을 가능하게 할 것임을 담고 있다.

각주

  1. 김병하, 〈블록체인과 개인정보보호〉, 《미디엄》, 2018-08-14
  2. 관쨩, 〈비트코인 종류, 비트코인 모네로 정보/요약〉, 《네이버 블로그》, 2017-12-18
  3. 수석 매니저, 〈모네로코인 호재, 전망, 일정(리치코인)〉, 《네이버 블로그》, 2018-12-28
  4. crzymon, 〈Monero(XMR) 모네로 코인 정리 및 요약〉, 《스팀잇》
  5. Signiture Move〉, 《블로그스팟》, 2016-02-01
  6. 6.0 6.1 6.2 6.3 6.4 이윤경, 한승완, 이석준, 정병호, 양대헌, 권태경, 〈익명 인증 기술과 동향 The Technology and Trend of Anonymous Authentication〉, 《전자통신동향분석 제23권》, 2008-08
  7. 민소연, 장승재, 〈익명 게시판 환경에서 가상 아이디를 이용한 개인정보보호에 관한 연구〉, 《네이버 학술정보》, 2012
  8. 8.0 8.1 * Christine Kim, 〈'프라이버시 제일'모네로 5주년〉, 《코인데스크코리아》, 2019-04-24
  9. 트레이더 김씨, 〈블록체인 입문을 위한, 엄선된 필수 용어사전(익명/암시장, 해킹/범죄)〉, 《네이버 블로그》, 2018-02-19
  10. 10.0 10.1 keepit, 〈Keepit History: 익명화폐의 역사 2편〉, 《스팀잇》
  11. hcashofficial, 〈링 서명, 블록체인 보안과 프라이버시 보호 기술〉, 《네이버 블로그》, 2019-03-09
  12. 야옹메롱, 〈[모네로 개념 및 특징, 설계원칙, 익명성을 보장하는 안전한 암호화폐]〉, 《네이버 블로그》 , 2019-04-17

참고자료

같이 보기


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