Các cá nhân có quyền kiểm soát trực tiếp và duy nhất (và quyền sở hữu) đối với khóa riêng tư của họ (và tài sản tiền điện tử) - ví tiền điện tử tuân thủ triết lý này được gọi là ví "không giam giữ", nghĩa là người ngoài không thể truy cập khóa.
Cho đến khi xảy ra hàng loạt vụ hack ví "không giam giữ" - khóa cá nhân Wintermute tháng 9 bị "bẻ khóa" và mất 160 triệu USD, hacker ví Slope tháng 8 xâm nhập hơn 8.000 tài khoản, 2020 Trinity lấy cắp hơn 2 triệu USD vụ hack Ví IOTA , vụ hack ví Parity đã đánh cắp 150.000 ETH vào năm 2017 và các lỗ hổng ví phần cứng khác nhau làm mờ ranh giới bảo mật giữa ví lưu ký và ví không lưu ký. Trong những trường hợp như vậy, nạn nhân tin rằng họ đang sử dụng ví không giam giữ, chỉ để phát hiện ra rằng khóa riêng đã bị đánh cắp.
Trên thực tế, ví không giam giữ không thực sự cung cấp cho người dùng toàn quyền kiểm soát khóa của họ, bởi vì ví thường được tạo và chạy bởi phần cứng và phần mềm của người khác. Người dùng ngày càng tin tưởng các sản phẩm của bên thứ ba. Các sản phẩm này tích hợp hoặc sử dụng giao diện dòng lệnh blockchain, phần mềm và thiết bị ví, nền tảng tập trung, mã hợp đồng thông minh, ứng dụng phi tập trung và mỗi điểm tiếp xúc đều làm tăng rủi ro. Tất cả những điểm kết hợp này góp phần phá vỡ những ảo tưởng màu hồng mà mọi người có về khái niệm "không được quản lý".
"Không được quản lý" thực sự có thể đề cập đến nhiều yếu tố được quản lý.
Nói chung, quản lý khóa (cơ sở của bảo mật ví) có thể được chia thành ba hướng:
- tạo khóa (tạo khóa mã hóa);
- lưu trữ khóa (bảo vệ các phím ở trạng thái nghỉ);
- Sử dụng khóa (sử dụng ủy quyền khóa).
Mỗi hướng có điểm rủi ro duy nhất.
Bài viết này sẽ giới thiệu các đặc điểm và thiếu sót của nền tảng lưu ký và bảo mật ví tiền mã hóa, đề cập đến các lĩnh vực cần chú ý và phát triển nhất trong tương lai và nhằm mục đích giúp người dùng Web3 hiểu rõ hơn về sự phức tạp của việc bảo vệ tài sản mã hóa theo cách không giam giữ . Ngoài ra, chúng tôi cũng muốn giúp các kỹ sư xác định và tránh các điểm lỗi phổ biến trong quá trình phát triển ví và sử dụng nhiều năm kinh nghiệm toàn diện của chúng tôi về các hệ thống mã hóa Docker, Anchorage, Facebook và a16z để giúp người dùng và các bên tham gia dự án tránh các sự cố bảo mật.
tạo khóa
Tính bảo mật của bước tạo khóa là rất quan trọng. Ở giai đoạn này, có ba vấn đề bao quát cần ghi nhớ: sử dụng mã đáng tin cậy, triển khai mã chính xác và xử lý đầu ra an toàn.
Báo cáo kiểm tra được xuất bản bởi một số nhà cung cấp ví trên trang web chính thức hoặc kho lưu trữ Github của họ. Hãy tự nghiên cứu và cố gắng xác định xem có một công ty uy tín đứng sau chiếc ví này hay không. Nếu thông tin khan hiếm, hoạt động quan trọng của người dùng và nhà phát triển có thể là các chỉ số hữu ích.
Thực hiện theo các hướng dẫn này để giảm thiểu rủi ro. Nếu ví của bạn không thực hiện được các bước kiểm tra sau, hãy bỏ chạy.
Không sử dụng ví chưa được thử nghiệm đủ lâu
Mã tạo nên ví phải có danh tiếng tốt. Chọn phần mềm được viết kém hoặc cố gắng phát triển các giải pháp thay thế của riêng bạn, có thể dẫn đến "sự kiện thảm khốc" chẳng hạn như rò rỉ khóa hoặc tiết lộ thông tin bí mật cho các bên trái phép.
Sử dụng ví có nhiều bảo hiểm
Ngay cả khi mã sử dụng thư viện mật mã có uy tín, nó phải được tích hợp đúng cách. Phần mềm được kiểm định thường mặc định đúng các thông số, nhưng trong quá trình thực thi vẫn có thể phát sinh lỗi. Đối với một số quy trình tạo khóa nhất định, chẳng hạn như nhiều thuật toán tính toán đa bên (MPC), trong đó nhiều khóa riêng lẻ phải được tạo và đối chiếu — hoặc các đoạn khóa, các đoạn khóa — ví phải tuân theo một giao thức do thuật toán chỉ định. Thuật toán cũng có thể yêu cầu nhiều vòng tính toán và khóa làm mới, những khóa này phải được ví tích hợp đúng cách để duy trì tính bảo mật của tiền.
Sử dụng ví "giữ bí mật"
Giai đoạn cuối cùng của quá trình tạo khóa liên quan đến hoạt động thực tế và đầu ra của phần mềm. Lưu ý khóa được tạo ở đâu và ở dạng nào. Lý tưởng nhất là các khóa phải được tạo trong phần cứng độc lập và thông tin phải được mã hóa bằng thuật toán đáng tin cậy.
Các khóa của ví Slope, đã bị hack vào mùa hè này, được tạo để đăng nhập vào một máy chủ bên ngoài ở dạng văn bản rõ ràng. Loại lỗ hổng bảo mật này có thể xuất hiện trong quá trình kiểm tra mã hoặc trong quá trình triển khai nguồn mở. Thiếu tính minh bạch trong ví – được đặc trưng bởi mã nguồn đóng và không có kiểm toán bảo mật của bên thứ ba nào có sẵn cho công chúng sẽ gây ra cảnh báo.
lưu trữ chìa khóa
Sau khi các khóa được tạo, chúng cần được ẩn ở đâu đó (không ở dạng văn bản gốc, luôn được mã hóa). Tuy nhiên, việc chỉ sở hữu thiết bị lưu trữ khóa không nhất thiết đồng nghĩa với quyền sở hữu và kiểm soát khóa. Nhiều yếu tố phải được xem xét, chẳng hạn như bảo mật chuỗi cung ứng của thiết bị, cách thiết bị được kết nối và các thành phần khác mà thiết bị tương tác. Ngoài ra, mỗi phương pháp lưu trữ có sự đánh đổi riêng giữa bảo mật, khả năng truy cập, khả năng bảo trì và tính khả dụng.
Dưới đây, chúng tôi đã phân loại các danh mục bảo mật ví phổ biến nhất theo mức độ rủi ro đã biết có liên quan của chúng.
Rủi ro cao: Ví nóng
Tất cả những thứ khác đều như nhau, ví lạnh an toàn hơn ví nóng, nhưng chúng cũng khó sử dụng hơn. Một chiếc ví được kết nối với bất kỳ mạng nào có nhiều khả năng bị tấn công hơn vì nó mang lại cho những kẻ tấn công nhiều cơ hội hơn để tìm và khai thác các lỗ hổng.
Có hai hình thức kết nối ví nóng:
- Phần mềm kết nối: cơ sở dữ liệu trực tuyến hoặc bộ nhớ ứng dụng máy chủ web, tiện ích mở rộng trình duyệt
Đây là những rủi ro cao nhất. Vì phần mềm ví, dù được lưu trữ hay không, đều có quyền truy cập trực tiếp vào các khóa—tất cả đều được kết nối với internet bên ngoài. Lý tưởng nhất là các khóa phải được mã hóa và bộ khóa khác được sử dụng để mã hóa chúng phải được lưu trữ trong hệ thống quản lý khóa chuyên dụng (KMS) với các biện pháp kiểm soát truy cập bị hạn chế cao như chuỗi khóa hệ điều hành hoặc hệ thống quản lý khóa đám mây.
- Phần cứng được kết nối: thiết bị chuyên dụng, vỏ bảo mật di động, mô-đun bảo mật phần cứng nội tuyến (HSM)
Phần cứng được kết nối thường được coi là ít rủi ro hơn phần mềm được kết nối, nhưng nó vẫn không an toàn bằng kho lạnh. Trong phần cứng được kết nối, các khóa chỉ được tạo trong các thiết bị phần cứng chuyên dụng. Sau đó, chúng có thể được kết nối với mạng nội bộ hoặc mạng công cộng. Các thiết bị như vậy thường đảm nhận nhiều trách nhiệm liên quan đến quản lý khóa, bao gồm tạo khóa, ký và bảo mật kho lưu trữ.
Ngoài ra còn có ví phần cứng như Trezor và Ledger. Ngoài ra còn có các mô-đun bảo mật phần cứng hoặc HSM, thường được sử dụng trong các cài đặt kinh doanh truyền thống hơn, chẳng hạn như các mô-đun xử lý dữ liệu nhạy cảm như thanh toán bằng thẻ tín dụng.
Các thiết bị chỉ an toàn như chuỗi cung ứng sản xuất và cấu hình chúng. Khi cân nhắc kết nối phần cứng, tốt nhất bạn nên mua thiết bị trực tiếp từ các nhà cung cấp đáng tin cậy. Được vận chuyển trực tiếp từ nguồn, đảm bảo gói hàng không bị hư hại. Cũng có thể xác minh phiên bản phần sụn và cấu hình trước khi sử dụng.
Tất nhiên, luôn có khả năng ví phần cứng bị đánh cắp hoặc truy cập trái phép sau này. Trước những mối đe dọa này, điều quan trọng là phải đảm bảo rằng ví phần cứng cũng có một lớp kiểm soát truy cập an toàn — các biện pháp bảo vệ để đảm bảo chúng không ký bất kỳ và tất cả các giao dịch một cách mù quáng. Các biện pháp kiểm soát có thể bao gồm các yêu cầu về mật khẩu, lời nhắc yêu cầu quyền rõ ràng cho từng bước của giao dịch và tóm tắt đơn giản mô tả hoạt động thực tế của giao dịch. Ngoài ra, hầu hết các ví phần cứng đều hỗ trợ mã hóa khóa riêng, còn được gọi là "gói khóa".
Ít rủi ro hơn: Ví lạnh
Tất cả những thứ khác đều bình đẳng, ví lạnh thường được coi là an toàn hơn ví nóng, mặc dù nhìn chung chúng cũng không dễ sử dụng. Ví lạnh không được kết nối với bất kỳ mạng nội bộ hoặc mạng công cộng nào.
Hãy xem xét một số tùy chọn ví lạnh:
- Phần mềm ngoại tuyến: Ứng dụng máy chủ ngoại tuyến
Vì kẻ tấn công có thể đánh cắp hoặc đưa máy lên mạng bất cứ lúc nào, nên ví lạnh phải được thiết kế để bảo mật khi trực tuyến. Phần cứng có mục đích đặc biệt như HSM rất được khuyến khích vì chúng thường cung cấp nhiều quyền kiểm soát hơn so với phần mềm kết nối.
- Phần cứng ngoại tuyến: Ví phần cứng ngoại tuyến, Mô-đun bảo mật phần cứng ngoại tuyến (HSM)
Giải pháp này được coi là an toàn nhất. Tương tự như các danh mục trước, chúng ta nên cho rằng phần cứng có thể bị đánh cắp và lấy trực tuyến. Do đó, như đã thảo luận trước đó, các hệ thống này phải bao gồm lớp kiểm soát truy cập được triển khai đúng cách. Nhiều nhà cung cấp HSM yêu cầu một số thẻ thông minh vật lý nhất định phải được tập hợp lại với nhau trước khi mở khóa truy cập. Ngay cả khi thiết bị không có màn hình hiển thị, nó sẽ cung cấp một số cách để người dùng xác minh chi tiết giao dịch.
Vì ví lạnh hoặc ví ngoại tuyến là loại an toàn nhất nên hầu hết các quỹ được quản lý bởi các công ty lớn đều được lưu trữ theo cách này, chẳng hạn như Coinbase, Gemini, Kraken, v.v. và Anchorage. Nhiều người trong số những người chơi này cũng lựa chọn một tuyến phòng thủ khác -- sao lưu và phục hồi, trong trường hợp họ mất quyền truy cập hoặc máy bị hư hỏng, bị đánh cắp hoặc bị phá hủy.
sao lưu và khôi phục
Các khóa ký phải được sao lưu sau khi mã hóa. Sự lặp lại của khóa ký mật mã và khóa gói khóa là rất quan trọng. Các phương pháp sao lưu khóa ký khác nhau, nhưng luôn nên chọn các giải pháp dựa trên phần cứng.
Đối với ví phần cứng, bản sao lưu thường bao gồm một hạt giống văn bản đơn giản mà từ đó khóa cá nhân được lấy. Các khóa mã hóa tiêu chuẩn có một cơ chế có thể lấy được các khóa được mã hóa bằng kiểm soát truy cập theo mặc định. Các khóa có thể được nhập vào các HSM khác nếu các điều khiển truy cập được đáp ứng. Một số lượng lớn các HSM cũng có thể cung cấp một khóa mã hóa chung bắt nguồn từ một số lượng lớn các thẻ thông minh. Việc tách biệt phần cứng khỏi các vật liệu quan trọng theo cách này giúp tránh được các điểm lỗi đơn lẻ.
Cuối cùng, có những yếu tố con người để xem xét. Cơ chế khôi phục phải có khả năng chịu được tình trạng không có mặt tạm thời hoặc vĩnh viễn của bất kỳ cá nhân nào tham gia vào hoạt động quản lý tài khoản. Các cá nhân nên đảm bảo rằng có một cách để lấy chìa khóa trong trường hợp mất điện hoặc trường hợp khẩn cấp khác. Đồng thời, các hoạt động nhóm nên xác định một số người có thể tiếp tục hoạt động trong trường hợp khẩn cấp.
sử dụng phím
Sau khi các khóa được tạo và lưu trữ, chúng có thể được sử dụng để tạo chữ ký số cho phép giao dịch. Sự kết hợp giữa phần mềm và phần cứng càng lớn thì rủi ro càng lớn. Để giảm thiểu rủi ro, các ví phải tuân thủ các nguyên tắc ủy quyền và xác thực sau đây.
Tin tưởng, nhưng cũng xác minh
Ví nên yêu cầu xác minh. Nói cách khác, danh tính của người dùng phải được xác minh và chỉ các bên được ủy quyền mới có quyền truy cập vào nội dung của ví. Biện pháp bảo mật phổ biến nhất ở đây là mã PIN hoặc cụm mật khẩu. Các hình thức xác thực nâng cao hơn có thể bao gồm sinh trắc học hoặc phê duyệt dựa trên mật mã khóa công khai, chẳng hạn như chữ ký mật mã từ nhiều thiết bị bảo mật khác.
Không sử dụng ví chưa được thử nghiệm đủ lâu
Ví nên sử dụng thư viện mã hóa âm thanh. Thực hiện một số nghiên cứu để đảm bảo rằng chúng được kiểm tra và bảo mật để tránh rò rỉ tài liệu quan trọng hoặc mất hoàn toàn khóa riêng tư. Thêm vấn đề, ngay cả những thư viện đáng tin cậy cũng có thể có giao diện không an toàn, như trường hợp của các thư viện Ed25519 gần đây.
tái sử dụng nonce
Một cạm bẫy sử dụng khóa đã được nghiên cứu kỹ lưỡng là việc sử dụng lại không chủ ý các tham số chữ ký mật mã nhất định. Một số sơ đồ chữ ký có thể yêu cầu nghĩa một lần, "số chỉ được sử dụng một lần" (số tùy ý), nghĩa là được sử dụng một lần trong hệ thống. Do đó, hãy đảm bảo rằng bạn đang sử dụng thư viện mã hóa âm thanh. Nhưng hướng tấn công này cũng đã được khai thác trong các vụ hack nổi tiếng bên ngoài Web3, chẳng hạn như vụ hack Sony PlayStation 3 vào năm 2010.
một chìa khóa một lần sử dụng
Một phương pháp hay nhất khác là tránh sử dụng lại cùng một khóa cho nhiều mục đích. Ví dụ: nên giữ các khóa riêng biệt để mã hóa và ký. Điều này tuân theo nguyên tắc "đặc quyền tối thiểu" trong các tình huống bị xâm phạm, có nghĩa là quyền truy cập vào bất kỳ tài sản, thông tin hoặc hoạt động nào chỉ nên được giới hạn ở những bên hoặc mã thực sự cần thiết để hệ thống hoạt động. Tùy thuộc vào cách sử dụng, các khóa khác nhau có các yêu cầu khác nhau để sao lưu và quản lý truy cập. Trong hệ sinh thái Web3, cách tốt nhất là tách các khóa và cụm từ gốc giữa tài sản và ví để việc xâm phạm một tài khoản không ảnh hưởng đến các tài khoản khác.
tóm tắt
Quản lý khóa là một vấn đề hóc búa với nhiều bộ phận, công đoạn tương tác từ khâu tạo khóa, lưu trữ đến sử dụng. Bản chất lưu ký hoặc không lưu ký của quyền sở hữu khóa không rõ ràng trắng đen như cách hiểu thông thường vẫn hiểu. Tình hình trở nên phức tạp do có nhiều bộ phận chuyển động liên quan đến quản lý khóa, từ tạo khóa, lưu trữ đến sử dụng. Mọi phần cứng hoặc phần mềm trên chuỗi đều có rủi ro, thậm chí làm lộ các tùy chọn ban đầu không phải là một phần của ví lưu ký trước rủi ro lưu ký.
Trong tương lai, chúng tôi hy vọng sẽ thực hiện nhiều công việc phát triển hơn để bảo vệ ví khỏi các cuộc tấn công và giảm rủi ro đã thảo luận ở trên. Các lĩnh vực để cải thiện bao gồm:
- Chia sẻ các thư viện ký giao dịch và quản lý khóa nguồn mở an toàn trên các hệ điều hành di động và máy tính để bàn;
- Khung phê duyệt giao dịch mã nguồn mở được chia sẻ.
Ngoài ra còn có các phát triển mã nguồn mở và được chia sẻ:
- Triển khai các thư viện tạo khóa an toàn tốt nhất trên các phụ trợ lưu trữ khác nhau (mã hóa trên đĩa, phần cứng bảo mật, v.v.);
- Quản lý khóa và thư viện ký giao dịch cho hệ điều hành di động và máy tính để bàn;
- Khung quy trình phê duyệt giao dịch, cho phép xác minh chuyên biệt như sinh trắc học, phê duyệt dựa trên PKI, khôi phục ủy quyền, v.v.