이 연구는 Ethereum Fellows의 공동 노력입니다: @Mason-Mind @georgesheth @dennis @AshelyYan
1. 소개
스텔스 주소(SA)는 블록체인 거래가 수신자의 지갑 주소와 공개적으로 연관되는 것을 방지합니다. SA는 거래의 실제 대상 주소를 효과적으로 숨깁니다. 수신자의 개인 정보를 보호하고 거래 흐름에 대한 사회 공학 공격을 차단하는 것이 중요합니다.
@vbuterin @Nerolation은 최초의 SA 디자인으로 EIP-5564 1을 제안했고, Secp256k1 타원곡선(EC)을 활용해 Ethereum에서 SA 구현으로 BasedSAP를 개발했습니다. 그러나 @vbuterin은 또한 공개 문제(완전 동형 암호화) FHE 솔루션을 요구하도록 스텔스 주소를 개선하는 문제 의 현재 제한 사항을 강조했습니다.
BaseSAP를 기반으로 우리는 FHE(Fully Homomorphic Encryption)를 사용하는 SA 프로토콜인 FHE-DKSAP를 제안하는 데 더욱 기여합니다. FHE-DKSAP에는 다음과 같은 주요 이점이 있습니다.
- FHE-DKSAP는 EC를 FHE로 대체하여 보안 수준을 향상시킵니다. FHE는 격자 암호화를 구성하고 양자 컴퓨팅 공격을 방지하기 위해 FHE-DKSAP를 장착하기 위해 탄생했습니다.
- 따라서 FHE-DKSAP의 SA는 재사용이 보장되며 SA 채택의 복잡성과 어려움을 줄이기 위해 대량의 SA를 생성할 필요가 없습니다.
- EIP-5564의 이중 키 설계와 비교하여 FHE-DKSAP의 설계는 수신자가 뷰 키를 공개하지 않고 자산이 포함된 SA에 대한 전체 체인을 확인하는 계산을 아웃소싱하는 데 도움이 될 수 있습니다.
2. 배경
이더리움의 개인정보 보호의 주요 초점 중 하나는 영수증 주소의 공개 연결을 차단하는 것입니다. SA는 송금인이 수신자를 대신하여 모든 거래에 대해 임의의 일회용 주소를 생성하도록 요구하여 동일한 수취인에게 서로 다른 결제가 이루어지도록 하는 것을 제안합니다.
우리는 이전 출판물을 체계적으로 연구한 결과 이중 키 스텔스 주소 프로토콜 (Courtois, NT, & Mercer, R. 2017)이 가장 높이 평가되는 설계라는 것을 발견했습니다. 하지만 여전히 키 유출 공격과 양자컴퓨팅 공격에는 취약하다. 이러한 공격을 방지하기 위해 격자를 적용한 FHE를 사용하여 SA를 구현할 것을 제안합니다.
다른 연구는 다음과 같이 요약할 수 있습니다.
- Stealth Address(SA) 기술의 개발은 2011년 4월 17일 비트코인 포럼에서 'bytecoin'이라는 사용자의 최초 발명으로 시작되었습니다. 이 기술은 보안 메시지를 전달할 수 있는 추적 불가능한 거래 개념을 도입하여 향상된 보안 주소의 기반을 마련했습니다. 블록체인 시스템의 개인 정보 보호 및 보안.
- 2013년 Nicolas van Saberhagen은 CryptoNote 백서에서 이 개념을 더욱 발전시켜 Stealth Address 기술에 대한 더 많은 통찰력과 발전을 제공했습니다. 그의 기여는 스텔스 주소가 암호화 프로토콜에 통합될 수 있는 방법에 대한 이해를 넓혔습니다. 그 후 몇 년 동안 여러 연구자들이 Stealth Address 기술 분야에서 발전을 이루었습니다.
- 2017년에 Nicolas T. Courtois와 Rebekah Mercer는 SA 기술의 견고성과 보안을 강화한 강력한 다중 키 스텔스 주소를 도입했습니다.
- 2018년에 Fan Xinxin과 그의 팀은 블록체인 기반 사물 인터넷(IoT) 시스템을 위해 특별히 설계된 더 빠른 듀얼 키 스텔스 주소 프로토콜을 선보였습니다. 그들의 프로토콜은 증가하는 카운터를 도입하여 더 빠른 구문 분석을 가능하게 하고 전반적인 효율성을 향상시켰습니다.
- 2019년에 Fan Jia와 그의 팀은 이중선형 맵을 활용하여 스텔스 주소의 키 길이 문제를 해결함으로써 프로토콜의 보안과 실용성을 향상시키는 데 상당한 발전을 이루었습니다.
- 같은 해 연구원들은 스텔스 주소를 지원하는 격자 기반 연결 가능 링 서명을 도입했습니다. 이 혁신은 적대적으로 선택된 키 공격에 대응하고 보안 측면을 더욱 강화하는 것을 목표로 했습니다. 그러나 이 문서에서는 다중 키를 활용하지 않습니다.
- 기술이 발전함에 따라 EIP-5564는 Ethereum에서 SA를 구현하기 위해 제안되었으며 2023년 6월 25일에 BasedSAP라는 논문은 완전히 개방적이고 재사용 가능한 Stealth Address 프로토콜로 등장했습니다.
우리의 지식에 따르면, 모든 연구는 1) 이더리움의 개인 정보 보호, 2) 양자 컴퓨팅 공격 방지, 3) SA를 많이 생성하는 대신 재사용에 대한 전반적인 요구 사항을 충족하지 못했습니다.
3. 우리의 디자인: FHE-DKSAP
우리는 FHE를 DKSAP에 채택하여 문제를 해결하고 새로운 디자인을 FHE-DKSAP로 명명했습니다.
우리는 다음과 같은 세부 사항을 포함하는 FHE-DKSAP를 제시합니다. DKSAP 및 FHE에 대한 예비 지식이 필요하며, 이러한 지식을 준비하려면 먼저 6장을 읽으십시오.
Bob(수신자)은 (sk_2, PK_2) ( s k 2 , P K 2 ) 및 (sk_b, PK_b) ( s k b , P K b ) 라는 두 개의 키 쌍을 생성합니다.
1.1. sk_2 sk 2 는 SA 지출 목적으로 무작위로 생성된 이더리움 지갑 개인 키입니다. 사용하기 전에 이더리움에 등록할 필요가 없으며 Bob의 지갑 개인 키가 아닙니다.
1.2. SA 지출 지갑 주소 공개 키 PK_2 P K 2 는 sk_2 s k 2 를 사용하여 생성됩니다. 이는 sk_2 s k 2 에서 PK_2 P K 2 로의 표준 Ethereum 주소 변환을 따릅니다. 말했듯이 PK_2 P K 2 의 최종 지갑 주소는 이더리움에 등록할 필요 없이 사용 가능합니다.
1.3. sk_b s k b 는 SA 암호화 및 암호 해독을 위한 FHE 개인 키입니다.
1.4. PK_b P K b 는 sk_2 s k 2 값을 암호화하여 암호문 C_2 C 2 를 얻는 데 사용됩니다. FHE는 양자 컴퓨팅 공격을 방지하므로 sk_2 s k 2 를 C_2 C 2 로 암호화하는 것이 안전합니다.
1.5. Bob은 PK_2 P K 2 , PK_b P K b 및 암호문 C_2 C 2 를 공개적으로 공유합니다.Alice(발신자)는 각 SA 트랜잭션에 대해 무작위로 키 쌍 (sk_1, PK_1) ( s k 1 , PK 1 ) 을 생성합니다.
2.1. sk_1 s k 1 은 이더리움 임시이므로 사용하기 전에 공개 키나 지갑 주소를 이더리움에 등록할 필요가 없습니다.
2.2. 그녀는 이더리움 지갑 생성을 위한 두 개의 공개 키인 PK_1 P K 1 과 PK_b P K b 를 결합하여 PK_z P K z 를 얻습니다.
2.3. 스텔스 주소(SA)는 표준 이더리움 주소 변환을 따라 PK_z P K z 를 기반으로 생성됩니다.
2.4. Alice는 Bob의 FHE 공개 키 PK_b P K b 를 사용하여 비밀 키 sk_1 s k 1 을 암호화하여 암호문 C_1 C 1 을 생성합니다. 그런 다음 Alice는 C1을 브로드캐스트하여 Bob이 추적할 수 없는 방식으로 C1을 얻을 수 있도록 합니다.
2.5. 누구도 공개 키 PK_z P K z 에서 개인 키를 추측할 수 없으므로 Alice는 SA의 개인 키를 알 수 없습니다. 이는 Alice가 SA 트랜잭션을 어디로 보낼지 알지만 이 SA 지갑에 로그인할 수 없다는 것을 의미합니다.Bob은 암호문 C_1 C 1 을 수신하고 두 개의 암호문( C_1 C 1 , C_2 C 2 )을 추가하여 C C 를 얻습니다.
3.1 가산 동형법을 사용하면 FHE 개인 키 sk_b s k b를 사용 하여 암호문 CC 를 해독할 수 있습니다. FHE 복호화 결과는 Alice가 보낸 지갑에 대한 개인 키 sk_z s k z 입니다.
3.3. 그런 다음 그는 sk_z s k z를 사용하여 스텔스 주소를 생성하고 bob만이 소유한 개인 키로 이를 해독할 수 있습니다. 따라서 Bob은 SA 지갑용 개인 키 sk_z s k z 를 사용하여 잔액을 전송할 수 있습니다.
기반 BasedSAP, FHE-DKSAP에는 다음과 같은 개선 사항이 있습니다.
- 암호문을 통해 컴퓨팅함으로써 스텔스 주소의 개인 정보를 보호합니다.
- DKSAP 및 BasedSAP와 비교하여 당사의 설계는 키 및 개인 정보 유출 위험을 제거합니다.
- 한편, 양자 컴퓨팅 공격도 예방할 수 있습니다.
4. 구현: FHE-DKSAP
우리는 Python으로 FHE-DKSAP를 구현했으며 여기에 곧 코드를 제공할 예정입니다.
5. 우리의 평가: FHE-DKSAP
FHE-DKSAP를 테스트하고 BaseSAP와 비교했으며 곧 여기에서 평가를 제공할 예정입니다.
6. 기타 독서
6.1 이중 키 스텔스 주소 프로토콜(DKSAP) 요약
DKSAP는 EC(타원 곡선)의 DH(Diffie-Hellman) 키 교환 프로토콜을 기반으로 구축되었습니다. 발신자(A)가 스텔스 모드에서 수신자(B)에게 트랜잭션을 보내려고 할 때 DKSAP는 다음과 같이 작동합니다.
정의:
"스텔스 메타 주소"는 특정 수신자에 대한 스텔스 주소를 계산하는 데 사용할 수 있는 하나 또는 두 개의 공개 키 세트입니다.
"지출 키"는 스텔스 주소로 전송된 자금을 사용하는 데 사용할 수 있는 개인 키입니다. "지출 공개 키"는 해당 공개 키입니다.
"보기 키"는 스텔스 주소로 전송된 자금이 해당 지출 키를 제어하는 수신자에게 속하는지 확인하는 데 사용할 수 있는 개인 키입니다. "공개 키 보기"가 해당 공개 키입니다.
- 수신자 B는 한 쌍의 개인/공개 키 (v_B, V_B) ( v B , V B ) 및 (s_B, S_B) ( s B , S B ) 를 가지고 있습니다. 여기서 v_B v B 및 s_B s B 는 B의 '보기'라고 합니다. 개인 키' 및 '개인 키 지출'은 각각 V_B = v_BG V B = v B G 및 S_B = s_BG S B = s B G 는 해당 공개 키입니다. V_B V B 및 S_B S B 중 어느 것도 블록체인에 나타나지 않으며 발신자 A와 수신자 B만이 해당 키를 알고 있습니다.
- 송신자 A는 R_A = r_AG R A = r A G 및 0 < r_A r A < n인 임시 키 쌍 (r_A, R_A) ( r A , RA ) 를 생성하고 R_A R A를 수신자 B에게 보냅니다.
- 송신자 A와 수신자 B 모두 ECDH 프로토콜을 수행하여 공유 비밀을 계산할 수 있습니다. c_{AB} = H(r_A*v_B G) = H(r_A*V_B) = H(v_B*R_A) c A B = H ( r A * v B G ) = H ( r A * V B ) = H ( v B * R A ) , 여기서 H(·) H ( ⋅ ) 는 암호화 해시 함수입니다.
- 이제 보낸 사람 A는 A가 지불금을 보내야 하는 받는 사람 B의 대상 주소를 생성할 수 있습니다. T_A = c_{AB}G + S_B T A = c A B G + S B. 일회성 대상 주소 TA는 공개적으로 표시되며 블록체인에 나타납니다.
- 지갑이 암호화되었는지 여부에 따라 수신자 B는 두 가지 다른 방식으로 동일한 대상 주소를 계산할 수 있습니다. T_A = c_{AB}G + S_B = (c_{AB} + s_B)G T A = c A B G + S B = ( c A B + s B ) G. 해당 임시 개인키는 t_A = c_{AB} + s_B t A = c A B + s B 이며 , 이는 수신자 B만이 계산할 수 있으므로 B는 나중에 A로부터 받은 지불금을 사용할 수 있습니다.
6.2 완전동형암호
HE(동형암호)는 비밀(암호해독) 키에 액세스하지 않고도 암호화된 데이터에 대해 계산을 수행할 수 있는 특수한 유형의 암호화 기술을 나타냅니다. 계산 결과는 암호화된 상태로 유지되며 비밀 키 소유자만 공개할 수 있습니다. 아래와 같이 덧셈 동형과 곱셈 동형이 있습니다.
가산 동형: E(m_1) + E(m_2) = E(m_1+m_2) E ( m 1 ) + E ( m 2 ) = E ( m 1 + m 2 )
곱셈 동형: E(m_1) * E(m_2) = E(m_1*m_2) E ( m 1 ) * E ( m 2 ) = E ( m 1 * m 2 )
동형암호 방식은 E = (KeyGen, Encrypt, Decrypt, Evaluate) 의 네 가지 절차 로 구성 됩니다 . E = ( Key Gen , En c r y p t , D e c r y p t , E v a l 당신 은 ) : _
(sk, pk) ← KeyGen (1^λ, 1^τ ) ( s k , p k ) ← K e y G e n ( 1 λ , 1 τ ) . 보안 매개변수 λ λ 및 다른 매개변수 τ τ를 가져와 비밀/공개 키 쌍을 출력합니다.
c ← 암호화(pk, b) c ← E n c r y p t ( p k , b ) . 공개 키와 일반 텍스트 비트가 주어지면 암호문을 출력합니다.
b ← Decrypt(sk, c) b ← D e c r y p t ( s k , c ) . 비밀 키와 암호문이 주어지면 일반 텍스트 비트를 출력합니다.
c ← 평가(pk, Π, c ) c ← E v a l u a t e ( p k , Π , c ) . 공개 키 pk, 회로 Π Π , 암호문 벡터( Π Π 의 모든 입력 비트에 하나씩)를 취하고, Π Π 의 모든 출력 비트에 대해 하나씩 또 다른 암호문 벡터를 출력합니다.
현재 수많은 FHE(완전 동형 암호화) 알고리즘이 존재합니다. Gentry는 곱셈과 덧셈 연산을 모두 수행할 수 있는 동형 암호화 알고리즘을 제안한 선구자였습니다. 그러나 실제적인 구현에는 한계가 있었습니다. 또 다른 중요한 발전은 새로운 동형 암호화 구성 기술을 도입한 BGV 체계입니다.
7. 결론
DKSAP 및 BaseSAP에 영감을 받아 수신자가 뷰 키를 공개하지 않고 자산이 포함된 스텔스 주소에 대해 전체 체인을 확인하는 계산을 아웃소싱하고 양자 컴퓨팅 공격을 방지할 수 있도록 FHE-DKSAP를 제안합니다.




