Bỏ qua đến nội dung chính

OneKey App báo cáo kiểm tra bảo mật số ngẫu nhiên

Đã cập nhật tuần này

Bài viết này cung cấp báo cáo kiểm tra bảo mật về tính ngẫu nhiên của việc tạo mã ghi nhớ trong OneKey App (ví phần mềm), bao gồm tất cả các hệ điều hành được hỗ trợ bởi OneKey App (macOS, Windows, Android, iOS) và các ứng dụng khách tương ứng (Desktop & Extension).

Kết luận

OneKey App sử dụng các API số ngẫu nhiên mạnh mẽ về mặt mật mã dành riêng cho từng nền tảng, được các hướng dẫn phát triển khuyến nghị trên các ứng dụng khách Windows, macOS, iOS và Android, cũng như tiện ích mở rộng Chrome. Kiểm tra nội bộ xác nhận tuân thủ các tiêu chuẩn bảo mật số ngẫu nhiên NIST SP 800-22 và FIPS 140-2.

  • Trên các nền tảng dựa trên Chrome (Windows, macOS), API số ngẫu nhiên giả mạnh về mặt mật mã crypto.getRandomValues do Chrome cung cấp được sử dụng để tạo ra các số ngẫu nhiên giả mạnh về mặt mật mã.

  • Trên các nền tảng Android và iOS dựa trên React Native, các giao diện ngẫu nhiên an toàn do hệ thống cung cấp là SecureRandomSecRandomCopyBytes được gọi tương ứng.

⚠️ Lưu ý: Mặc dù OneKey App tuân thủ nghiêm ngặt các hướng dẫn phát triển bảo mật, bảo mật của việc tạo số ngẫu nhiên cũng có thể bị ảnh hưởng bởi việc triển khai hệ điều hành/phần cứng của thiết bị người dùng.

Kiểm tra Bảo mật

NIST SP 800-22 FIPS 140-2

NIST SP 800-22 (Special Publication 800-22 của Viện Tiêu chuẩn và Công nghệ Quốc gia) là một tài liệu do Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) của Hoa Kỳ xuất bản, chủ yếu liên quan đến bộ kiểm tra thống kê để kiểm tra Các Bộ tạo Số Ngẫu nhiên Giả (PRNG). Nó cung cấp một bộ các kiểm tra thống kê để đánh giá tính ngẫu nhiên và chất lượng của các chuỗi bit được tạo ra bởi các bộ tạo số ngẫu nhiên.

Dự án

Thông số

Độ dài phân đoạn

1024000

Các mục kiểm tra

1 (Tất cả 15 bài kiểm tra)

Kiểm tra Tần suất Khối - độ dài khối (M)

20480

Kiểm tra Mẫu chồng chéo - độ dài khối (m)

10

Kiểm tra Mẫu không chồng chéo - độ dài khối (m)

10

Kiểm tra Entropy Gần đúng - độ dài khối (m)

10

Kiểm tra Tuần tự - độ dài khối (m)

16

Kiểm tra Độ phức tạp Tuyến tính - độ dài khối (M)

5000

Chuỗi bit

20 (20 * 1024000 bit = 20480000 bit = 20MB)

Windows

Hệ thống: Win10 22H2; Phần cứng: i7-13700h

  • Ứng dụng khách máy tính để bàn

    • Ứng dụng khách máy tính để bàn Windows của OneKey App là một ứng dụng Electron dựa trên trình duyệt Chrome. Sử dụng các công cụ của nhà phát triển, API tạo entropy mã ghi nhớ crypto.getRandomValues được gọi tại thời điểm chạy để lấy mẫu các số ngẫu nhiên, tổng cộng 20MB. Kiểm tra theo các thông số đã xác định đã tạo ra "Báo cáo kiểm tra" (xem tệp đính kèm bên dưới), trong đó tất cả các mục đều vượt qua, đáp ứng các yêu cầu bảo mật.

    • Kết quả: NIST SP 800-22-windows-desktop-wini713.txt (Có sẵn trong tệp đính kèm)

  • Tiện ích mở rộng trình duyệt

    • Tiện ích mở rộng Chrome dựa trên trình duyệt Chrome. Sử dụng các công cụ của nhà phát triển, API tạo entropy mã ghi nhớ crypto.getRandomValues được gọi tại thời điểm chạy để lấy mẫu các số ngẫu nhiên, tổng cộng 20MB. Kiểm tra theo các thông số đã xác định đã tạo ra "Báo cáo kiểm tra" (xem tệp đính kèm bên dưới), trong đó tất cả các mục đều vượt qua, đáp ứng các yêu cầu bảo mật.

    • Kết quả: NIST SP 800-22-windows-ext-wini713.txt (Có sẵn trong tệp đính kèm)

macOS

Hệ thống: Sonoma 14.6; Phần cứng: MacBook Pro 2020 13 inch M1

  • Ứng dụng khách máy tính để bàn

    • Ứng dụng khách máy tính để bàn macOS của OneKey App là một ứng dụng Electron dựa trên trình duyệt Chrome. Sử dụng các công cụ của nhà phát triển, API tạo entropy mã ghi nhớ crypto.getRandomValues được gọi tại thời điểm chạy để lấy mẫu các số ngẫu nhiên, tổng cộng 20MB. Kiểm tra theo các thông số đã xác định đã tạo ra "Báo cáo kiểm tra" (xem tệp đính kèm bên dưới), trong đó tất cả các mục đều vượt qua, đáp ứng các yêu cầu bảo mật.

    • Kết quả: NIST SP 800-22-macOS-desktop-macm1p.txt (Có sẵn trong tệp đính kèm)

  • Tiện ích mở rộng trình duyệt

    • Tiện ích mở rộng Chrome dựa trên trình duyệt Chrome. Sử dụng các công cụ của nhà phát triển, API tạo entropy mã ghi nhớ crypto.getRandomValues được gọi tại thời điểm chạy để lấy mẫu các số ngẫu nhiên, tổng cộng 20MB. Kiểm tra theo các thông số đã xác định đã tạo ra "Báo cáo kiểm tra" (xem tệp đính kèm bên dưới), trong đó tất cả các mục đều vượt qua, đáp ứng các yêu cầu bảo mật.

    • Kết quả: NIST SP 800-22-macOS-ext-macm1p.txt (Có sẵn trong tệp đính kèm)

Android

Hệ thống: hyperOS 1.0.4.0; Phần cứng: Xiaomi 10s snapdragon870

  • Ứng dụng khách Android

    • Ứng dụng khách Android của OneKey App, là một ứng dụng React Native, dựa vào các API gốc. Trên Android, API hệ thống SecureRandom được gọi khi crypto.getRandomValues được gọi trong ứng dụng. Sử dụng chế độ gỡ lỗi JS từ xa của React, API tạo entropy mã ghi nhớ crypto.getRandomValues được gọi tại thời điểm chạy để lấy mẫu các số ngẫu nhiên, tổng cộng 20MB. Kiểm tra theo các thông số đã xác định đã tạo ra "Báo cáo kiểm tra" (xem tệp đính kèm bên dưới), trong đó tất cả các mục đều vượt qua, đáp ứng các yêu cầu bảo mật.

    • Kết quả: NIST SP 800-22-android-app-andsm870.txt (Có sẵn trong tệp đính kèm)

iOS

Hệ thống: IOS 17.5; Phần cứng: iPhoneX A11

  • Ứng dụng khách iOS

    • Ứng dụng khách iOS của OneKey App, là một ứng dụng React Native, dựa vào các API gốc. Trên iOS, API hệ thống SecRandomCopyBytes được gọi khi crypto.getRandomValues được gọi trong ứng dụng. Sử dụng chế độ gỡ lỗi JS từ xa của React, API tạo entropy mã ghi nhớ crypto.getRandomValues được gọi tại thời điểm chạy để lấy mẫu các số ngẫu nhiên, tổng cộng 20MB. Kiểm tra theo các thông số đã xác định đã tạo ra "Báo cáo kiểm tra" (xem tệp đính kèm bên dưới), trong đó tất cả các mục đều vượt qua, đáp ứng các yêu cầu bảo mật.

    • Kết quả: NIST SP 800-22-iOS-app-x.txt (Có sẵn trong tệp đính kèm)

FIPS 140-2 (Federal Information Processing Standard Publication 140-2) là một tiêu chuẩn bảo mật máy tính được ban hành bởi NIST. Tiêu chuẩn này nêu chi tiết các yêu cầu bảo mật cho các mô-đun mật mã, đặc biệt tập trung vào các loại RNG, độ mạnh bảo mật, hạt giống, entropy, tính chu kỳ, các bài kiểm tra định kỳ và kiểm tra liên tục.

  • Phần mềm kiểm tra: rng-tools

  • Thông số kiểm tra: Không

  • Môi trường kiểm tra: ubuntu 24.04 arm64

  • Quá trình biên dịch:

    1. Cài đặt gcc, automake phù hợp

    2. Thực thi ./autogen.sh

    3. Thực thi ./configure (nếu xảy ra lỗi, cấu hình các dependencies theo thông báo lỗi)

    4. Thực thi make để biên dịch các tệp rngdrngtest

    5. Thực thi ./rngtest < testfile.bin

⚠️ Lưu ý: Các tệp kiểm tra phải ở định dạng nhị phân làm đầu vào, không phải ASCII.

Windows

Hệ thống: Win10 22H2; Phần cứng: i7-13700h

  • Ứng dụng khách máy tính để bàn

    • Ứng dụng khách máy tính để bàn Windows của OneKey App là một ứng dụng Electron dựa trên trình duyệt Chrome. Sử dụng các công cụ của nhà phát triển, API tạo entropy mã ghi nhớ crypto.getRandomValues được gọi tại thời điểm chạy để lấy mẫu các số ngẫu nhiên, tổng cộng 20MB. Tệp văn bản đã được chuyển đổi thành tệp nhị phân, và "Báo cáo kiểm tra" bên dưới cho thấy tất cả các mục đều vượt qua, đáp ứng các yêu cầu bảo mật.

      app-v5-randomness-fips-140-2-windows-desktop.png
  • Tiện ích mở rộng trình duyệt

    • Tiện ích mở rộng Chrome dựa trên trình duyệt Chrome. Sử dụng các công cụ của nhà phát triển, API tạo entropy mã ghi nhớ crypto.getRandomValues được gọi tại thời điểm chạy để lấy mẫu các số ngẫu nhiên, tổng cộng 20MB. Tệp văn bản đã được chuyển đổi thành tệp nhị phân, và "Báo cáo kiểm tra" bên dưới cho thấy 1024 vòng đã được kiểm tra với một vòng Kiểm tra Chuỗi thất bại, nhưng tất cả các mục đều vượt qua tổng thể, đáp ứng các yêu cầu bảo mật.

      app-v5-randomness-fips-140-2-windows-ext.png

macOS

Hệ thống: Sonoma 14.6; Phần cứng: MacBook Pro 2020 13 inch M1

  • Ứng dụng khách máy tính để bàn

    • Ứng dụng khách máy tính để bàn macOS của OneKey App là một ứng dụng Electron dựa trên trình duyệt Chrome. Sử dụng các công cụ của nhà phát triển, API tạo entropy mã ghi nhớ crypto.getRandomValues được gọi tại thời điểm chạy để lấy mẫu các số ngẫu nhiên, tổng cộng 20MB. Tệp văn bản đã được chuyển đổi thành tệp nhị phân, và "Báo cáo kiểm tra" bên dưới cho thấy tất cả các mục đều vượt qua, đáp ứng các yêu cầu bảo mật.

      app-v5-randomness-fips-140-2-mac-desktop.png
  • Tiện ích mở rộng trình duyệt

    • Tiện ích mở rộng Chrome dựa trên trình duyệt Chrome. Sử dụng các công cụ của nhà phát triển, API tạo entropy mã ghi nhớ crypto.getRandomValues được gọi tại thời điểm chạy để lấy mẫu các số ngẫu nhiên, tổng cộng 20MB. Tệp văn bản đã được chuyển đổi thành tệp nhị phân, và "Báo cáo kiểm tra" bên dưới cho thấy tất cả các mục đều vượt qua, đáp ứng các yêu cầu bảo mật.

      app-v5-randomness-fips-140-2-mac-ext.png

Android

Hệ thống: hyperOS 1.0.4.0;Phần cứng: Xiaomi 10s snapdragon870

  • Ứng dụng khách Android

    • Ứng dụng khách Android của OneKey App, là một ứng dụng React Native, dựa vào các API gốc. Trên Android, API hệ thống SecureRandom được gọi khi crypto.getRandomValues được gọi trong ứng dụng. Sử dụng chế độ gỡ lỗi JS từ xa của React, API tạo entropy mã ghi nhớ crypto.getRandomValues được gọi tại thời điểm chạy để lấy mẫu các số ngẫu nhiên, tổng cộng 20MB. Tệp văn bản đã được chuyển đổi thành tệp nhị phân, và "Báo cáo kiểm tra" bên dưới cho thấy ba vòng trong số 1024 vòng mà tất cả các mục kiểm tra đều thất bại, nhưng tất cả các mục đều vượt qua tổng thể, đáp ứng các yêu cầu bảo mật.

      app-v5-randomness-fips-140-2-android.png

    ⚠️ Lưu ý: Ứng dụng khách Android có ba vòng kiểm tra trong số 1024 vòng mà tất cả các mục kiểm tra đều thất bại. Vấn đề này có thể là lỗi trong công cụ rng-test và không ảnh hưởng đến kết luận tổng thể của bài kiểm tra.

iOS

Hệ thống: iOS 17.5;Phần cứng: iPhoneX A11

  • Ứng dụng khách iOS

    • Ứng dụng khách iOS của OneKey App, là một ứng dụng React Native, dựa vào các API gốc. Trên iOS, API hệ thống SecRandomCopyBytes được gọi khi crypto.getRandomValues được gọi trong ứng dụng. Sử dụng chế độ gỡ lỗi JS từ xa của React, API tạo entropy mã ghi nhớ crypto.getRandomValues được gọi tại thời điểm chạy để lấy mẫu các số ngẫu nhiên, tổng cộng 20MB. Tệp văn bản đã được chuyển đổi thành tệp nhị phân, và "Báo cáo kiểm tra" bên dưới cho thấy một bài kiểm tra Chuỗi dài thất bại trong 1024 vòng, nhưng tất cả các mục đều vượt qua tổng thể, đáp ứng các yêu cầu bảo mật.

      app-v5-randomness-fips-140-2-ios.png

Tệp đính kèm kết quả


Nội dung này có giải đáp được câu hỏi của bạn không?