Nghiên cứu này là nỗ lực chung của Ethereum Fellows: @Mason-Mind @georgesheth @dennis @AshelyYan
1. Giới thiệu
Địa chỉ ẩn (SA) ngăn chặn sự liên kết công khai của một giao dịch chuỗi khối với địa chỉ ví của người nhận. SA che giấu hiệu quả địa chỉ đích thực của giao dịch. Điều quan trọng là phải bảo vệ quyền riêng tư của người nhận và ngăn chặn cuộc tấn công kỹ thuật xã hội vào luồng giao dịch.
@vbuterin @Nerolation đã đề xuất EIP-5564 1 làm thiết kế SA đầu tiên và phát triển BasedSAP dưới dạng triển khai SA trên Ethereum bằng cách sử dụng đường cong elip Secp256k1 (EC). Tuy nhiên, @vbuterin cũng nêu bật những hạn chế hiện tại trong Vấn đề mở: cải thiện các địa chỉ tàng hình để yêu cầu giải pháp FHE (Mã hóa đồng nhất hoàn toàn):
Dựa trên BaseSAP, chúng tôi đóng góp thêm để đề xuất FHE-DKSAP : một giao thức SA với Mã hóa đồng nhất hoàn toàn (FHE). FHE-DKSAP có các ưu điểm chính sau:
- FHE-DKSAP thay thế EC bằng FHE để cải thiện mức độ bảo mật. FHE xây dựng mật mã mạng và được sinh ra để trang bị cho FHE-DKSAP để ngăn chặn các cuộc tấn công điện toán lượng tử.
- Do đó, SA trong FHE-DKSAP được bảo mật để sử dụng lại và không cần tạo số lượng lớn SA để giảm bớt sự phức tạp và khó khăn trong việc áp dụng SA.
- So với thiết kế khóa kép trong EIP-5564, thiết kế của chúng tôi trong FHE-DKSAP, có thể giúp người nhận thuê ngoài tính toán kiểm tra toàn bộ chuỗi để tìm nội dung chứa SA mà không tiết lộ khóa xem của mình.
2. Bối cảnh
Một trong những trọng tâm chính của việc bảo vệ quyền riêng tư trong Ethereum là cắt đứt liên kết công khai của địa chỉ người nhận. SA được đề xuất yêu cầu người gửi tạo địa chỉ một lần ngẫu nhiên cho mọi giao dịch thay mặt cho người nhận để các khoản thanh toán khác nhau được thực hiện cho cùng một người nhận không thể liên kết.
Chúng tôi đã nghiên cứu một cách có hệ thống các ấn bản trước đó và nhận thấy Giao thức địa chỉ ẩn khóa kép (Courtois, NT, & Mercer, R. 2017) là thiết kế được đánh giá cao nhất. Tuy nhiên, nó vẫn dễ bị tấn công rò rỉ khóa và tấn công máy tính lượng tử. Để ngăn chặn các cuộc tấn công này, chúng tôi đề xuất triển khai SA với FHE, một ứng dụng của mạng.
Các nghiên cứu khác có thể được tóm tắt như sau:
- Sự phát triển của công nghệ Địa chỉ ẩn (SA) bắt đầu với phát minh ban đầu của một người dùng có tên 'bytecoin' trong diễn đàn Bitcoin vào ngày 17 tháng 4 năm 2011. Kỹ thuật này đã giới thiệu khái niệm về các giao dịch không thể theo dõi có khả năng mang thông điệp an toàn, mở đường cho việc nâng cao quyền riêng tư và bảo mật trong các hệ thống chuỗi khối.
- Vào năm 2013, Nicolas van Saberhagen đã đưa khái niệm này đi xa hơn trong sách trắng CryptoNote, cung cấp thêm thông tin chuyên sâu và những tiến bộ trong công nghệ Địa chỉ tàng hình. Đóng góp của ông đã mở rộng hiểu biết về cách thức các Địa chỉ tàng hình có thể được tích hợp vào các giao thức mật mã. Những năm sau đó, một số nhà nghiên cứu đã đạt được những bước tiến trong lĩnh vực công nghệ Địa chỉ tàng hình.
- Vào năm 2017, Nicolas T. Courtois và Rebekah Mercer đã giới thiệu Địa chỉ tàng hình đa khóa mạnh mẽ, giúp nâng cao tính mạnh mẽ và bảo mật của kỹ thuật SA.
- Năm 2018 chứng kiến Fan Xinxin và nhóm của anh trình bày một giao thức Địa chỉ Tàng hình khóa kép nhanh hơn, được thiết kế đặc biệt cho các hệ thống Internet of Things (IoT) dựa trên chuỗi khối. Giao thức của họ đã giới thiệu một bộ đếm ngày càng tăng, cho phép phân tích cú pháp nhanh hơn và cải thiện hiệu quả tổng thể.
- Vào năm 2019, Fan Jia và nhóm của anh ấy đã giải quyết vấn đề về độ dài khóa trong Địa chỉ ẩn bằng cách sử dụng bản đồ song tuyến tính, từ đó tạo ra những tiến bộ đáng kể trong việc tăng cường tính bảo mật và tính thực tế của giao thức.
- Cùng năm đó, các nhà nghiên cứu đã giới thiệu chữ ký vòng có thể liên kết dựa trên mạng hỗ trợ Địa chỉ tàng hình. Sự đổi mới này nhằm mục đích chống lại các cuộc tấn công chọn khóa đối thủ, củng cố hơn nữa khía cạnh bảo mật. Tuy nhiên, bài viết này không tận dụng nhiều phím.
- Khi công nghệ phát triển, EIP-5564 đã được đề xuất để triển khai SA trên Ethereum và vào ngày 25 tháng 6 năm 2023, bài báo, BasedSAP đã nổi lên như một giao thức Địa chỉ tàng hình hoàn toàn mở và có thể tái sử dụng.
Dựa trên hiểu biết của chúng tôi, tất cả các nghiên cứu đã không giải quyết để đáp ứng các yêu cầu chung về 1) bảo vệ quyền riêng tư trên Ethereum, 2) ngăn chặn các cuộc tấn công điện toán lượng tử, 3) tái sử dụng SA thay vì tạo ra nhiều.
3. Thiết kế của chúng tôi: FHE-DKSAP
Chúng tôi giải quyết các thách thức bằng cách áp dụng FHE vào DKSAP và đặt tên cho thiết kế mới của chúng tôi là FHE-DKSAP:
Chúng tôi trình bày FHE-DKSAP với các chi tiết như dưới đây. Nó yêu cầu kiến thức sơ bộ về DKSAP và FHE, và bạn có thể đọc Chương 6 trước để chuẩn bị sẵn những kiến thức này:
Bob (người nhận) tạo hai cặp khóa: (sk_2, PK_2) ( s k 2 , P K 2 ) và (sk_b, PK_b) ( s k b , P K b ) .
1.1. sk_2 s k 2 là khóa riêng của ví Ethereum được tạo ngẫu nhiên cho mục đích chi tiêu SA. Nó không cần đăng ký trên Ethereum trước khi sử dụng và không phải là khóa riêng trong ví của Bob.
1.2. Khóa công khai địa chỉ ví chi tiêu SA PK_2 P K 2 được tạo bằng cách sử dụng sk_2 s k 2 . Nó tuân theo chuyển đổi địa chỉ Ethereum tiêu chuẩn từ sk_2 s k 2 thành PK_2 P K 2 . Như đã nói, địa chỉ ví cuối cùng của PK_2 P K 2 không cần phải đăng ký trên Ethereum trước khi sử dụng.
1.3. sk_b s k b là khóa riêng FHE để mã hóa và giải mã SA.
1.4. PK_b P K b được sử dụng để mã hóa giá trị của sk_2 s k 2 để lấy bản mã C_2 C 2 . Vì FHE ngăn chặn các cuộc tấn công máy tính lượng tử nên việc mã hóa sk_2 s k 2 thành C_2 C 2 là an toàn.
1.5. Bob chia sẻ công khai PK_2 P K 2 , PK_b P K b và bản mã C_2 C 2 .Alice (người gửi) tạo ngẫu nhiên một cặp khóa (sk_1, PK_1) ( s k 1 , P K 1 ) cho mỗi giao dịch SA.
2.1. sk_1 s k 1 là Ethereum phù du và khóa công khai hoặc địa chỉ ví không cần phải đăng ký trên Ethereum trước khi sử dụng.
2.2. Cô kết hợp hai khóa công khai để tạo ví Ethereum, PK_1 P K 1 và PK_b P K b , để có được PK_z P K z .
2.3. Địa chỉ tàng hình (SA) được tạo dựa trên PK_z P K z bằng cách tuân theo chuyển đổi địa chỉ Ethereum tiêu chuẩn.
2.4. Alice mã hóa khóa bí mật sk_1 s k 1 bằng khóa công khai FHE của Bob PK_b P K b , dẫn đến bản mã C_1 C 1 . Alice sau đó phát sóng C1 để Bob có thể lấy nó theo cách không thể theo dõi được.
2.5. Alice không thể biết khóa riêng của SA, vì không ai có thể đoán khóa riêng từ khóa chung PK_z P K z . Điều đó có nghĩa là Alice chỉ biết nơi gửi giao dịch SA, nhưng không bao giờ có thể đăng nhập vào ví SA này.Bob nhận được bản mã C_1 C 1 và cộng hai bản mã ( C_1 C 1 , C_2 C 2 ) với nhau để có được C C .
3.1 Với phép cộng cấu hình, anh ta có thể giải mã bản mã C C bằng khóa riêng FHE của mình sk_b s k b . Kết quả giải mã FHE là khóa riêng sk_z s k z cho ví nhận được gửi từ Alice.
3.3. Sau đó, anh ấy có thể tạo địa chỉ ẩn với sk_z s k z và giải mã nó bằng khóa riêng mà chỉ bob sở hữu. Vì vậy, Bob có khả năng chuyển số dư của nó bằng khóa riêng sk_z s k z cho ví SA .
Dựa trên BasedSAP, FHE-DKSAP có những cải tiến sau:
- Nó bảo vệ quyền riêng tư của địa chỉ tàng hình bằng cách tính toán trên bản mã.
- So với DKSAP và BasedSAP, thiết kế của chúng tôi loại bỏ nguy cơ rò rỉ khóa và thông tin cá nhân.
- Trong khi đó, nó cũng có thể ngăn chặn các cuộc tấn công điện toán lượng tử.
4. Thực hiện của chúng tôi: FHE-DKSAP
Chúng tôi đã triển khai FHE-DKSAP bằng Python và chúng tôi sẽ sớm cung cấp mã tại đây.
5. Đánh giá của chúng tôi: FHE-DKSAP
Chúng tôi đã thử nghiệm FHE-DKSAP và so sánh với BaseSAP và chúng tôi sẽ sớm cung cấp đánh giá tại đây.
6. Bài đọc khác
6.1 Tóm tắt về Giao thức địa chỉ ẩn khóa kép (DKSAP)
DKSAP xây dựng trên giao thức trao đổi khóa Diffie-Hellman (DH) theo đường cong elip (EC). Khi người gửi (A) muốn gửi giao dịch đến người nhận (B) ở chế độ ẩn, DKSAP hoạt động như sau:
Các định nghĩa:
“Siêu địa chỉ tàng hình” là một tập hợp gồm một hoặc hai khóa công khai có thể được sử dụng để tính địa chỉ ẩn cho một người nhận nhất định.
“Khóa chi tiêu” là khóa riêng tư có thể được sử dụng để chi tiêu số tiền được gửi đến một địa chỉ bí mật. “Khóa công khai chi tiêu” là khóa công khai tương ứng.
“Khóa xem” là khóa riêng tư có thể được sử dụng để xác định xem tiền được gửi đến địa chỉ ẩn có thuộc về người nhận kiểm soát khóa chi tiêu tương ứng hay không. “Khóa công khai đang xem” là khóa công khai tương ứng.
- Người nhận B có một cặp khóa riêng/công khai (v_B, V_B) ( v B , V B ) và (s_B, S_B) ( s B , S B ) , trong đó v_B v B và s_B s B được gọi là B's 'viewing khóa riêng tư' và 'chi tiêu khóa riêng tư', tương ứng, trong khi V_B = v_BG V B = v B G và S_B = s_BG S B = s B G là các khóa công khai tương ứng. Lưu ý rằng không có V_B V B và S_B S B nào xuất hiện trong chuỗi khối và chỉ người gửi A và người nhận B biết các khóa đó.
- Người gửi A tạo một cặp khóa tạm thời (r_A, R_A) ( r A , R A ) với R_A = r_AG R A = r A G và 0 < r_A r A < n, đồng thời gửi R_A R A đến người nhận B.
- Cả người gửi A và người nhận B đều có thể thực hiện giao thức ECDH để tính toán bí mật dùng chung : 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 ) , trong đó H(·) H ( ⋅ ) là hàm băm mật mã.
- Người gửi A hiện có thể tạo địa chỉ đích của người nhận B mà A sẽ gửi thanh toán tới: T_A = c_{AB}G + S_B T A = c A B G + S B . Lưu ý rằng địa chỉ đích một lần TA được hiển thị công khai và xuất hiện trên chuỗi khối.
- Tùy thuộc vào việc ví có được mã hóa hay không, người nhận B có thể tính toán cùng một địa chỉ đích theo hai cách khác nhau: 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 . Khóa riêng tạm thời tương ứng là t_A = c_{AB} + s_B t A = c A B + s B , khóa này chỉ có thể được người nhận B tính toán, do đó cho phép B chi tiêu khoản thanh toán nhận được từ A sau này.
6.2 Mã hóa đồng hình hoàn toàn
Mã hóa đồng hình (HE) đề cập đến một loại kỹ thuật mã hóa đặc biệt cho phép tính toán được thực hiện trên dữ liệu được mã hóa mà không yêu cầu quyền truy cập vào khóa (giải mã) bí mật. Kết quả tính toán vẫn được mã hóa và chỉ người sở hữu khóa bí mật mới có thể tiết lộ. Có các phép đồng cấu cộng và phép đồng cấu nhân như sau:
Đồng cấu cộng: E(m_1) + E(m_2) = E(m_1+m_2) E ( m 1 ) + E ( m 2 ) = E ( m 1 + m 2 )
Phép đồng cấu nhân: E(m_1) * E(m_2) = E(m_1*m_2) E ( m 1 ) ∗ E ( m 2 ) = E ( m 1 ∗ m 2 )
Một lược đồ mã hóa đồng hình bao gồm bốn thủ tục, E = ( KeyGen, Encrypt, Decrypt, Evalu) E = ( K e y G e n , E n c r y p t , D e c r y p t , E v a l u a t e ) :
(sk, pk) ← KeyGen (1^λ, 1^τ ) ( s k , p k ) ← K e y G e n ( 1 λ , 1 τ ) . Lấy tham số bảo mật λ λ và một tham số khác τ τ và xuất ra một cặp khóa bí mật/công khai.
c ← Mã hóa(pk, b) c ← E n c r y p t ( p k , b ) . Đưa ra khóa chung và một bit văn bản rõ, xuất ra một bản mã.
b ← Giải mã(sk, c) b ← D e c r y p t ( s k , c ) . Đưa ra khóa bí mật và một bản mã, xuất ra một bit văn bản rõ.
c ← Đánh giá(pk, Π, c ) c ← E v a l u a t e ( p k , Π , c ) . Nhận một khóa công khai pk, một mạch Π Π , một vectơ của bản mã, một cho mỗi bit đầu vào của Π Π và xuất ra một vectơ khác của bản mã, một cho mỗi bit đầu ra của Π Π .
Hiện tại, có rất nhiều thuật toán mã hóa đồng cấu hoàn toàn (FHE). Gentry là người tiên phong trong việc đề xuất một thuật toán mã hóa đồng hình có khả năng thực hiện cả hai phép toán nhân và cộng. Tuy nhiên, việc triển khai trên thực tế còn hạn chế. Một tiến bộ quan trọng khác là lược đồ BGV, giới thiệu một công nghệ xây dựng mã hóa đồng cấu mới.
7. Kết luận
Được thúc đẩy bởi DKSAP và BaseSAP, chúng tôi đề xuất FHE-DKSAP để giúp người nhận thuê ngoài tính toán kiểm tra toàn bộ chuỗi để tìm các địa chỉ tàng hình chứa tài sản mà không tiết lộ khóa xem của anh ta và ngăn chặn các cuộc tấn công điện toán lượng tử.



