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

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

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

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

المشروع

المعلمات

طول المقطع

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

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

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

    2. نفذ ./autogen.sh

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

    4. نفذ make لترجمة ملفات rngd و rngtest

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

⚠️ ملاحظة: يجب أن تكون ملفات الاختبار بصيغة ثنائية كمدخلات، وليس نصية.

Windows

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

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

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

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

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

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

macOS

النظام: Sonoma 14.6؛ الأجهزة: MacBook Pro 2020 13 بوصة M1

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

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

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

    ⚠️ ملاحظة: كان لدى عميل 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 جولة، ولكن مرت جميع العناصر بشكل عام، مما يفي بالمتطلبات الأمنية.

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

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


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