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 số ghi nhớ trong OneKey App (ví phần mềm), bao gồm tất cả các hệ điều hành được OneKey App hỗ trợ (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ã dành riêng cho từng nền tảng, được khuyến nghị bởi các nguyên tắc phát triển 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 của NIST SP 800-22 và FIPS 140-2.
Trên nền tảng dựa trên Chrome (Windows, macOS), API tạo số ngẫu nhiên giả mạnh mẽ về 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 mẽ về 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 nguyên tắc 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 (Ấn phẩm Đặc biệt 800-22 của Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST)) là một tài liệu do NIST Hoa Kỳ xuất bản, chủ yếu liên quan đến một bộ kiểm tra thống kê để kiểm tra Máy tạo số ngẫu nhiên giả (PRNG). Nó cung cấp một bộ 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 máy 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
|
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 không chồng chéo - độ dài khối (m)
|
10
|
Kiểm tra Mẫu chồng chéo - độ dài khối (m)
|
10
|
Kiểm tra Entropi 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 Desktop
Ứng dụng desktop OneKey trên Windows là một ứng dụng Electron dựa trên engine Chrome. Sử dụng công cụ nhà phát triển, API tạo entropy 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, với tổng cộng 20MB. Kiểm tra theo các thông số đã định đã cho 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 đạt, đáp ứng các yêu cầu bảo mật.Kết quả: NIST SP 800-22-windows-desktop-wini713.txt (Có 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 engine Chrome. Sử dụng công cụ nhà phát triển, API tạo entropy 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, với tổng cộng 20MB. Kiểm tra theo các thông số đã định đã cho 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 đạt, đáp ứng các yêu cầu bảo mật.Kết quả: NIST SP 800-22-windows-ext-wini713.txt (Có 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 Desktop
Ứng dụng desktop OneKey trên macOS là một ứng dụng Electron dựa trên engine Chrome. Sử dụng công cụ nhà phát triển, API tạo entropy 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, với tổng cộng 20MB. Kiểm tra theo các thông số đã định đã cho 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 đạt, đáp ứng các yêu cầu bảo mật.Kết quả: NIST SP 800-22-macOS-desktop-macm1p.txt (Có 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 engine Chrome. Sử dụng công cụ nhà phát triển, API tạo entropy 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, với tổng cộng 20MB. Kiểm tra theo các thông số đã định đã cho 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 đạt, đáp ứng các yêu cầu bảo mật.Kết quả: NIST SP 800-22-macOS-ext-macm1p.txt (Có 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 Android
Ứng dụng Android OneKey, 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 công cụ gỡ lỗi JS từ xa của React, API tạo entropy 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, với tổng cộng 20MB. Kiểm tra theo các thông số đã định đã cho 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 đạt, đáp ứng các yêu cầu bảo mật.Kết quả: NIST SP 800-22-android-app-andsm870.txt (Có trong tệp đính kèm)
iOS
Hệ thống: IOS 17.5; Phần cứng: iPhoneX A11
Ứng dụng iOS
Ứng dụng iOS OneKey, 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 công cụ gỡ lỗi JS từ xa của React, API tạo entropy 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, với tổng cộng 20MB. Kiểm tra theo các thông số đã định đã cho 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 đạt, đáp ứng các yêu cầu bảo mật.Kết quả: NIST SP 800-22-iOS-app-x.txt (Có trong tệp đính kèm)
FIPS 140-2 (Ấn phẩm Tiêu chuẩn Xử lý Thông tin Liên bang 140-2) là một tiêu chuẩn an ninh máy tính do NIST ban hành. Nó 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, seed, entropy, tính định kỳ, 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 có
Môi trường kiểm tra: ubuntu 24.04 arm64
Quy trình biên dịch:
Cài đặt gcc, automake đúng cách
Thực thi
./autogen.shThực thi
./configure(nếu có lỗi, cấu hình các dependency 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 ý: 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 Desktop
Ứng dụng desktop OneKey trên Windows là một ứng dụng Electron dựa trên engine Chrome. Sử dụng công cụ nhà phát triển, API tạo entropy 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, với 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 đạt, đá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 engine Chrome. Sử dụng công cụ nhà phát triển, API tạo entropy 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, với 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 dài thất bại, nhưng tất cả các mục đều đạt 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 Desktop
Ứng dụng desktop OneKey trên macOS là một ứng dụng Electron dựa trên engine Chrome. Sử dụng công cụ nhà phát triển, API tạo entropy 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, với 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 đạt, đá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 engine Chrome. Sử dụng công cụ nhà phát triển, API tạo entropy 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, với 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 đạt, đá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 Android
Ứng dụng Android OneKey, 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 công cụ gỡ lỗi JS từ xa của React, API tạo entropy 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, với 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 đã thất bại tất cả các mục kiểm tra, nhưng tất cả các mục đều đạt tổng thể, đáp ứng các yêu cầu bảo mật.
⚠️ Lưu ý: Ứng dụng 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 chung của bài kiểm tra.
iOS
Hệ thống iOS 17.5;Phần cứng: iPhoneX A11
Ứng dụng iOS
Ứng dụng iOS OneKey, 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 công cụ gỡ lỗi JS từ xa của React, API tạo entropy 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, với 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 thất bại trong Kiểm tra Chuỗi dài trên 1024 vòng, nhưng tất cả các mục đều đạt tổng thể, đáp ứng các yêu cầu bảo mật.
Tệp đính kèm kết quả
