Trí thông minh dữ liệu tạo

Cách Ví Kraken giải quyết các thách thức trong bảo mật tiền điện tử di động

Ngày:

Chúng tôi tin rằng ví tiền điện tử di động an toàn nhất là ví có thể khắc phục được những hạn chế cố hữu của hệ điều hành di động. Ví dụ: trên iOS, CryptoKit của Apple không hỗ trợ đường cong elip secp256k1, một tiêu chuẩn cho Bitcoin, Ethereum và nhiều blockchain khác.

Hạn chế này hạn chế các nhà phát triển sử dụng yếu tố bảo mật của thiết bị để lưu trữ khóa và ký giao dịch. Do đó, ví tiền điện tử di động được phân loại là ví nóng vì chúng đều được kết nối với internet và ký các giao dịch bên ngoài yếu tố bảo mật bằng cách sử dụng phần mềm triển khai thuật toán mã hóa.

Điều này có nghĩa là các khóa riêng tư phải được hiển thị – ít nhất là trong quá trình ký – trong bộ nhớ của môi trường ứng dụng được đóng hộp cát. Điều này khiến họ dễ gặp phải các mối đe dọa tiềm ẩn hơn so với ví sử dụng yếu tố bảo mật để ký giao dịch.

Despite the inability to perform the signing on the secure elements directly, which would offer increased protection, we have committed to providing an open-source mobile crypto wallet that prioritizes security, transparency and user control.

Kiến trúc bảo mật của chúng tôi được xây dựng nhằm mục đích:

  • Hỗ trợ nhiều blockchain
  • Tạo khóa riêng với entropy cao, một thước đo không thể đoán trước giúp tăng cường bảo mật
  • Tận dụng mật mã đã được thử nghiệm trong chiến đấu để mã hóa an toàn khóa riêng của người dùng, tận dụng các tính năng bảo mật phần cứng và hệ điều hành bảo mật của điện thoại di động
  • Cung cấp khả năng bảo mật nâng cao bằng mật khẩu do người dùng tạo cho những người dùng nâng cao muốn có mức mã hóa bổ sung (ngoài tính năng bảo vệ chuỗi khóa hệ điều hành cho khóa giải mã)
  • Tạo nền tảng vững chắc cho việc kết hợp các loại hình quản lý khóa mới trong tương lai, chẳng hạn như ví phần cứng và hệ thống dựa trên số đại biểu MPC

Lợi thế nguồn mở

Là một trong những nguyên tắc bảo mật cơ bản của nó, Ví Kraken là phần mềm mã nguồn mở và miễn phí, phân phối dưới giấy phép MIT. Xây dựng một ví mới ngay từ đầu, điều quan trọng đối với chúng tôi là giúp thúc đẩy hệ sinh thái phân tán và nguồn mở.

Nếu không có mã nguồn mở, Ví Kraken sẽ cần độ tin cậy lớn mà không minh bạch. Điều này sẽ mang lại cho khách hàng ít sự bảo vệ hơn; bạn không thể tự mình xác minh, sửa đổi hoặc chạy ứng dụng khách nếu bạn muốn. “Đừng tin tưởng, hãy xác minh!” không chỉ là châm ngôn của ngành mà còn là một trong những nguyên tắc chỉ đạo của chúng tôi.

Nguồn mở phần mềm của chúng tôi đáp ứng hai mục tiêu cơ bản mà chúng tôi đặt ra ban đầu cho sản phẩm này: giảm thiểu độ tin cậy có thể kiểm chứng, kiểm tra được:

  • Khả năng xác minh: Khả năng xác minh rằng các giả định bảo mật được trình bày trong bài đăng trên blog này là đúng. Ai cung co thể nhìn vào mã nguồn để hiểu cụ thể những gì được và không được thực hiện trong ví này. 
  • Khả năng kiểm toán: Khả năng xác minh rằng kết quả triển khai bảo mật của chúng tôi là chính xác và báo cáo lại khi kết quả không đúng. Chúng tôi đã thuê các nhóm nội bộ và bên ngoài để thực hiện kiểm tra bảo mật nhiều lần trước khi phát hành. Trong tương lai, bất kỳ ai cũng có thể kiểm tra mã và tạo báo cáo về những phát hiện của họ.

Tạo khóa và nhập khóa

React Native, mặc dù là một công cụ mạnh mẽ nhưng lại không có mô-đun tiền điện tử tích hợp. Để giải quyết vấn đề này, chúng tôi đã sử dụng triển khai pure-js (trình duyệt mật mã) của mô-đun mật mã của NodeJS. Phương thức crypto.randomBytes() – tạo ra các byte ngẫu nhiên thực tế mà chúng ta yêu cầu trong quá trình tạo khóa – được xử lý bởi phản ứng-bản địa-nhận-ngẫu nhiên-giá trị polyfill.

React-native-get-random-values ​​sử dụng mã gốc để sử dụng Trình tạo số giả ngẫu nhiên bảo mật bằng mật mã (CSPRNG) có sẵn trên thiết bị để tạo số ngẫu nhiên. Trên thực tế tất cả các thiết bị hiện đại, trình tạo số ngẫu nhiên này được hỗ trợ bởi trình tạo số ngẫu nhiên phần cứng an toàn.

Trong quá trình khởi tạo ví, chúng tôi rút entropy từ CSPRNG và chuyển đổi nó thành hạt giống ghi nhớ bằng cách sử dụng các gói npm được thiết lập tốt (BIP32, BIP39).

Khóa được chuyển đổi, lưu trữ và hiển thị cho người dùng theo tiêu chuẩn BIP39, cung cấp phương pháp ghi nhớ dễ sao lưu với khả năng tương tác cho hầu hết các ví trong hệ sinh thái. Tính năng nhập hỗ trợ phục hồi các hạt giống tương thích BIP39, mang lại khả năng tương tác tốt nhất trong hệ sinh thái. 

Quản lý chính 

Ví Kraken chứa hai giá trị bí mật – hạt giống và giá trị ghi nhớ – và nhiều giá trị không bí mật (nhưng vẫn riêng tư) như địa chỉ ví, tên ví và mô tả giao dịch.

Tài liệu khóa riêng (hạt giống/ghi nhớ) được lưu trữ trong Chuỗi khóa (trên iOS) và Kho khóa (trên Android). Tài liệu khóa công khai và dữ liệu không nhạy cảm (khóa chung, địa chỉ và mô tả mở rộng) được lưu trữ trong cơ sở dữ liệu được mã hóa của ứng dụng (sử dụng Vương quốc).

Có nhiều biện pháp kiểm soát bảo mật bảo vệ dữ liệu:

  • Khóa ứng dụng: Chuỗi 64 byte được tạo ngẫu nhiên được lưu trữ trong Chuỗi khóa hoặc Kho khóa. Quyền truy cập vào bí mật được bảo vệ bằng các yêu cầu về sự hiện diện của người dùng – xác thực sinh trắc học hoặc mật mã.
  • Mật khẩu: Do người dùng cung cấp và không được lưu giữ trên thiết bị. Thay vào đó, người dùng phải cung cấp mật khẩu theo cách thủ công bất cứ khi nào ứng dụng yêu cầu. Ví xác định xem có cần mật khẩu hay không bằng cách tham khảo hai cờ (is_storage_encrypted và is_seed_encrypted) được lưu trữ trong Chuỗi khóa hoặc Kho khóa. Thuật toán Argon2 được sử dụng làm hàm dẫn xuất khóa.
  • Mã hóa cơ sở dữ liệu: Cơ sở dữ liệu (Realm) dùng để lưu trữ dữ liệu không bí mật. Dữ liệu được mã hóa bằng khóa 64 byte ngẫu nhiên.
  • Cơ chế khóa: Việc nhập mật khẩu không chính xác sẽ gây ra sự chậm trễ trước khi có thể thực hiện các lần thử mật khẩu tiếp theo. Cơ chế này ngăn chặn hiệu quả các cuộc tấn công mật khẩu bạo lực. Thông tin liên quan đến các tham số khóa, chẳng hạn như số lần thử và thời gian trì hoãn, được lưu trữ an toàn trong Chuỗi khóa hoặc Kho khóa.

Khóa mã hóa hạt giống, ghi nhớ và cơ sở dữ liệu luôn được lưu trữ ở dạng mã hóa

  • Khi không có biện pháp bảo vệ nào được kích hoạt: Khóa mã hóa hạt giống, ghi nhớ và Realm được lưu trữ trực tiếp trong Chuỗi khóa hoặc Kho khóa mà không có kiểm soát truy cập hiện diện của người dùng.
  • Khi khóa ứng dụng được kích hoạt: Bản ghi nhớ và hạt giống trước tiên được mã hóa bằng bí mật khóa ứng dụng, sau đó được lưu trữ an toàn trong Chuỗi khóa hoặc Kho khóa. Khóa mã hóa Realm cũng được lưu trữ trực tiếp trong Chuỗi khóa hoặc Kho khóa.
  • Khi kích hoạt tính năng bảo vệ bằng mật khẩu: Bản ghi nhớ và hạt giống được mã hóa bằng mật khẩu, trong khi khóa mã hóa Realm chỉ được mã hóa bằng mật khẩu nếu is_storage_encrypted được đặt thành true.
  • Khi cả khóa ứng dụng và bảo vệ bằng mật khẩu đều được bật: Bản ghi nhớ và hạt giống được mã hóa bằng cả mật khẩu (thứ nhất) và khóa ứng dụng (thứ hai). Khóa mã hóa Realm chỉ được mã hóa bằng mật khẩu và chỉ khi is_storage_encrypted được đặt thành true.

Sử dụng chính

Hạt giống/bản ghi nhớ được lưu trữ trong Chuỗi khóa hoặc Kho khóa và đóng một vai trò quan trọng trong các hoạt động mã hóa. Khi cần tạo một địa chỉ ví mới hoặc cần ký một giao dịch, chúng tôi sẽ lấy thông tin cần thiết, chẳng hạn như khóa riêng, từ hạt giống này.

Tuy nhiên, điều quan trọng cần lưu ý là khóa riêng phải được tải vào bộ nhớ trong các thao tác này. Sự cần thiết này xuất phát từ những hạn chế mà chúng tôi đã đề cập trước đó về ví di động và việc thiếu quyền truy cập trực tiếp vào yếu tố bảo mật để ký giao dịch.

  • Ký giao dịch (gửi mã thông báo)
  • Ký dữ liệu WalletConnect (xử lý các yêu cầu phiên)
  • Thêm ví mới
  • Kích hoạt chuỗi testnet (thêm ví testnet)
  • Hiển thị ghi nhớ
  • Xác minh khả năng ghi nhớ
  • Bật và tắt khóa ứng dụng
  • Kích hoạt và vô hiệu hóa mật khẩu

Xác thực sinh trắc học bổ sung được thực hiện cho các chức năng sau:

  • Bật khóa ứng dụng
  • Xóa tất cả dữ liệu
  • Xóa ví (tài khoản)
  • Kích hoạt hoặc vô hiệu hóa mật khẩu (ngoài việc truy xuất khóa ứng dụng)
  • Mở ứng dụng
  • Di chuyển ứng dụng lên foreground
  • Xem khóa công khai mở rộng
  • Kết nối với ứng dụng phi tập trung (dApp)

Ngoài ra, mật khẩu có thể được yêu cầu để mở ứng dụng. Móc khóa và Kho khóa luôn được sử dụng thông qua Reac-bản địa-keychain vỏ bánh:

  • Trình bao bọc tạo khóa mới trong Chuỗi khóa hoặc Kho khóa cho mọi mục
  • Trình bao bọc chịu trách nhiệm chuyển các cờ cấu hình chính xác cho Chuỗi khóa và Kho khóa
  • Ví luôn yêu cầu trình bao bọc định cấu hình các cờ để thiết bị phải được mở khóa để truy cập vào khóa
  • Kiểm tra sự hiện diện của người dùng (sinh trắc học) được định cấu hình dựa trên thời gian và kiểm tra có hiệu lực trong 5 giây; việc kiểm tra sự hiện diện của người dùng không được thực hiện cho mỗi lần truy cập

Thuật toán mã hóa giống nhau cho tất cả các mục:

  • Khóa được lấy từ Argon2id từ một bí mật được chuẩn hóa NFC
  • Muối cho Argon2id là ID duy nhất của thiết bị
  • Chế độ mã hóa là AES-GCM
  • Vectơ khởi tạo (IV) cho AES là 16 byte ngẫu nhiên
  • Thẻ xác thực cho AES bắt buộc phải dài 16 byte

Ký kết giao dịch

Ngoài các biện pháp được đề cập trước đây liên quan đến lưu trữ khóa, sinh trắc học và bảo vệ mật khẩu, việc ký giao dịch vẫn là một lĩnh vực trọng tâm cần được cải tiến liên tục. Bước đầu tiên, chúng tôi đã triển khai một số biện pháp đáng chú ý trong lĩnh vực này, bao gồm:

Mô phỏng giao dịch

Chúng tôi sử dụng các dịch vụ API bên ngoài (chẳng hạn như Blowfish và những người khác) để kiểm tra mức độ “nghiêm trọng” có thể có mà giao dịch có thể mang lại cho người dùng (điểm rủi ro). Điều này đi từ toàn màn hình đối với các giao dịch độc hại có thể xảy ra (hoặc ký tin nhắn) đến cảnh báo về các mức độ thận trọng khác nhau mà người dùng nên có trước khi ký hoặc xác nhận giao dịch. 

Các biện pháp khác bao gồm:

  • Xác thực địa chỉ để đảm bảo bạn không gửi sai địa chỉ
  • Các địa chỉ luôn hiển thị toàn bộ để đảm bảo người dùng không bị nhắm mục tiêu vào các cuộc tấn công cụ thể xung quanh thành phần địa chỉ
  • Xác thực và cảnh báo mạng để đảm bảo người dùng không gửi nhầm mạng
  • Kiểm tra mức phí hợp lý để đảm bảo người dùng không trả quá nhiều cho một giao dịch

Quyền riêng tư trên mạng

Để bảo vệ quyền riêng tư và dữ liệu cá nhân của người dùng theo cách mà dữ liệu này không bị rò rỉ theo yêu cầu mạng – đặc biệt là đối với các dịch vụ của bên thứ ba – chúng tôi đã phát triển một cổng API cho các yêu cầu proxy. Proxy này cho phép chúng tôi không chuyển yêu cầu của người dùng đến các dịch vụ của bên thứ ba và không tiết lộ IP của khách hàng cho các nhà cung cấp công cộng hoặc bên ngoài. 

Dịch vụ phụ trợ này về cơ bản là một API để truy vấn dữ liệu blockchain công khai. Trong kiến ​​trúc bảo mật ví, mục đích của nó là gói gọn chức năng này đằng sau một API chung trên tất cả các chuỗi khối để Ví Kraken không phải triển khai các hành vi dành riêng cho chuỗi khối để truy vấn dữ liệu.

Dịch vụ phụ trợ này xác định API chung này. Cuối cùng, nó ủy quyền các yêu cầu cho các bên khác để lấy dữ liệu thực tế. Nó không tự lập chỉ mục cho các chuỗi khối cũng như không duy trì trạng thái.

Giả định bảo mật

Kiến trúc bảo mật của chúng tôi hoạt động dựa trên một số giả định chính để bảo vệ tối ưu. Chúng tôi đoán:

  • Thiết bị của người dùng chưa được root, hệ điều hành cũng không lỗi thời và dễ mắc các lỗ hổng nghiêm trọng có thể cấp cho kẻ tấn công quyền truy cập vào bộ nhớ thiết bị
  • Gói Chuỗi khóa hoặc Kho khóa cung cấp khả năng bảo vệ đủ mạnh
  • Hệ điều hành di động cung cấp khả năng hộp cát vững chắc giữa các quy trình của ứng dụng, đảm bảo rằng bộ nhớ chứa dữ liệu nhạy cảm như hạt giống được quản lý đúng cách

Chức năng bổ sung

  • Ứng dụng hoạt động theo nguyên tắc chỉ lưu trữ dữ liệu tối thiểu cần thiết để chạy ví
  • Không có phân tích của bên thứ ba hoặc bộ công cụ phát triển phần mềm báo cáo sự cố (SDK) nào được sử dụng trên máy khách
    • Với nỗ lực của chúng tôi nhằm không rò rỉ bất kỳ dữ liệu nào cho bên thứ ba, sẽ không có ý nghĩa gì nếu đưa thêm tính năng theo dõi dữ liệu - có nghĩa là bạn sẽ không tìm thấy bất kỳ phần mềm phân tích hoặc báo cáo sự cố nào trong ứng dụng khách
  • Không có bản cập nhật qua mạng nào (ngoài luồng cập nhật AppStore/Play Store thông thường) được cho phép hoặc triển khai trên cơ sở mã
    • Người dùng có thể mong đợi một phần mềm đã biên dịch không thể cập nhật nếu không có sự đồng ý của họ
  • Danh sách token và hệ thống danh tiếng
    • Để giúp người dùng quản lý token của họ, chúng tôi đã triển khai hệ thống danh sách và danh tiếng dựa trên tài sản do Kraken và các bên thứ ba khác cung cấp
  • thư rác NFT
    • Nỗ lực ban đầu mà chúng tôi dự định tiếp tục cải thiện là phát hiện thư rác và các cuộc tấn công liên quan đến thư rác, trong đó thư rác được lưu trữ tự động trong thư mục của người dùng

Kiểm tra an ninh bên ngoài

The security of our self-custody wallet was rigorously evaluated through an audit conducted by Đường mòn của bit, a well-regarded security auditing firm in the industry. This audit encompassed a detailed examination of our codebase and client architecture, aimed at identifying and addressing potential security vulnerabilities.

Để đảm bảo tính minh bạch và cung cấp cái nhìn sâu sắc về tính bảo mật của nền tảng của chúng tôi, kết quả kiểm tra này sẽ được công bố công khai. Quyền truy cập mở này cho phép người dùng và các bên quan tâm xem xét kết quả phân tích bảo mật do Trail of Bits thực hiện. Báo cáo đóng vai trò là nguồn tài nguyên quan trọng giúp hiểu rõ các biện pháp bảo mật mà chúng tôi áp dụng và cam kết của chúng tôi trong việc duy trì môi trường an toàn cho người dùng.

Ưu tiên bảo mật, minh bạch và kiểm soát người dùng

Ví Kraken đạt được sự cân bằng tinh tế giữa sự tiện lợi và khả năng bảo vệ mạnh mẽ trước những hạn chế cố hữu của nền tảng. Cách tiếp cận của chúng tôi luôn là bắt đầu bằng một cấu trúc ví có thể tương tác được công nhận rộng rãi. Nền tảng vững chắc này tạo tiền đề cho chúng tôi đổi mới và bổ sung các khả năng mới, với mục tiêu cung cấp cho người dùng giải pháp bảo mật hàng đầu, ngày càng phát triển để tự quản lý tài sản tiền điện tử của họ.

Những tài liệu này chỉ nhằm mục đích thông tin chung và không phải là lời khuyên đầu tư hay khuyến nghị hay chào mời mua, bán, đặt cược hoặc nắm giữ bất kỳ tài sản tiền điện tử nào hoặc tham gia vào bất kỳ chiến lược giao dịch cụ thể nào. Kraken không và sẽ không hoạt động để tăng hoặc giảm giá của bất kỳ tài sản tiền điện tử cụ thể nào mà nó cung cấp. Một số sản phẩm và thị trường tiền điện tử không được kiểm soát và bạn có thể không được bảo vệ bởi các chương trình bồi thường và/hoặc bảo vệ theo quy định của chính phủ. Bản chất không thể đoán trước của thị trường tài sản tiền điện tử có thể dẫn đến mất tiền. Thuế có thể phải trả đối với bất kỳ khoản hoàn trả nào và/hoặc bất kỳ sự gia tăng nào về giá trị tài sản tiền điện tử của bạn và bạn nên tìm kiếm lời khuyên độc lập về vị trí thuế của mình. Hạn chế về địa lý có thể được áp dụng.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?