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

링서명

위키원
minee96 (토론 | 기여)님의 2019년 8월 5일 (월) 11:10 판
이동: 둘러보기, 검색

링서명(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 CT)란 링서명에서 한 단계 발전된 기술이다. 거래 금액이 표시되던 기존의 링서명과는 달리, 금액까지 숨길 수 있는 특징을 가지고 있다. 현재 일회성 주소(스텔스 주소), 링서명, 링CT를 모두 사용하는 코인으로 모네로가 있다. 이를 통해 모네로는 다른 선택적 다크코인과는 달리 완벽한 익명성을 추구하는 전략을 취하고 있다.

활용

링서명과 암호화폐

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

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

링서명과 모네로

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

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

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

일회성 주소

스텔스 주소(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)를 블록체인에서 찾아보더라도 그 안에 얼마가 들어왔는지는 알 수 없다.

각주

  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. 트레이더 김씨, 〈블록체인 입문을 위한, 엄선된 필수 용어사전(익명/암시장, 해킹/범죄)〉, 《네이버 블로그》, 2018-02-19
  9. 9.0 9.1 keepit, 〈Keepit History: 익명화폐의 역사 2편〉, 《스팀잇》
  10. hcashofficial, 〈링 서명, 블록체인 보안과 프라이버시 보호 기술〉, 《네이버 블로그》, 2019-03-09

참고자료

같이 보기


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