Tác giả: Omer Shlomovits, ZenGo.

Lược đồ ký ngưỡng (TSS) là một lược đồ mã hóa nguyên thủy để tạo và ký các khóa phân tán. Sử dụng TSS trong tính toán blockchain là một mô hình mới có thể mang lại nhiều lợi ích khác nhau, đặc biệt là về mặt bảo mật. Nghĩa là, TSS có thể tác động đến việc thiết kế các hệ thống quản lý khóa (chẳng hạn như ví kỹ thuật số) và dẫn đầu lĩnh vực hỗ trợ cục bộ trong các trường hợp sử dụng DeFi. Tuy nhiên TSS này vẫn là công nghệ mới nên những rủi ro, hạn chế cũng phải được cân nhắc khi sử dụng.

Trong bài viết này, chúng tôi sẽ đề cập đến TSS là gì, những lợi thế tiềm năng mà nó có thể mang lại cho lĩnh vực blockchain, cách triển khai nó trong chuỗi khối Khách hàng, so sánh nó với chia sẻ bí mật Shamir và Multisig, các cách khác nhau để sử dụng TSS là gì trong quản lý khóa phân tán và cuối cùng chúng tôi thảo luận về những rủi ro và hạn chế tiềm ẩn của nó.

Vai trò của mã hóa

Để hiểu TSS trước tiên chúng ta cần một số kiến ​​thức cơ bản về mật mã. Kể từ những năm 1970, các hệ thống Internet ngày càng sử dụng nhiều mã hóa bất đối xứng hơn (như TLS và PGP), còn được gọi là mật mã khóa công khai (PKC). PKC sử dụng hai khóa: một khóa chung và một khóa riêng. Mặc dù khóa chung không phải là bí mật và có thể được chia sẻ và sử dụng bởi bất kỳ ai, nhưng khóa riêng là một phần thông tin bí mật thể hiện tính bảo mật của hệ thống và không thể chia sẻ.

Mã hóa và chữ ký số là những ứng dụng phổ biến nhất của PKC. Cả sơ đồ mã hóa và chữ ký số đều dựa trên bộ ba thuật toán. Đầu tiên là tạo cặp khóa riêng và khóa chung, thứ hai là tạo bản mã/chữ ký và thứ ba là quá trình giải mã/xác minh. Về chữ ký số: Thuật toán chữ ký yêu cầu một khóa riêng mà chỉ chủ nhân của nó mới biết sẽ tạo ra một chữ ký duy nhất. Chữ ký được gắn vào một tin nhắn cụ thể theo cách mà bất kỳ ai nắm giữ khóa chung đều có thể xác minh tính xác thực và tính xác thực của nó.


Chuỗi khối

Không còn nghi ngờ gì nữa, blockchain là một công nghệ cực kỳ mạnh mẽ. Nó cung cấp một lớp đồng thuận để tổ chức và ghi lại các sự kiện. Cơ sở hạ tầng như vậy mang lại cho người dùng và thậm chí cả chính phủ sức mạnh tiềm tàng để xây dựng nền kinh tế phi tập trung. Điều đáng ngạc nhiên là mã hóa cần thiết để chạy một blockchain đơn giản chỉ có thể dựa vào chữ ký số. Trong blockchain, khóa riêng đại diện cho danh tính trong khi chữ ký là tuyên bố công khai hoặc khiếu nại được đưa ra bởi danh tính. Chuỗi khối yêu cầu và xác minh dữ liệu theo một bộ quy tắc nhằm đảm bảo, cùng nhiều quy tắc khác, rằng chữ ký là không thể giả mạo và hợp lệ.

Hộp công cụ mật mã hiện đại bao gồm một số thủ thuật ma thuật thú vị không giống như mật mã cổ điển hơn được sử dụng trong blockchain. Một số ví dụ về các thủ thuật này bao gồm bằng chứng không có kiến ​​thức, mật mã đồng hình và tính toán nhiều bên. Như chúng ta đã thấy trong thập kỷ qua, nghiên cứu về blockchain đã thúc đẩy mạnh mẽ mật mã ứng dụng với những tiến bộ đáng ngạc nhiên gần đây về kiến ​​thức về tất cả những điều trên và hơn thế nữa. 

Trong bài viết này, chúng tôi sẽ tập trung vào một trong những bước đột phá, đó là chữ ký ngưỡng an toàn hiệu quả (TSS).


MPC và lược đồ chữ ký ngưỡng (TSS)

Tính toán đa bên (MPC) là một nhánh của mật mã bắt đầu từ công trình nghiên cứu quan trọng của Andrew C. Yao gần 40 năm trước. Trong MPC, một nhóm các bên không tin tưởng lẫn nhau sẽ cố gắng tính toán một hàm dựa trên đầu vào của họ trong khi vẫn giữ những đầu vào đó ở chế độ riêng tư. 

Ví dụ: giả sử một số nhân viên công ty muốn biết ai được trả nhiều hơn nhưng không tiết lộ mức lương thực tế của họ cho nhau biết. Ở đây đầu vào đặc biệt là lương và bối rối sẽ là tên của nhân viên có mức lương cao nhất. Khi phép tính này được thực hiện bằng MPC, kết quả là thậm chí không có một khoản lương nào bị rò rỉ trong quá trình tính toán. 

Hai tính năng chính của MPC là tính xác thực và quyền riêng tư:

  • Tính chính xác: Đầu ra do thuật toán tạo ra là chính xác (như mong đợi).

  • Quyền riêng tư: Dữ liệu đầu vào bí mật do một bên nắm giữ sẽ không bị rò rỉ cho các bên khác.

Chúng ta sẽ sử dụng MPC để tính toán chữ ký số theo cách phân tán. Hãy xem các thuộc tính trên có thể được áp dụng cho chữ ký như thế nào. Đối với chữ ký, chúng tôi có ba bước: 

  • Tạo khóa: Bước đầu tiên cũng phức tạp nhất. Chúng ta cần tạo một khóa sẽ được công khai và được sử dụng để xác minh chữ ký trong tương lai. Nhưng chúng ta cũng cần tạo một bí mật riêng cho mỗi bên tham gia mà chúng ta sẽ gọi là bí mật chung. Trong bối cảnh về tính chính xác và quyền riêng tư, chúng tôi nói rằng hàm này sẽ xuất ra cùng một khóa chung cho tất cả các bên và một phần chia sẻ bí mật khác nhau cho cả hai bên sau: (1) Quyền riêng tư: Không có dữ liệu nào về phần chia sẻ bí mật bị rò rỉ giữa hai bên và ( 2) Tính đúng đắn: Khóa công khai là hàm của các phần chia sẻ bí mật.

  • Chữ ký: Bước này bao gồm chức năng tạo chữ ký. Đóng góp của mỗi bên là phần chia sẻ bí mật của họ, được tạo ra dưới dạng đầu ra từ bước trước đó (tạo khóa phân phối). Ngoài ra còn có một thông tin đầu vào chung mà mọi người đều biết đó là thông báo được ký. Đầu ra sẽ là chữ ký số và tính năng bảo mật đảm bảo rằng không xảy ra rò rỉ cổ phiếu bí mật trong quá trình tính toán.

  • Xác minh: Thuật toán xác minh vẫn giữ nguyên như trong cài đặt cổ điển. Để tương thích với chữ ký khóa riêng lẻ, mọi người có kiến ​​thức về khóa chung phải có khả năng xác minh và xác thực chữ ký. Đây chính xác là những gì các nút xác minh blockchain thực hiện.

Sơ đồ chữ ký ngưỡng (TSS) là tên mà chúng tôi đặt cho sự kết hợp giữa tạo khóa phân tán (DKG) và phân phối chữ ký theo sơ đồ chữ ký ngưỡng.


Kết hợp TSS và blockchain

Cách tự nhiên mà TSS có thể được sử dụng trong blockchain là thay đổi ứng dụng khách blockchain để tạo khóa và chữ ký bằng TSS. Ở đây chúng tôi sử dụng thuật ngữ máy khách để chỉ một tập hợp các lệnh được thực thi bởi một nút đầy đủ. Trong ứng dụng thực tế, công nghệ TSS cho phép chúng ta thay thế tất cả các lệnh liên quan đến khóa riêng bằng các phép tính phân tán.

Để giải thích điều này chi tiết hơn, chúng tôi sẽ bắt đầu bằng phần mô tả nhanh về cách tạo địa chỉ mới trên cấu trúc chuỗi khối cổ điển.  Nói một cách đơn giản, chúng ta có thể tạo một địa chỉ mới bằng cách tạo khóa riêng và sau đó tính khóa chung từ khóa riêng. Cuối cùng, địa chỉ blockchain được lấy từ khóa chung.

Bây giờ bằng cách sử dụng TSS, chúng ta sẽ có một nhóm các bên cùng tính toán khóa chung. Mỗi bên tham gia nắm giữ một phần bí mật của khóa riêng (các chia sẻ riêng lẻ không được tiết lộ cho các bên tham gia khác). Sử dụng khóa chung, chúng ta có thể lấy địa chỉ theo cách tương tự như trong hệ thống truyền thống, điều này làm cho chuỗi khối có phần trung lập trong cách tạo địa chỉ. Ưu điểm ở đây là khóa riêng không còn là điểm lỗi duy nhất vì mỗi bên giữ một phần của nó. 

Điều tương tự có thể được thực hiện khi ký kết giao dịch. Trong trường hợp này, thay vì một bên ký bằng khóa riêng của mình, chúng tôi chạy trình tạo chữ ký phân tán giữa nhiều bên. Thậm chí mỗi bên có thể tạo ra một chữ ký hợp lệ miễn là có đủ người tham gia hành động trung thực. Chúng tôi lại chuyển từ tài khoản cục bộ (một điểm lỗi) sang tài khoản tương tác.

Điều quan trọng cần lưu ý là việc tạo các khóa phân tán có thể được thực hiện theo cách cho phép các loại quyền truy cập khác nhau vào chúng: cài đặt chung “t out of n” sẽ có thể chịu được tới t lỗi tùy ý trong các hoạt động liên quan đến khóa riêng mà không ảnh hưởng đến bảo mật.


TSS so với Đa chữ ký

Một số mạng blockchain cung cấp chức năng TSS như một phần tích hợp hoặc có thể lập trình của phần mềm. Chúng tôi gọi chức năng này là multisig hoặc multi-signature. Để hiểu rõ hơn về sự khác biệt, chúng ta có thể xem multisig như một TSS trong giai đoạn triển khai blockchain.

Nói cách khác, về cơ bản, cả multisig và TSS đều cố gắng đạt được các mục tiêu tương tự nhau nhưng TSS sử dụng mã hóa ngoài chuỗi trong khi multisig sử dụng trên chuỗi. Tuy nhiên, blockchain yêu cầu một phương thức mã hóa nhiều chữ ký, điều này có thể ảnh hưởng đến quyền riêng tư vì cấu trúc truy cập (số lượng người ký) bị lộ trên blockchain. Chi phí của giao dịch nhiều chữ ký sẽ cao hơn vì thông tin trên hai trang web khác nhau cũng cần được truyền đạt trên blockchain.

Trong TSS, thông tin chi tiết về những người ký kết được gộp lại thành một giao dịch thông thường, giúp giảm chi phí và duy trì quyền riêng tư. Mặt khác, Multisig có thể không tương tác, giải quyết vấn đề chạy lớp giao tiếp phức tạp giữa các trang web khác nhau.

Điểm khác biệt chính là blockchain multisig cần được triển khai lại trên mỗi blockchain và trong một số trường hợp hoàn toàn không được hỗ trợ. Ngược lại, TSS dựa trên mã hóa thuần túy nên luôn được hỗ trợ. Một bài viết tuyệt vời nêu ra sự khác biệt có thể được tìm thấy ở đây.


TSS so với chương trình chia sẻ bí mật Shamir

Sơ đồ chia sẻ bí mật Shamir (SSSS) cung cấp một cách phân tán để lưu trữ khóa riêng. Trong khi khóa riêng được lưu trữ, nó được lưu trữ ở nhiều vị trí. Có hai điểm khác biệt giữa SSSS và TSS:

  • Tạo khóa: Trong SSSS có một bên được gọi là “đại lý” chịu trách nhiệm tạo ra các chia sẻ bí mật của khóa. Điều này có nghĩa là tại thời điểm tạo khóa, khóa riêng được tạo ở một nơi và sau đó được nhà phân phối phân phối đến các địa điểm khác nhau. Nhưng trong TSS không có nhà phân phối vì vai trò của anh ta được phân phối sao cho khóa riêng hoàn chỉnh không bao giờ ở một nơi.

  • Ký tên: Trong SSSS, các bên phải xây dựng lại toàn bộ khóa riêng để ký, điều này lại dẫn đến một điểm lỗi mỗi khi cần chữ ký. Mặt khác, trong TSS, việc ký kết được thực hiện theo cách phân tán mà không tạo lại các cổ phần bí mật.

Như chúng ta thấy trong TSS, khóa riêng (đại diện cho tính bảo mật của hệ thống) không bao giờ ở một nơi trong suốt vòng đời của nó.


Thống đốc ngưỡng

Ví được xây dựng trên công nghệ TSS hơi khác một chút so với ví tiền điện tử truyền thống. Ví truyền thống thường tạo một cụm từ hạt giống và sử dụng nó để lấy địa chỉ một cách xác định. Sau này, người dùng có thể sử dụng cấu trúc phân cấp xác định (HD) để 1) truy cập các khóa riêng tương ứng với địa chỉ ví và ký giao dịch với chúng. 2) Để khôi phục tất cả các khóa ví bằng cụm từ hạt giống.

Trong ví ngưỡng, mọi thứ phức tạp hơn. Mặc dù có thể tạo kiến ​​trúc phân cấp xác định (HD), việc xây dựng nó phải được tính toán theo cách phân tán giống như một giao thức MPC khác. Các bên liên quan cần đưa ra quyết định chung về việc khóa nào sẽ được sử dụng tiếp theo. Nói cách khác, mỗi bên sẽ có tuyên bố ban đầu của riêng mình. Các câu lệnh hạt giống được tạo riêng biệt và không được kết hợp để không bên nào có thể suy ra khóa riêng từ câu lệnh hạt giống.

Ví dựa trên TSS cũng có một tính năng bảo mật thú vị cho phép xoay khóa riêng mà không thay đổi khóa chung và địa chỉ blockchain tương ứng. Xoay khóa riêng còn được gọi là Chia sẻ bí mật chủ động là một giao thức MPC khác lấy các chia sẻ bí mật làm đầu vào và xuất ra một tập hợp chia sẻ bí mật mới. Các chia sẻ bí mật cũ có thể bị xóa và các chia sẻ mới cũng có thể được sử dụng theo cách tương tự.

Kiến trúc này bổ sung thêm khía cạnh tạm thời cho bảo mật, điều đó có nghĩa là kẻ tấn công sẽ phải có mặt ở nhiều địa điểm cùng lúc để thử hack ví Threshold. Việc kết hợp các chia sẻ bí mật trước và sau khi xoay sẽ không mang lại cho kẻ tấn công bất kỳ quyền lực bổ sung nào nếu anh ta muốn giả mạo chữ ký. 

Nhược điểm của loại ví này là thiếu cụm từ hạt giống khiến nó không tương thích với các hệ thống ví khóa đơn. Vì vậy, điều quan trọng là phải quyết định bên nào sẽ giữ bí mật việc chia sẻ.

Có một số cách có thể như:

  • Gia công phần mềm TSS: Người dùng sẽ cho phép các máy chủ “n” thay mặt họ thực hiện tính toán. Thuê ngoài một cách hiệu quả việc tạo, quản lý và ký khóa cho các nhà cung cấp dịch vụ không phải là chủ sở hữu tài sản nhưng cung cấp một lớp bảo mật để đổi lấy một số ưu đãi.

  • Sử dụng nhiều thiết bị: Người dùng sẽ chạy TSS trên thiết bị mà họ sở hữu. Ví dụ: một bên sẽ là thiết bị IoT, một bên khác sẽ là người dùng điện thoại di động, bên thứ ba khác sẽ là máy tính xách tay, v.v.

  • Hệ thống kết hợp: TSS sẽ được vận hành sao cho một số bên được kiểm soát bởi các nhà cung cấp dịch vụ bên ngoài trong khi một số bên chạy trên phần cứng của riêng họ.

Phương pháp đầu tiên giảm tải tính toán TSS nặng nề ở phía máy khách người dùng. Mặt khác, các nhà cung cấp dịch vụ có thể thông đồng (chúng tôi giả định rằng một số lượng lớn trong số họ không bị tấn công cùng lúc nhưng trên thực tế họ có thể bị tấn công cùng lúc) và đánh cắp tài sản của người dùng.

Phương pháp thứ hai cung cấp cho người dùng toàn quyền kiểm soát nhưng khiến quá trình giao dịch trở nên cồng kềnh vì bạn cần nhiều thiết bị kết nối Internet và tham gia vào tài khoản TSS.

Tùy chọn thứ ba là tùy chọn tốt nhất trong cả hai tùy chọn vì nó cung cấp cho người dùng một cách dễ dàng và nhanh chóng để thực hiện giao dịch mà không ảnh hưởng đến việc thực hiện giao dịch mà không có sự cho phép của người dùng.


TSS và hợp đồng thông minh 

Trong nhiều năm, các nhà nghiên cứu đã tìm thấy nhiều ứng dụng của chữ ký số, nhưng một số ứng dụng không có gì đáng ngạc nhiên. Như đã đề cập trước đó, TSS là một mã hóa nguyên thủy có thể tăng cường bảo mật một cách đáng kể. Trong bối cảnh blockchain, chúng ta có thể nói rằng nhiều chức năng có thể được thay thế bằng mật mã dựa trên TSS. Các ứng dụng phi tập trung, giải pháp Lớp 2 để mở rộng quy mô, hoán đổi nguyên tử, xáo trộn, kế thừa, v.v. có thể được xây dựng trên khung TSS. Điều này cuối cùng sẽ cho phép các hoạt động hợp đồng thông minh tốn kém và rủi ro được thay thế bằng các lựa chọn thay thế rẻ hơn và đáng tin cậy hơn.

Để đưa ra một số ví dụ cụ thể: Multi-Hop Locks sử dụng chữ ký của hai bên một cách thông minh và có thể được sử dụng để hoán đổi mạng Lightning của Bitcoin lấy mạng kênh thanh toán riêng tư và an toàn hơn. ShareLock có lẽ là giải pháp xáo trộn chuỗi khối Ethereum rẻ nhất được xây dựng dựa trên xác minh bằng chữ ký ngưỡng duy nhất.


Rủi ro

Trong hai năm qua, số lượng ứng dụng TSS đã tăng lên đáng kể. Nhưng giống như bất kỳ công nghệ tương đối mới nào, nó vẫn có một số hạn chế và mối lo ngại. So với mật mã khóa công khai truyền thống, giao thức TSS có thể rất phức tạp và chưa được “thử nghiệm thực tế”. TSS thường yêu cầu các giả định mật mã bổ sung, yếu hơn so với chữ ký số đơn giản. Kết quả là các vectơ tấn công mật mã hiện đang được phát hiện mà trước đây không tồn tại trong cài đặt truyền thống (xem phần trình bày này từ Hội nghị Breaking Bitcoin 2019). Các kỹ sư bảo mật và nhà mật mã ứng dụng có thể giúp triển khai TSS một cách an toàn vào hệ thống của bạn.

Về mặt tích cực, các ứng dụng hiện có và mới đang trở nên mạnh mẽ hơn nhờ đóng góp chất lượng ngày càng tăng, đánh giá ngang hàng, kiểm tra chéo và cải tiến hiệu suất tính toán bằng thuật toán.


Suy nghĩ kết luận

Trong bài viết này, chúng tôi giới thiệu những kiến ​​thức cơ bản về Lược đồ chữ ký ngưỡng (TSS), một phương pháp mã hóa nguyên thủy tuyệt vời có khả năng thay đổi đáng kể cách sử dụng chuỗi khối.

Vì bài viết này không thảo luận về Ngưỡng ECDSA có thể được sử dụng trên Binance Chain và Bitcoin nên những người quan tâm có thể đọc các bài viết trong danh sách sau. Ngoài ra, nếu bạn muốn thử một số triển khai TSS, bạn có thể tìm mã cho ví Binance Chain của 2 bên tại đây hoặc dùng thử ví ZenGo sử dụng phương pháp kết hợp cung cấp ví Binance Chain của 2 bên.


Đọc sâu:

  • Ký kết ECDSA hai bên nhanh chóng, an toàn

  • ECDSA đa bên an toàn nhanh chóng với khóa phân tán thực tế và ứng dụng cho lưu ký tiền điện tử

  • ECDSA hai bên từ Hash Proof Systems và Efficient Instances

  • Ngưỡng đa bên nhanh ECDSA với thiết lập không cần tin cậy nhanh

  • Ngưỡng bảo mật hai bên ECDSA từ Giả định ECDSA

  • Ngưỡng ECDSA từ Giả định ECDSA: Trường hợp đa phương