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.getRandomValuesdo 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à
SecureRandomvàSecRandomCopyBytesđượ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.
Phần mềm kiểm tra: Bộ kiểm tra thống kê NIST SP 800-22
Môi trường kiểm tra: macOS 14.5
Thông số kiểm tra:
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 khicrypto.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 khicrypto.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:
Cài đặt gcc, automake phù hợp
Thực thi
./autogen.shThực thi
./configure(nếu xảy ra lỗi, cấu hình các dependencies theo thông báo lỗi)Thực thi
makeđể biên dịch các tệp rngd và rngtestThự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.
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.
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.
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.
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.
⚠️ 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 khicrypto.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.
Tệp đính kèm kết quả
