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

스텔스 주소

해시넷
이동: 둘러보기, 검색
스텔스 주소 구조

스텔스 주소(Stealth Address)는 수신자를 대신하여 임의로 생성된 일회용 주소를 사용하는 것이다. 스텔스 주소를 통해 개인 정보를 강화할 수 있다. 또한 이것은 비트코인 송신자가 비트코인 수신자에게 새 주소를 생성해 제공하도록 하는 비트코인의 최신 기능이다. 그리고 특정 비트코인 거래가 어떤 특정 사용자에게 속하는지 블록체인 모니터링을 통해 정확히 식별하는 것을 방지한다.

개요

스텔스 주소는 익명성을 보장하는 다크코인의 기술로 일회용 수신주소를 통해 송신하는 방법을 말한다. 송신자가 수신자를 대신하여 임의의 일회용 수신주소를 만들어 보내면, 이 일회용 주소(스텔스 주소)는 다른 거래와 연결할 수 없는 블록체인의 고유주소가 된다. 따라서 송신자와 수신자 주소를 연결하지 못해 추적이 어려워지게 된다. 즉, 보내는 자가 무작위로 일회용 주소를 사용해 수신자의 주소로 보내게 되고, 거래가 완료되면 일회용 주소는 삭제되는 것이다. 따라서 스텔스 주소는 일종의 안심번호와 비슷하다고 볼 수 있다.[1]

등장배경

가장 기본적인 스텔스 주소 체계는 2011년 바이트 코인 이라는 비트코인 포럼 멤버가 처음 개발했다. 타원곡선 디피-헬만(ECDH) 프로토콜을 사용한다. 기본 스텔스 주소 프로토콜(BSAP)의 디자인 결함이 있어 그를 해결하기 위해, 2013년 크립토 노트(Crypto Note) 백서의 니콜라스 반 세이버 하겐(Nicolas van Saberhagen)이 향상된 스텔스 주소 프로토콜(ISAP)을 만들었다. 이후 2014년에 비트코인 프로토콜에서 피터 토드(Peter Todd)가 그 프로토콜을 수정하였다. 향상된 스텔스 주소 프로토콜은 기본 스텔스 주소 프로토콜의 확장 버전이다. 같은 2014년에 리놈스터 / 에스디코인 으로 알려진 개발자가 향상된 스텔스 주소 프로토콜의 개인 지출 키 초과 사용 제한을 없애고자 하였다. 그래서 그는 효율적이면서 분산된 익명 지갑 솔루션인 쉐도우센드(ShadowSend)를 만들기 위해 이중 키 향상 스텔스 주소 프로토콜(DKSAP)를 개발했다. 그 이후 이 프로토콜은 모네로, 사무라이 월렛(Samourai Wallet) 및 토큰페이 를 포함하여 여러 암호화폐 시스템에서 구현되었다. 이 프로토콜은 두 가지 암호화 키, 즉 스캔 키 쌍과 지출 키 쌍을 활용한다. 그리고 트랜잭션 당 일회성 지불 주소를 계산한다.

특징

스텔스 주소는 모네로의 고유한 개인정보 보호의 중요한 기능이다. 이 기능은 보낸 사람이 받는 사람을 대신하여 모든 트랜잭션에 대해 임의의 일회용 주소를 만들도록 한다. 그를 통해 수신자는 하나의 주소만 게시할 수 있다. 그러나 수신 받는 모든 지급액은 수신자가 게시한 주소 또는 다른 거래 주소로 다시 연결할 수 없는 블록체인의 고유 주소로 이동한다. 그렇게 하여 스텔스 주소를 사용하면 보낸 사람과 받는 사람만 금액이 전송된 위치를 결정할 수 있다. 그래서 수신자가 단일 주소를 알려주면 거래된 금액은 별도의 고유 주소를 가지고 이동하게 된다. 그래서 스텔스 주소를 사용하면 송신자 간의 주소가 연결되지 못해서 추적이 어려워진다. 이렇게 거래 금액뿐만 아니라 주소의 송신 및 수신도 기본적으로 난독화되어 모네로 블록체인의 트랜잭션은 특정 사용자 또는 실제 아이디(ID)에 연결될 수 없다.[2]

스텔스 주소 장점
  1. 스텔스 주소는 모네로의 고유한 기능으로, 개인정보 보호에 특화되어 있다. 보낸 사람이 받는 사람을 대신하여 모든 트랜잭션에 대해 임의의 일회용 주소를 만들 수 있다.
  2. 익명성이 보장되는 일회용 수신주소를 통해 금액을 송신한다. 그를 통해 송신자와 수신자 주소를 연결하지 못해 거래 추적을 못 하게 만든다.
  3. 사용자들 간의 연결 가능성을 없앴다. 모네로를 송금할 때 수신자가 보유하고 있는 공개 주소와 키 정보는 무작위 데이터와 조합 된다. 그를 통해 스텔스 주소와 일회성 키가 자동 생성된다. 거래가 이뤄진 후에는 블록체인 상에 거래 사항이 공개되긴 하지만 구체적인 거래 내역은 오직 송수신자만이 알 수 있다.
스텔스 주소 단점
  1. 스텔스 주소의 악의적 사용 : 스텔스 주소는 양날의 칼과 같다. 범죄와 같은 악의적인 활동에 참여한 사용자의 공개 주소를 알고 있다면 블록체인에서 해당 거래를 추적하는 것은 간단한 작업이 된다. 그러나 이 사용자가 스텔스 주소를 대신 사용하면 추적하기가 추적은 훨씬 더 어려워진다. 스텔스 주소를 사용하면 범죄 활동을 벌이기가 더 쉬워진다.
  2. 균형 발견 : 이것은 스텔스 주소를 구현한 블록체인 기반 프로토콜이 거래가 이루어질 때 식별하는 방법과 해당 사용자를 식별할 때 생긴다. 예를 들어 동일한 웹 사이트에서 각각 무작위로 생성된 하나의 주소로 수천 건의 단일 기부를 받았다고 가정해 봐자. 이러한 트랜잭션을 발견하여 특정 사용자에게 기부 금액을 귀속시키는 것은 기술적으로 어려울 수 있다.
  3. 스텔스 주소 구현의 균형 발견 문제와 같은 기술적 과제가 남아 있다.[3]
스텔스 주소 키 관리 메커니즘
  1. 수신자가 단일 주소를 알려 준다.
  2. 수신한 거래는 별도의 고유 주소를 가지고 이동하게 된다.
  3. 수신자와 송신자 간의 주소가 연결되지 못해서 추적이 어려워진다.
스텔스다운 스텔스 주소(암호화)
블록체인의 표준 거래에는 수신자의 공개 주소가 필요하다. 예를 들어, 자선기금을 요청하려면 암호화폐 자금을 보낼 수 있는 공개 주소가 필요하다. 그러나 이렇게 하면 주소가 알려지고 추적될 수 있으며 수집된 자금을 어떻게, 어디서 소비했는지에 대한 내역을 충분히 알 수 있게 된다. 그렇기 때문에 암호화폐 결제를 받아들이는 판매자에게는 꽤나 까다로운 상황이다. 지갑 주소가 공개된 채 바꾸지 않은 상태인 게 알려진다면 많은 사람이 그의 고객 등의 통계 및 다양한 거래에 대해 알게 될 것이다.
수신자의 ID로 스텔스 주소
스텔스 주소 지원 블록체인에서 칸이라는 사용자가 5개의 암호화폐 토큰을 보유하고 있다고 가정해 보자. 이 때, 칸은 토큰을 갖고 있는 한 토큰을 자신의 뜻대로 다룰 수 있다. 그럼 이제 칸이 토큰을 폴에게 보낸다고 가정해 보자. 그럼 트랜잭션을 출력하며 칸이 폴에게 5개의 토큰을 보내고 있다는 사실을 네트워크에 알리게 된다. 이제 폴은 다섯 토큰의 정당한 소유자가 된다. 스텔스 주소의 메커니즘은 동적이고 일회용으로 쓰이는 다양한 공개 키와 개인 키의 조합으로 만들어진다. 칸의 지갑은 폴의 공개 키 및 개인 키를 사용한다. 그리고 폴의 출력을 위해 일회성 공개 키를 만드는 문자가 생성된다. 그렇게 되면 네트워크 상의 다른 사람들은 거래가 기록되는 것을 볼 수 있지만, 칸과 폴 외에는 5개의 토큰이 거래된다는 사실을 알 수 없다. 이 때, 폴은 자신의 지갑의 개인 키를 통해 블록체인에서 거래 내역을 찾아 토큰을 지갑에 넣을 수 있다. 폴은 일회성 개인 키를 사용하여 암호화폐를 쓸 권리를 얻게 된다. 이 과정 중 어디서도 발신자 또는 수신자의 지갑 주소가 공개되지 않는다. 이렇게 무작위로 생성된 일회용 지갑 주소가 수신자의 원래 주소를 대신해 생긴다. 그를 통해 스텔스 주소는 추가 개인 정보 보안 장치를 추가한다.[4]
직전 기반 스텔스 주소의 단계별 생성
  1. 길이가 32 바이트 인 2 개의 개인용 난수 생성(일명 보안 난수)
  2. 하나는 비밀 키로, 다른 하나는 스캔 번호가 된다.
  3. 각각의 스캔 및 비밀 전송은 SECP256k1을 사용하여 공개 키를 생성하는 데 사용되고(길이는 33 바이트) SECP256k1 알고리즘이 넘치지 않게 한다.
  4. 위에서 언급 한 순서대로 모든 것을 단일 버퍼에 넣는다.
  5. 이 버퍼를 SHA256으로 이중 해싱하여 현재 주소 버퍼의 해시 섬을 생성하고 체크 섬의 처음 4바이트를 주소 버퍼에 추가한다.
  6. 마지막으로 base58 주소를 인코딩한다. 빠짐 없이 제대로 진행되었다면, 주소는 smY로 시작한다.

종류

  • 기본 스텔스 주소 프로토콜(Basic Stealth Address Protocol, BSAP)
기본 스텔스 주소 프로토콜의 설계에는 두 가지 주요 문제가 있다. 첫 번째로 임시 주소는 두 통신 개체 사이에서 고정하게 된다. 따라서 이개체 간의 트랜잭션을 쉽게 연결할 수 있다. 두 번째 발신자와 수신자 모두 개인 키 c를 계산할 수 있다. 결과적으로, 수취인이 적시에 지불하지 않으면 발신자는 마음을 바꾸고 돈을 돌려받을 수 있다. 작동 방법은 다음과 같다.
  1. 발신자와 수신자는 각각 개인 / 공개키 쌍(a, A) 및 (b, B)을 갖는다. 여기서 A = a × G 및 B = b ×G 및 G는 타원 곡선 그룹의 기준점이다.
  2. 발신자와 수신자 모두 타원곡선 디피-헬만(ECDH) 을 사용하여 공유 비밀 c를 계산할 수 있다. c = H (a × b × G) = H (a × B) = H (b × A) , 여기서 H (×)는 암호화 해시 함수이다 .
  3. 발신자는 단순히 지불을 보내기 위해 임시 주소로 c × G 를 사용한다.
  4. 수신자는 블록체인을 적극적으로 모니터링하고 일부 트랜잭션이 목적 목적지 주소 c × G 로 전송되었는지 확인하고, 있는 경우 해당 개인 키 c를 사용하여 지불 할 수 있다.
  • 향상된 스텔스 주소 프로토콜(Improved Stealth Address Protocol, ISAP)
향상된 스텔스 주소 프로토콜은 앞서 언급한 기본 스텔스 주소 프로토콜의 설계 결함을 수정한 것이다. 그러나 블록체인 노드는 여전히 개인 키 c를 사용하여 의도된 주소 c × G + B에 대한 블록체인을 능동적으로 스캔해야 한다. 이는 개인 키를 안전하게 저장하는 일반적인 관행과 상반되며, 개인 지출 키를 지속적으로 사용하면 손상될 위험이 많이 증가한다. 추가 키 파생 기술은 다음과 같다.
  1. 수신기에는 개인 / 공개키 쌍 (b, B)가 있으며 여기서 B = b × G 및 G는 타원 곡선 그룹의 기준점이다.
  2. 발신자는 임시 키 페어 (r, R)를 생성하며, 여기서 R = r × G 는 트랜잭션과 함께 전송한다.
  3. 발신자와 수신자 모두 타원곡선 디피-헬만(ECDH)을 사용하여 공유 비밀 c를 계산할 수 있다. c = H (r × b × G) = H (r × B) = H (b × R) , 여기서 H (×)는 암호화 해시 함수이다.
  4. 발신자는 결제를 위해 임시 목적지 주소로 c × G + B를 사용한다.
  5. 수신자는 블록체인을 적극적으로 모니터링하고 일부 트랜잭션이 주소 c × G + B로 전송되었는지 확인한다. 그렇다면 해당 개인 키 c + b를 사용하여 지불을 할 수 있으며, 임시 개인 키 c + b는 수신자만 계산할 수 있다.
  • 이중 키 스텔스 주소 프로토콜(Dual-Key Stealth Address Protocol, DKSAP)
감사자 또는 프록시 서버가 시스템에 존재하는 경우 이중 키 스텔스 주소 프로토콜에서, 수신기는 개인 키 스캔 공유 할 수와 공개 키를 보내는 B 감사 / 프록시 서버와 그 실체에 블록체인 트랜잭션을 검색 할 수 있도록 한다. 수신자를 대신해 임시 개인 키 c + b를 계산하고 지불을 할 수 없다. 트랜잭션 당 일회성 지불 주소로는 다음과 같다.
  1. 수신자는 두 개의 개인 / 공개키 쌍 (s, S) 및 (b, B)을 가지며, 여기서 S = s × G 및 B = b × G 는 각각 스캔 공개 키 및 공개키 지출이다. 여기서 G는 타원 곡선 그룹의 기준점이다.
  2. 발신자는 임시 키 페어 ( r, R )를 생성하며, 여기서 R = r × G 는 트랜잭션과 함께 전송한다.
  3. 발신자와 수신자 모두 타원곡선 디피-헬만(ECDH)을 사용하여 공유 비밀 c를 계산할 수 있다. c = H (r × s × G) = H (r × S) = H (s × R) , 여기서 H (×)는 암호화 해시 함수이다.
  4. 발신자는 결제를 위해 임시 목적지 주소로 c × G + B를 사용
  5. 수신자는 블록체인을 적극적으로 모니터링하고 일부 트랜잭션이 목적 목적지 주소 c × G + B로 전송되었는지 확인한다. 전자 지갑의 암호화 여부에 따라 수신자는 동일한 대상 주소를 두 가지 방식, 즉 c × G + B = (c + b) × G로 계산할 수 있으며, 일치하는 항목이 있으면 해당 개인 키 c + b를 사용하여 지불 할 수 있다. 임시 개인 키 c + b는 수신자만 계산할 수 있다.

활용

모네로(Monero)

모네로는 링 서명(Ring Signature)과 스텔스 주소를 사용한다. 그중 스텔스 주소는 모네로 고유 기능으로, 개인 정보 보호에 있어 중요한 부분이다. 발신자가 수신자를 대신하여 모든 거래에 대해 임의의 일회용 주소를 만들어준다. 수취인은 하나의 주소만 게시 할 수 있지만 모든 수취인은 새로운 블록체인의 고유 주소로 이동하며 수취인이 게시한 주소 나 다른 거래 주소로 다시 연결할 수 없다. 따라서 스텔스 주소를 사용하면 발신자와 수신자만이 지불이 전송된 위치를 결정할 수 있다.[5] 모네로 네트워크에서의 거래는 거래 대상을 난독 처리하기 위해 임의로 생긴 일회용 스텔스 주소를 통해 이뤄진다. 예를 들어 엘리스가 15 모네로를 밥의 공개 지갑 주소로 보낸다고 가정해 보자, 이때, 지갑에서 거래를 생성할 때 모네로 프로토콜은 15 모네로를 보낼 일회용 스텔스 주소(익명 중개인 주소)를 자동으로 생성한다. 이 시점에서 밥은 지갑의 개인 지출 키를 통해 스텔스 지갑 주소에 있는 15 모네로에 접속할 수 있다. 그리고 이 거래에서 이뤄진 엘리스와 밥의 지갑 주소는 이후 연결되지 않는다. 이것이 스텔스 주소가 발신자와 수신 자간에 연결을 해제하는 방법이다.[6]

링 서명과 스텔스 주소의 공통점 으로는 거래에서 보낸 사람과 받는 사람의 주소를 숨기는 데 사용된다. 이러한 주소의 난독화는 블록체인 분석을 사실상 불가능하게 만든다. 그렇기 때문에 모네로 블록체인을 탐색하거나 거래를 추적하는 것은 불가능하다.[7]

  • 수신자 익명성 : 모네로는 스텔스 주소 기능을 사용해 수신자의 주소를 외부에 노출하지 않는다. 일반적으로 암호화폐는 블록체인에서 전송을 시작하면 수신자의 계좌가 TX 형식으로 기록된다. 반면, 모네로는 일회용 계좌를 생성하여 블록체인에 기록하기 때문에 수신자의 익명성이 가능해진다. 또한 모네로는 비트코인과 달리 2개의 키 체계를 이용해 암호화폐를 전송할 때 사용하는 사용 키와 계좌 잔액 및 전송내역을 보고자 할 때 사용하는 읽기 키 두 가지를 이용한다.
  • 스텔스 주소 변환 : 사용자가 모네로를 사용한 순간 개인 사용 키와 개인 읽기 키가 지급되고, 수신자가 전송을 받으면 위 2개의 키를 기반으로 공개 사용키, 공개 읽기 키가 만들어지는데 여기에 임의의 데이터가 합쳐져 스텔스 주소로 변환된다.[8]

다크월렛(Dark Wallet)

다크월렛크롬 또는 파이어폭스 브라우저에 설치해야 하는 지하 사이트이다. 설치가 완료되면 지갑 시드 또는 키, 즉 지갑에 접속하는 데 필요한 비밀번호로 새 디지털 지갑이 작성된다. 그 지갑에는 지출, 비즈니스, 저축 등 세 가지 포켓이 있으며, 만들 수 있는 포켓 수에는 제한이 없다. 각 포켓에는 비트코인 거래를 할 수 있는 자체 스텔스 주소가 있다. 다크월렛은 스텔스 주소와 동전 혼합이라는 두 가지 방법으로 사용자에게 익명성과 개인 정보 보호를 제공한다.

다크 월렛 애플리케이션을 사용하여 거래에서 결제를 받는 사용자에게는 자금이 입금될 새 주소가 생성 된다. 이후 해당 거래를 암호화하여 발신자조차도 수취인의 주소를 추적할 수 없다. 이 때, 가장 중요한 점은 지불이 당사자들에게도 안 보여서 두 사용자의 거래 명세를 조사하는 것이다.

블록체인 기반 사물 인터넷(IoT)

스텔스 주소는 블록체인 트랜잭션 출력을 수신자의 지갑 주소와 공개적으로 연결하는 것을 방지하고 트랜잭션의 실제 대상 주소를 숨긴다. 스텔스 주소는 암호화폐 네트워크에 효과적인 개인 정보 보호 기술을 제공하기 때문에, 블록체인 노드는 모든 거래를 적극적으로 모니터링하고 취지 대상 주소를 계산해야 한다. 그렇기 때문에 블록체인 기반 사물인터넷 시스템을 위한 더 빠른 이중 키 스텔스 주소 프로토콜-사물인터넷이 필요하다. 이 사물 인터넷은 DKSAP-IoTTLS 세션 재개와 유사한 기술을 사용하여 두 통신 피어 간에 성능을 동시에 향상시키고 트랜잭션 크기를 줄인다. 또한 이론적 분석과 임베디드 컴퓨팅 플랫폼에 대한 광범위한 실험은 이중 키 스텔스 주소 프로토콜-사물인터넷이 최신 방식과 비교할 때 계산 오버헤드를 최소 50% 줄일 수 있다는 것을 보여준다. [9]

이중 키 스텔스 주소 프로토콜(Dual-Key Stealth Address Protocol)은 거래 수신자에게 강력한 익명성을 제공하며 실제로 이후 통신이 불가능하도록 금액 거래를 만든다. 그러나 이 접근 법은 블록체인 노드가 블록체인에서 일치하는 해당 송신 주소를 찾기 위해서 계속해서 계산을 해야 한다는 단점이 있다. 그리고 이 과정은 컴퓨터에서는 적용할 수 있지만, 자원이 제한된 사물인터넷(IoT) 장치에서는 해결해야 할 과제가 있다. 그 과제는 바로 이중 키 스텔스 주소 프로토콜을 통한 거래 과정을 블록체인 기반 사물인터넷 시스템에 적용 할 수 있는가 하는 것이다. 사물 인터넷 시스템 같은 경우에는 임시 키가 있어 비밀 주소를 사용하는 트랜잭션을 쉽게 식별할 수 있다, 그래서 개인 정보가 약간 누출 될 가능성이 있다. 현재 스텔스 주소를 사용하면서 임시 키가 있을 때 이러한 개인 정보 손실을 줄일 수 있는 아이오텍스(IoTeX)가 이러한 문제를 어떻게 해결할 것인지 연구하고 있다.[2]

각주

  1. 장석만, 〈스텔스주소에 대하여 답변〉, 《아하》, 2019-07-28
  2. 2.0 2.1 IoTeX, 〈블록체인 프라이버시 강화 기술 시리즈 — Stealth Address (I)〉, 《해커눈》, 2018-05-15
  3. 비 솔라 아솔로, 〈스텔스 주소 란 무엇입니까?〉, 《마이크립토피디아》, 2018-11-01
  4. JAKE FRANKENFIELD, 〈스텔스 주소 (암호화)〉, 《인베스토피아》, 2018-03-22
  5. 모네로 공식 홈페이지 - https://www.getmonero.org/resources/moneropedia/stealthaddress.html
  6. Liquid, 〈프라이버시 코인의 예 : Monero, ZCash, DASH〉, 《리퀴드》, 2019-04-15
  7. 숀 오, 〈토크노믹스: 블록체인이 가져올 차세대 비즈니스 경제학〉, 《토머스 파워》
  8. 빗썸 - Bithumb, 〈모네로는 어떤 암호화폐인가요? #2모네로는 어떤 암호화폐인가요? #2〉, 《페이스북》, 2018-01-11
  9. 신신 팬, 〈블록체인 기반 사물 인터넷 시스템을 위한 더 빠른 이중 키 스텔스 주소〉, 《스프링거 링크》, 2018-05-22

참고자료

같이 보기


  검수요청.png검수요청.png 이 스텔스 주소 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.