تقدم هذه المقالة تقرير اختبار أمان لتوليد العشوائية في تطبيق OneKey (محفظة برمجية)، وتغطي جميع أنظمة التشغيل المدعومة من تطبيق OneKey (macOS، Windows، Android، iOS) وعملائها المعنيين (سطح المكتب وملحق المتصفح).
الخلاصة
يستخدم تطبيق OneKey واجهات برمجة تطبيقات الأرقام العشوائية القوية من الناحية التشفيرية والمحددة للنظام الأساسي والموصى بها من قبل إرشادات التطوير عبر عملاء Windows وmacOS وiOS وAndroid، بالإضافة إلى ملحق Chrome. تؤكد الاختبارات الداخلية الامتثال لمعايير أمان الأرقام العشوائية NIST SP 800-22 وFIPS 140-2.
على الأنظمة الأساسية المستندة إلى Chrome (Windows، macOS)، يتم استخدام واجهة برمجة تطبيقات الأرقام العشوائية الزائفة القوية
crypto.getRandomValuesالموفرة من Chrome لتوليد أرقام عشوائية زائفة قوية من الناحية التشفيرية.على منصات Android وiOS المستندة إلى React Native، يتم استدعاء واجهات الأرقام العشوائية الآمنة
SecureRandomوSecRandomCopyBytesالموفرة من النظام على التوالي.
⚠️ ملاحظة: على الرغم من أن تطبيق OneKey يلتزم بشدة بإرشادات تطوير الأمان، إلا أن أمان توليد الأرقام العشوائية يمكن أن يتأثر أيضًا بتطبيق نظام التشغيل/الأجهزة لجهاز المستخدم.
اختبار الأمان
NIST SP 800-22 FIPS 140-2
NIST SP 800-22 (منشور المعهد الوطني للمعايير والتكنولوجيا الخاص 800-22) هو وثيقة نشرها المعهد الوطني للمعايير والتكنولوجيا (NIST) في الولايات المتحدة، تتضمن بشكل أساسي مجموعة اختبارات إحصائية لاختبار المولدات العشوائية الزائفة (PRNG). توفر مجموعة من الاختبارات الإحصائية لتقييم العشوائية وجودة تسلسلات البتات التي تولدها مولدات الأرقام العشوائية.
برنامج الاختبار: مجموعة الاختبارات الإحصائية NIST SP 800-22
بيئة الاختبار: macOS 14.5
معلمات الاختبار:
المشروع
|
المعلمات
|
طول المقطع
|
1024000
|
عناصر الاختبار
|
1 (جميع الاختبارات الـ 15)
|
اختبار تكرار الكتلة - طول الكتلة (M)
|
20480
|
اختبار القالب غير المتداخل - طول الكتلة (m)
|
10
|
اختبار القالب المتداخل - طول الكتلة (m)
|
10
|
اختبار الإنتروبيا التقريبية - طول الكتلة (m)
|
10
|
اختبار التسلسل - طول الكتلة (m)
|
16
|
اختبار التعقيد الخطي - طول الكتلة (M)
|
5000
|
بتات
|
20 (20*1024000 بت = 20480000 بت = 20 ميجابايت)
|
Windows
النظام: Win10 22H2؛ الأجهزة: i7-13700h
عميل سطح المكتب
عميل سطح المكتب الخاص بتطبيق OneKey لنظام Windows هو تطبيق Electron يعتمد على محرك Chrome. باستخدام أدوات المطور، يتم استدعاء واجهة برمجة التطبيقات لتوليد إنتروبيا العبارات
crypto.getRandomValuesوقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. أدى الاختبار وفقًا للمعلمات المحددة إلى "تقرير اختبار" (انظر المرفق أدناه)، حيث مرت جميع العناصر، مما يفي بالمتطلبات الأمنية.النتائج: NIST SP 800-22-windows-desktop-wini713.txt (متوفر في المرفق)
ملحق المتصفح
يعتمد ملحق Chrome على محرك Chrome. باستخدام أدوات المطور، يتم استدعاء واجهة برمجة التطبيقات لتوليد إنتروبيا العبارات
crypto.getRandomValuesوقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. أدى الاختبار وفقًا للمعلمات المحددة إلى "تقرير اختبار" (انظر المرفق أدناه)، حيث مرت جميع العناصر، مما يفي بالمتطلبات الأمنية.النتائج: NIST SP 800-22-windows-ext-wini713.txt (متوفر في المرفق)
macOS
النظام: Sonoma 14.6؛ الأجهزة: MacBook Pro 2020 13 بوصة M1
عميل سطح المكتب
عميل سطح المكتب الخاص بتطبيق OneKey لنظام macOS هو تطبيق Electron يعتمد على محرك Chrome. باستخدام أدوات المطور، يتم استدعاء واجهة برمجة التطبيقات لتوليد إنتروبيا العبارات
crypto.getRandomValuesوقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. أدى الاختبار وفقًا للمعلمات المحددة إلى "تقرير اختبار" (انظر المرفق أدناه)، حيث مرت جميع العناصر، مما يفي بالمتطلبات الأمنية.النتائج: NIST SP 800-22-macOS-desktop-macm1p.txt (متوفر في المرفق)
ملحق المتصفح
يعتمد ملحق Chrome على محرك Chrome. باستخدام أدوات المطور، يتم استدعاء واجهة برمجة التطبيقات لتوليد إنتروبيا العبارات
crypto.getRandomValuesوقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. أدى الاختبار وفقًا للمعلمات المحددة إلى "تقرير اختبار" (انظر المرفق أدناه)، حيث مرت جميع العناصر، مما يفي بالمتطلبات الأمنية.النتائج: NIST SP 800-22-macOS-ext-macm1p.txt (متوفر في المرفق)
Android
النظام hyperOS 1.0.4.0؛ الأجهزة Xiaomi 10s snapdragon870
عميل Android
يعتمد عميل Android الخاص بتطبيق OneKey، كونه تطبيق React Native، على واجهات برمجة التطبيقات الأصلية. في Android، يتم استدعاء واجهة برمجة التطبيقات الخاصة بالنظام
SecureRandomعند استدعاءcrypto.getRandomValuesفي التطبيق. باستخدام تصحيح JavaScript عن بعد في React، يتم استدعاء واجهة برمجة التطبيقات لتوليد إنتروبيا العباراتcrypto.getRandomValuesوقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. أدى الاختبار وفقًا للمعلمات المحددة إلى "تقرير اختبار" (انظر المرفق أدناه)، حيث مرت جميع العناصر، مما يفي بالمتطلبات الأمنية.النتائج: NIST SP 800-22-android-app-andsm870.txt (متوفر في المرفق)
iOS
النظام: IOS 17.5؛ الأجهزة: iPhoneX A11
عميل iOS
يعتمد عميل iOS الخاص بتطبيق OneKey، كونه تطبيق React Native، على واجهات برمجة التطبيقات الأصلية. في iOS، يتم استدعاء واجهة برمجة التطبيقات الخاصة بالنظام
SecRandomCopyBytesعند استدعاءcrypto.getRandomValuesفي التطبيق. باستخدام تصحيح JavaScript عن بعد في React، يتم استدعاء واجهة برمجة التطبيقات لتوليد إنتروبيا العباراتcrypto.getRandomValuesوقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. أدى الاختبار وفقًا للمعلمات المحددة إلى "تقرير اختبار" (انظر المرفق أدناه)، حيث مرت جميع العناصر، مما يفي بالمتطلبات الأمنية.النتائج: NIST SP 800-22-iOS-app-x.txt (متوفر في المرفق)
FIPS 140-2 (منشور المعيار الفيدرالي لمعالجة المعلومات 140-2) هو معيار لأمن الكمبيوتر أصدره NIST. يوضح المتطلبات الأمنية للوحدات التشفيرية، مع التركيز بشكل خاص على أنواع مولدات الأرقام العشوائية، وقوة الأمان، والبداية، والإنتروبيا، والدورية، والاختبارات الدورية، والاختبارات المستمرة.
برنامج الاختبار: rng-tools
معلمات الاختبار: لا يوجد
بيئة الاختبار: ubuntu 24.04 arm64
عملية الترجمة:
قم بتثبيت gcc و automake بشكل صحيح
نفذ
./autogen.shنفذ
./configure(إذا حدثت أخطاء، قم بتكوين التبعيات وفقًا لرسائل الخطأ)نفذ
makeلترجمة ملفات rngd و rngtestنفذ
./rngtest < testfile.bin
⚠️ ملاحظة: يجب أن تكون ملفات الاختبار بصيغة ثنائية كمدخلات، وليس نصية.
Windows
النظام: Win10 22H2؛ الأجهزة: i7-13700h
عميل سطح المكتب
عميل سطح المكتب الخاص بتطبيق OneKey لنظام Windows هو تطبيق Electron يعتمد على محرك Chrome. باستخدام أدوات المطور، يتم استدعاء واجهة برمجة التطبيقات لتوليد إنتروبيا العبارات
crypto.getRandomValuesوقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. تم تحويل الملف النصي إلى ملف ثنائي، ويوضح "تقرير الاختبار" أدناه أن جميع العناصر قد مرت، مما يفي بالمتطلبات الأمنية.
ملحق المتصفح
يعتمد ملحق Chrome على محرك Chrome. باستخدام أدوات المطور، يتم استدعاء واجهة برمجة التطبيقات لتوليد إنتروبيا العبارات
crypto.getRandomValuesوقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. تم تحويل الملف النصي إلى ملف ثنائي، ويوضح "تقرير الاختبار" أدناه أنه تم اختبار 1024 جولة بفشل جولة واحدة من Runs، ولكن مرت جميع العناصر بشكل عام، مما يفي بالمتطلبات الأمنية.
macOS
النظام: Sonoma 14.6؛ الأجهزة: MacBook Pro 2020 13 بوصة M1
عميل سطح المكتب
عميل سطح المكتب الخاص بتطبيق OneKey لنظام macOS هو تطبيق Electron يعتمد على محرك Chrome. باستخدام أدوات المطور، يتم استدعاء واجهة برمجة التطبيقات لتوليد إنتروبيا العبارات
crypto.getRandomValuesوقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. تم تحويل الملف النصي إلى ملف ثنائي، ويوضح "تقرير الاختبار" أدناه أن جميع العناصر قد مرت، مما يفي بالمتطلبات الأمنية.
ملحق المتصفح
يعتمد ملحق Chrome على محرك Chrome. باستخدام أدوات المطور، يتم استدعاء واجهة برمجة التطبيقات لتوليد إنتروبيا العبارات
crypto.getRandomValuesوقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. تم تحويل الملف النصي إلى ملف ثنائي، ويوضح "تقرير الاختبار" أدناه أن جميع العناصر قد مرت، مما يفي بالمتطلبات الأمنية.
Android
النظام: hyperOS 1.0.4.0؛ الأجهزة: Xiaomi 10s snapdragon870
عميل Android
يعتمد عميل Android الخاص بتطبيق OneKey، كونه تطبيق React Native، على واجهات برمجة التطبيقات الأصلية. في Android، يتم استدعاء واجهة برمجة التطبيقات الخاصة بالنظام
SecureRandomعند استدعاءcrypto.getRandomValuesفي التطبيق. باستخدام تصحيح JavaScript عن بعد في React، يتم استدعاء واجهة برمجة التطبيقات لتوليد إنتروبيا العباراتcrypto.getRandomValuesوقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. تم تحويل الملف النصي إلى ملف ثنائي، ويوضح "تقرير الاختبار" أدناه أن ثلاث جولات من أصل 1024 فشلت في جميع عناصر الاختبار، ولكن مرت جميع العناصر بشكل عام، مما يفي بالمتطلبات الأمنية.
⚠️ ملاحظة: كان لدى عميل Android ثلاث جولات اختبار من أصل 1024 فشلت فيها جميع عناصر الاختبار. قد تكون هذه المشكلة خطأ في أداة rng-test ولا تؤثر على الاستنتاج العام للاختبار.
iOS
النظام iOS 17.5؛ الأجهزة: iPhoneX A11
عميل iOS
يعتمد عميل iOS الخاص بتطبيق OneKey، كونه تطبيق React Native، على واجهات برمجة التطبيقات الأصلية. في iOS، يتم استدعاء واجهة برمجة التطبيقات الخاصة بالنظام
SecRandomCopyBytesعند استدعاءcrypto.getRandomValuesفي التطبيق. باستخدام تصحيح JavaScript عن بعد في React، يتم استدعاء واجهة برمجة التطبيقات لتوليد إنتروبيا العباراتcrypto.getRandomValuesوقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. تم تحويل الملف النصي إلى ملف ثنائي، ويظهر "تقرير الاختبار" أدناه فشل اختبار واحد في Long run من أصل 1024 جولة، ولكن مرت جميع العناصر بشكل عام، مما يفي بالمتطلبات الأمنية.
مرفقات النتائج
