تخط وانتقل إلى المحتوى الرئيسي

اختبار أمان الأرقام العشوائية في تطبيق OneKey

تم إجراء التحديث اليوم

يقدم هذا المقال تقرير اختبار أمان حول عشوائية توليد العبارات الأولية (mnemonic) في تطبيق OneKey (محفظة برمجية)، ويشمل جميع أنظمة التشغيل التي يدعمها تطبيق OneKey (macOS، Windows، Android، iOS) وعملاءه المعنيين (سطح المكتب والإضافة).

الاستنتاج

يستخدم تطبيق OneKey واجهات برمجة تطبيقات (APIs) للأرقام العشوائية القوية تشفيرياً والموصى بها وفقاً لإرشادات التطوير عبر عملاء 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). وهي توفر مجموعة من الاختبارات الإحصائية لتقييم عشوائية وجودة تسلسلات البتات التي يتم توليدها بواسطة مولدات الأرقام العشوائية.

المشروع

المعايير

طول الجزء

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

  • عميل سطح المكتب

    • عميل Windows لسطح المكتب لتطبيق OneKey هو تطبيق 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-inch M1

  • عميل سطح المكتب

    • عميل macOS لسطح المكتب لتطبيق OneKey هو تطبيق 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 في التطبيق. باستخدام تصحيح الأخطاء عن بعد لـ React JS، يتم استدعاء واجهة برمجة تطبيقات توليد انتروبيا العبارات الأولية 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 في التطبيق. باستخدام تصحيح الأخطاء عن بعد لـ React JS، يتم استدعاء واجهة برمجة تطبيقات توليد انتروبيا العبارات الأولية crypto.getRandomValues في وقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. أدى الاختبار وفقاً للمعايير المحددة إلى الحصول على "تقرير اختبار" (انظر المرفق أدناه)، حيث اجتازت جميع العناصر الاختبار، مما يلبي متطلبات الأمان.

    • النتائج: NIST SP 800-22-iOS-app-x.txt (متاحة في المرفق)

FIPS 140-2 (منشور معيار معالجة المعلومات الفيدرالي 140-2) هو معيار أمان كمبيوتر صادر عن NIST. وهو يفصل متطلبات الأمان للوحدات التشفيرية، مع التركيز بشكل خاص على أنواع RNG، وقوة الأمان، والبذور، والانتروبيا، والدورية، والاختبارات الدورية، والاختبارات المستمرة.

  • برنامج الاختبار: rng-tools

  • معايير الاختبار: لا يوجد

  • بيئة الاختبار: ubuntu 24.04 arm64

  • عملية التجميع:

    1. تثبيت gcc و automake بشكل صحيح

    2. تنفيذ ./autogen.sh

    3. تنفيذ ./configure (في حال حدوث أخطاء، قم بضبط التبعيات وفقاً لرسائل الخطأ)

    4. تنفيذ make لتجميع ملفات rngd و rngtest

    5. تنفيذ ./rngtest < testfile.bin

⚠️ ملاحظة: يجب أن تكون ملفات الاختبار بتنسيق ثنائي (binary) عند الإدخال، وليس ASCII.

Windows

النظام: Win10 22H2؛ الجهاز: i7-13700h

  • عميل سطح المكتب

    • عميل Windows لسطح المكتب لتطبيق OneKey هو تطبيق Electron يعتمد على محرك Chrome. باستخدام أدوات المطور، يتم استدعاء واجهة برمجة تطبيقات توليد انتروبيا العبارات الأولية crypto.getRandomValues في وقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. تم تحويل ملف النص إلى ملف ثنائي، ويوضح "تقرير الاختبار" أدناه أن جميع العناصر اجتازت الاختبار، مما يلبي متطلبات الأمان.

      app-v5-randomness-fips-140-2-windows-desktop.png
  • إضافة المتصفح

    • تعتمد إضافة Chrome على محرك Chrome. باستخدام أدوات المطور، يتم استدعاء واجهة برمجة تطبيقات توليد انتروبيا العبارات الأولية crypto.getRandomValues في وقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. تم تحويل ملف النص إلى ملف ثنائي، ويوضح "تقرير الاختبار" أدناه أنه تم اختبار 1024 جولة مع فشل جولة واحدة في عناصر التشغيل، ولكن جميع العناصر اجتازت الاختبار بشكل عام، مما يلبي متطلبات الأمان.

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

macOS

النظام: Sonoma 14.6؛ الجهاز: MacBook Pro 2020 13-inch M1

  • عميل سطح المكتب

    • عميل macOS لسطح المكتب لتطبيق OneKey هو تطبيق Electron يعتمد على محرك Chrome. باستخدام أدوات المطور، يتم استدعاء واجهة برمجة تطبيقات توليد انتروبيا العبارات الأولية crypto.getRandomValues في وقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. تم تحويل ملف النص إلى ملف ثنائي، ويوضح "تقرير الاختبار" أدناه أن جميع العناصر اجتازت الاختبار، مما يلبي متطلبات الأمان.

      app-v5-randomness-fips-140-2-mac-desktop.png
  • إضافة المتصفح

    • تعتمد إضافة Chrome على محرك Chrome. باستخدام أدوات المطور، يتم استدعاء واجهة برمجة تطبيقات توليد انتروبيا العبارات الأولية crypto.getRandomValues في وقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. تم تحويل ملف النص إلى ملف ثنائي، ويوضح "تقرير الاختبار" أدناه أن جميع العناصر اجتازت الاختبار، مما يلبي متطلبات الأمان.

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

Android

النظام: hyperOS 1.0.4.0؛ الجهاز: Xiaomi 10s snapdragon870

  • عميل Android

    • يعتمد عميل Android لتطبيق OneKey، كونه تطبيق React Native، على واجهات برمجة تطبيقات أصلية. على Android، يتم استدعاء واجهة برمجة تطبيقات النظام SecureRandom عند استدعاء crypto.getRandomValues في التطبيق. باستخدام تصحيح الأخطاء عن بعد لـ React JS، يتم استدعاء واجهة برمجة تطبيقات توليد انتروبيا العبارات الأولية crypto.getRandomValues في وقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. تم تحويل ملف النص إلى ملف ثنائي، ويوضح "تقرير الاختبار" أدناه ثلاث جولات من أصل 1024 فشلت في جميع عناصر الاختبار، ولكن جميع العناصر اجتازت الاختبار بشكل عام، مما يلبي متطلبات الأمان.

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

    ⚠️ ملاحظة: شهد عميل Android ثلاث جولات اختبار من أصل 1024 فشلت فيها جميع عناصر الاختبار. قد تكون هذه المشكلة خطأ (bug) في أداة اختبار العشوائية (rng-test) ولا تؤثر على الاستنتاج العام للاختبار.

iOS

النظام iOS 17.5؛ الجهاز: iPhoneX A11

  • عميل iOS

    • يعتمد عميل iOS لتطبيق OneKey، كونه تطبيق React Native، على واجهات برمجة تطبيقات أصلية. على iOS، يتم استدعاء واجهة برمجة تطبيقات النظام SecRandomCopyBytes عند استدعاء crypto.getRandomValues في التطبيق. باستخدام تصحيح الأخطاء عن بعد لـ React JS، يتم استدعاء واجهة برمجة تطبيقات توليد انتروبيا العبارات الأولية crypto.getRandomValues في وقت التشغيل لأخذ عينات من الأرقام العشوائية، بإجمالي 20 ميجابايت. تم تحويل ملف النص إلى ملف ثنائي، ويوضح "تقرير الاختبار" أدناه فشل اختبار واحد في الجري الطويل (Long run) من أصل 1024 جولة، ولكن جميع العناصر اجتازت الاختبار بشكل عام، مما يلبي متطلبات الأمان.

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

مرفقات النتائج


هل أجاب هذا عن سؤالك؟