تشفير تام بين الأطراف

نظرة عامة على HPKE

تشفير المفتاح العام المختلط (HPKE) هو آلية تشفير تُستخدَم لتشفير حمولة إلى مفتاح عام. يُطلق عليها اسم "مختلطة" لأنّ الحمولة نفسها تكون مشفّرة باستخدام مفتاح متماثل، وتستمدّ HPKE هذا المفتاح المتماثل باستخدام تبادل مفاتيح Diffie-Hellman.

أوضاع HPKE

  • الوضع الأساسي: هو الوضع الأكثر شيوعًا.
  • المصادقة: تستخدم المفتاح الخاص للمرسِل للمصادقة.
  • المفتاح المشترك مسبقًا: يستخدم مفتاحًا مشتركًا مسبقًا وعالي الإنتروبيا للمصادقة.
  • AuthPSK: يجمع بين المفتاح الخاص للمرسِل ومفتاح مشترك مسبقًا وعالي الإنتروبيا للمصادقة.

التفاعل في الوضع الأساسي (الجهاز وجهة الإصدار)

في ما يلي مخطط انسيابي عالي المستوى يوضّح سيناريو يريد فيه جهاز إرسال بيانات حساسة إلى جهة إصدار.

الخطوة 1: إنشاء المفتاح وتبادله

  • تنشئ جهة الإصدار زوج مفاتيح تشفير: IE₍ₚₖ, ₛₖ₎ حيث ₚₖ هو المفتاح العام وₛₖ هو المفتاح الخاص.
  • ترسل "جهة الإصدار" المفتاح العام (IEₚₖ) وتشاركه مع "الجهاز".

الخطوة 2: التشفير والإرسال

ينفّذ الجهاز Hybrid-Encrypt(Data, IEₚₖ, Context).

  • ينشئ الجهاز زوجًا من مفاتيح التشفير غير المتماثلة المؤقتة: ₍Eₚₖ, Eₛₖ₎.
  • يستمد مفتاح AES متماثل، يُعرف باسم السر المشترك (SS)، باستخدام الصيغة: SS = ExtractAndExpand(Diffie-Hellman(IEₚₖ, Eₛₖ), _Context).
  • يشفّر الجهاز البيانات باستخدام هذا السر المشترَك لإنتاج encData.
  • تشارك { encData, Eₚₖ } وترسلها إلى جهة الإصدار.

الخطوة 3: فك التشفير

تحتفظ "جهة الإصدار" حاليًا بـ IE₍ₚₖ, ₛₖ₎ و{ encData, Eₚₖ } التي تم استلامها. ينفِّذ Hybrid-Decrypt(encData, Eₚₖ, IEₛₖ, Context).

  • يتم استخراج مفتاح AES المتماثل (السر المشترك، SS) باستخدام الصيغة: SS = ExtractAndExpand(Diffie-Hellman(IEₛₖ, Eₚₖ), _Context).
  • ويتم فك تشفير encData باستخدام SS.

المصطلحات

العبارة التعريف والتفاصيل
DIₚₖ سلسلة شهادات مفتاح بيانات الاعتماد (شهادات هوية الجهاز): هي سلسلة شهادات X.509 لمفتاح بيانات الاعتماد الذي يحدّد بيانات الاعتماد لهيئة الإصدار.
  • يحتوي على إضافة مصادقة Android Keystore تصف المفتاح وأجهزة الأمان.
  • تُستخدَم لإثبات ملكية بيانات الاعتماد.
  • على جهة الإصدار فحص سلسلة الشهادات هذه بعناية (على سبيل المثال، التحقّق من أنّ شهادة الجذر معروفة جيدًا، ومن توفّر Tag::IDENTITY_CREDENTIAL_KEY، ومن توفّر التحدّي، ومن صحة Tag::ATTESTATION_APPLICATION_ID، ومن تفعيل "التحقّق من صحة عملية التشغيل"، ومن حالة التوقيع/الإبطال).
Aₚₖ مفاتيح المصادقة: مفاتيح مصادقة ديناميكية بمعيار X.509 تتطلّب الحصول على شهادة، ويتم توقيع كل منها بواسطة CredentialKey.
  • يُنشئ جهة الإصدار بيانات مصادقة ثابتة لكل مفتاح، وترسلها إلى الجهاز، ويخزّنها الجهاز من خلال storeStaticAuthenticationData.
  • هذا المفتاح هو حمولة سيتم تشفيرها، ولن يتم استخدامه مباشرةً للتشفير التام بين الأطراف.
  • تتضمّن حقول X.509 غير الاختيارية ما يلي: الإصدار (INTEGER 2) والرقم التسلسلي (INTEGER 1) والتوقيع (ECDSA) والموضوع (CN مضبوط على "مفتاح مصادقة بيانات اعتماد الهوية على Android") والجهة المصدرة (CN مضبوط على "مفتاح بيانات اعتماد الهوية على Android") والصلاحية (من الوقت الحالي إلى 365 يومًا في المستقبل) وsubjectPublicKeyInfo (يجب أن يحتوي على مفتاح عام مصدّق عليه).
IE₍ₛₖ,ₚₖ₎ زوج مفاتيح التشفير الخاص بالجهة المصدرة: هو مفتاح غير متماثل تنشئه الجهة المصدرة. يستخدم الجهاز هذا المفتاح لإجراء عملية التشفير المختلط مع جهة الإصدار.
II₍ₛₖ,ₚₖ₎ مفتاحا تشفير هوية جهة الإصدار: مفتاح غير متماثل تنشئه جهة الإصدار. يستخدم الجهاز هذا المفتاح للتحقّق من هوية جهة الإصدار.
DE₍ₛₖ,ₚₖ₎ زوج مفاتيح تشفير الجهاز: مفتاح غير متماثل مؤقت ينشئه الجهاز لكل طلب. يستخدم جهة الإصدار هذا المفتاح لتنفيذ التشفير المختلط على الجهاز.
FE₍ₛₖ,ₚₖ₎ مفتاح تشفير الحقل: مفتاح غير متماثل مؤقت يتم إنشاؤه لكل حقل أثناء عملية "التشفير المختلط".

التشفير التام بين الأطراف في Google Digital Credential Provisioning API

الخطوة 1: الحصول على مفتاح هوية جهة الإصدار ومفتاح التشفير

  • نقاط نهاية واجهة برمجة التطبيقات: /getIdentityKey و/getHybridEncryptionKey
  • المرتجعات: IIₚₖ، IEₚₖ

الخطوة 2: الحصول على قيمة nonce لتسجيل الجهاز

  • إنشاء رقم تعريف مرجعي للجهاز (deviceReferenceId)
  • نقطة النهاية لواجهة برمجة التطبيقات: الاتصال /getDeviceRegistrationNonce(deviceReferenceId)
  • المرتجعات: nonce

الخطوة 3: تسجيل الجهاز

  • إعداد "مستند تعريف الهوية" على Android
  • استدعاء IC.getCredentialKeyCertificateChain(nonce) الذي يعرض DIₚₖ مضمّنًا برقم عشوائي
  • نقطة النهاية لواجهة برمجة التطبيقات: الاتصال /registerDevice(deviceReferenceId, DIₚₖ)
  • على جهة الإصدار فحص سلسلة الشهادات هذه بعناية للتأكّد من أنّ شهادة الجذر معروفة جيدًا، وأنّ عملية التحقّق من صحة الشهادة متوفّرة، وأنّ قيمة ATTESTATION_APPLICATION_ID تطابق التطبيق المتوقّع، وأنّ ميزة "التشغيل المتحقّق منه" مفعّلة، وأنّ التواقيع أو عمليات الإبطال صالحة.
  • المرتجعات: ack

الخطوة 4 (أ): إرسال طلب إثبات الملكية

  • لكل حقل:
    • نفِّذ Hybrid-Encrypt(Data, IEₚₖ, Context=FieldName) لإنشاء encData وFEₚₖ.
    • اتّصِل بالرقم IC.proveOwnership(SHA-256(Data + IEₚₖ)) للحصول على sigData (بنية بيانات COSE_Sign1 موقَّعة بواسطة CredentialKey، مع ضبط الحمولة على ProofofOwnership).
  • نقطة النهاية لواجهة برمجة التطبيقات: الاتصال /proofUser([encData, sigData, FEₚₖ])
  • تتحقّق الجهة التي أصدرت رخصة القيادة من sigData باستخدام DIₚₖ.
  • تنفّذ "جهة الإصدار" Hybrid-Decrypt(encData, FEₚₖ, IEₛₖ, Context=FieldName) لإنشاء Data.
  • المرتجعات: ack

الخطوة 4(ب): تعديل حالة التدقيق

  • إبلاغ Google بتعديل حالة "التدقيق" باستخدام deviceReferenceId وproofingId
  • نقطة النهاية لواجهة برمجة التطبيقات: الاتصال /notifyProofingStatusUpdateAvailable(...)
  • تستردّ خوادم Google حالة إثبات الهوية من جهة الإصدار من خلال طلب بيانات من /getProofingStatus(deviceReferenceId, proofingId).

الخطوة 5: توفير بيانات الاعتماد

  • اتّصِل بـ IC.proveOwnership(SHA-256(DEₚₖ)) للحصول على sigDEₚₖ (بنية COSE_Sign1 موقَّعة بواسطة CredentialKey/DIₛₖ مع حمولة ProofofOwnership).
  • نقطة النهاية لواجهة برمجة التطبيقات: أرسِل deviceReferenceId وproofingId وcredentialId وsigDEₚₖ إلى جهة الإصدار من خلال /provisionCredential(dRId, pId, cId, DEₚₖ, sigDEₚₖ).
  • جهة الإصدار:
    • أكِّد sigDEₚₖ باستخدام DIₚₖ.
    • يجب تشفير بيانات الاعتماد (PersonalizationData + AccessControlProfiles).
    • نفِّذ Hybrid-Encrypt(Cred, DEₚₖ, Context=FieldName) لإنشاء encCred وFEₚₖ.
    • أنشئ sigCred من خلال توقيع COSE_Sign1 SHA-256(Cred + DEₚₖ) باستخدام IIₛₖ.
    • إرجاع encCred وsigCred وFEₚₖ
  • جهة الجهاز:
    • أكِّد حسابك sigCred باستخدام IIₚₖ.
    • نفِّذ Hybrid-Decrypt(encCred, FEₚₖ, DEₛₖ, Context=FieldName) لاستخراج Cred.
    • اتّصِل بالرقم WC.personalize(Cred) للحصول على sigCredReceipt (COSE_Sign1 موقّع بواسطة CredentialKey، والحمولة ProofOfProvisioning).
    • نفِّذ Hybrid-Encrypt(sigCredReceipt, DEₛₖ, Context=FieldName) لإنشاء encReceipt وFE1ₚₖ.
    • اتّصِل بالرقم IC.proveOwnership(SHA-256(encReceipt + IEₚₖ)) للحصول على sigReceipt (COSE_Sign1 موقّع بواسطة CredentialKey، حمولة ProofofOwnership).
    • إنشاء مفاتيح المصادقة [Aₚₖ]

الخطوة 6: إنشاء MSO وStaticAuthData

  • جهة الجهاز:
    • لكل مفتاح مصادقة: نفِّذ Hybrid-Encrypt(AuthKey, IEₚₖ, Context=FieldName) لإنشاء encAuthKey وFEₚₖ.
    • اتّصِل بالرقم IC.proveOwnership(SHA-256(AuthKey + IEₚₖ)) للحصول على sigAuthKey.
    • نقطة النهاية لواجهة برمجة التطبيقات: الاتصال /provisionMSOs(.., encReceipt, sigReceipt, [encAuthKey, sigAuthKey, FEₚₖ], DEₚₖ, sigDEₚₖ)
  • جهة الإصدار:
    • قارِن بين sigReceipt وsigDEₚₖ وDIₚₖ للتحقّق من صحة الإيصال.
    • لكل [encAuthKey, sigAuthKey, FEₚₖ]: نفِّذ Hybrid-Decrypt(encAuthKey, FEₚₖ, IEₛₖ, Context=FieldName) لاستخراج AuthKey.
    • أنشئ MSO (بما في ذلك AuthKey) وstaticAuthData (SAD)، بما في ذلك digestIdMapping وissuerAuth.
    • نفِّذ Hybrid-Encrypt(SAD, DEₚₖ, Context=FieldName) لإنشاء encSAD وFEₚₖ.
    • وقِّع باستخدام COSE_Sign1 SHA-256(SAD + DEₚₖ) مع IIₛₖ لإنشاء sigSAD.
    • العودة [encSAD, sigSAD, FEₚₖ]
  • الجانب الخاص بالجهاز (النهائي):
    • بالنسبة إلى كل encSAD, sigSAD, FEₚₖ تم إرجاعه: تحقَّق من sigSAD باستخدام IIₚₖ.
    • نفِّذ Hybrid-Decrypt(encSAD, FEₚₖ, DEₛₖ, Context=FieldName) لاستخراج SAD.
    • اتّصِل بـ "storeStaticAuthenticationData" باستخدام "SAD" لإنهاء العملية.

متطلبات التدوير

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

يجب تدوير مفتاح التشفير المختلط الخاص بالجهة المصدرة مرة واحدة كل 3 أشهر. خلال فترة التبديل، على الجهة المصدرة البدء باستضافة المفتاح الجديد فقط، وسيبدأ الجهاز في التشفير باستخدام المفتاح الجديد. يجب أن يتيح جهة الإصدار فك التشفير باستخدام المفتاح القديم والجديد لفترة زمنية معقولة، وذلك لتجنُّب فترات التوقّف.

قيم AAD

استخدِم قيم السياق التالية لـ AAD.

الحقول قيم السياق
preAuthorizationCode PreAuthorizationCode

بالنسبة إلى قيم AAD لأنواع الأدلة الأخرى، يُرجى التواصل مع ممثل Google.

متجهات الاختبار للتشفير التام بين الأطراف في المستندات الرقمية

متجهات الاختبار الخاصة بالتشفير التام لبطاقة التعريف الرقمية هي مجموعة من الرسائل المحدّدة مسبقًا ونسخها المشفّرة التي تُستخدَم لاختبار صحة خوارزمية التشفير.

مَعلمات تشفير HPKE:

  KEM = DHKEM(P-256, HKDF-SHA256), id = 0x0010
  KDF = HKDF-SHA256, id = 0x0001
  AEAD = AES-256-GCM, id = 0x0002
  • البيانات المرتبطة الإضافية (AAD) هي إدخال إلى HPKE CtxInfo، AAD لتشفير AES (متماثل) هي NULL (فارغة).
  • يتم ترميز البيانات الثنائية في بنى JSON باستخدام Base64، أما القيم الوسيطة في هذا المستند، فيتم ترميزها باستخدام Hex.
  • تنسيق التوقيع في هذه المستندات:
    • الجهاز → جهة الإصدار، جهة الإصدار → الجهاز: COSE_Sign1

العميل ← جهة الإصدار، جهة الإصدار ← العميل

مثال على التواصل في كلا الاتجاهين

نموذج حقل الطلب المشفّر

Plaintext = "Hello, world!", associated-data = "field1"

{
  "field1": {
    "encryptedValue": "yGFWT9MkgV6/IZfYUZjqGEf3k2M/HQhz9XnKWyI\u003d",
    "encapsulatedKey": "BOpBC2LGh1RWk99iIm6ISsaPbtrNnu9hIgHeby5khXY6PG+ZmDOYmorEUne7uzhDmD6JCVYyME1+A8ueJ0CZvAI\u003d",
    "signature": "hEOhASagWE+EcFByb29mT2ZPd25lcnNoaXB4GG9yZy5pc28uMTgwMTMtNS4yMDE5Lm1kbFggTOsHXzsgDgh/2chekltve8rJsFFb6DTtBjY98H58gjb0WEBUnwNT3gvbavE8QoaAKaELqF7JKqh0+ivPisQg6RerTmx8Zsk/tCjW/y1cxhGKatl2EjASemns67r1/lZumEqZ",
    "recipientKeyId": "4D7E5D8B9460810A"
  }
}

نظرة متعمّقة:

>> plaintext = "Hello, world!"
48656C6C6F2C20776F726C6421

>> associated-data = "field1"
6669656C6431

## AES key = 
2831F07355FEAB3A8654EADEEC2E2D497B9FD3C76CB8B5E776DB03583F302332

## AES initialization vector = 
64620929032C85B352156528

## AES associated data (empty) = 

>> encrypted-value = HPKE(plaintext, associated-data)
C861564FD324815EBF2197D85198EA1847F793633F1D0873F579CA5B22

>> encapsulated-key (ephemeral) =
04EA410B62C687545693DF62226E884AC68F6EDACD9EEF612201DE6F2E648576
3A3C6F999833989A8AC45277BBBB3843983E89095632304D7E03CB9E274099BC
02

>> tbs-data = plaintext || issuer-encryption-key
48656C6C6F2C20776F726C6421044F1FC726AFFFC32EAA1275B5B49D67018ADE
7D8599DE53FE049996C0EC45D26EA3375BF467B631CF8AB0F284E4B628E287C8
99107465529DCA93DCF5F7A7EA5F

>> sha-256(tbs-data)
4CEB075F3B200E087FD9C85E925B6F7BCAC9B0515BE834ED06363DF07E7C8236

>> proof-of-ownership (cbor array)
847050726F6F664F664F776E65727368697078186F72672E69736F2E31383031
332D352E323031392E6D646C58204CEB075F3B200E087FD9C85E925B6F7BCAC9
B0515BE834ED06363DF07E7C8236F4

>> signature (cose_sign1)
8443A10126A0584F847050726F6F664F664F776E65727368697078186F72672E
69736F2E31383031332D352E323031392E6D646C58204CEB075F3B200E087FD9
C85E925B6F7BCAC9B0515BE834ED06363DF07E7C8236F45840549F0353DE0BDB
6AF13C42868029A10BA85EC92AA874FA2BCF8AC420E917AB4E6C7C66C93FB428
D6FF2D5CC6118A6AD9761230127A69ECEBBAF5FE566E984A99

نموذج لمفتاح التشفير الخاص بالجهة المصدرة أو الجهاز

{
  "deviceEncryptionKey": {
    "publicKey": "BP5vgzZ+UTozzb6cmaZ8tkof2nh2Q2oHVAsggvc8V8SR6C9wWU6W9JEq0AmsGbou3jYw4BLftJP2XQeCB3uD/to\u003d",
    "signature": "hEOhASagWE+EcFByb29mT2ZPd25lcnNoaXB4GG9yZy5pc28uMTgwMTMtNS4yMDE5Lm1kbFgg7641tE2UhuT5Tw9p1u9yEDpyYzDf1Jf9m//mIQfd4Kf0WEBB7PvHbfWozCYlFUqMJ6x+QWzoUU/OT10F1J1zoB8MTELPqfC9acF6IX5oMmsgLn2RtPS7QfylRqEAfG0FyYli",
    "keyIdentifier": "F29BA6298BC93156D2D50EA7E2233FC4"
  }
}

نظرة متعمّقة:

>> ec-point
04FE6F83367E513A33CDBE9C99A67CB64A1FDA7876436A07540B2082F73C57C4
91E82F70594E96F4912AD009AC19BA2EDE3630E012DFB493F65D0782077B83FE
DA

>> sha-256(ec-point)
EFAE35B44D9486E4F94F0F69D6EF72103A726330DFD497FD9BFFE62107DDE0A7

>> proof-of-ownership (cbor array)
847050726F6F664F664F776E65727368697078186F72672E69736F2E31383031
332D352E323031392E6D646C5820EFAE35B44D9486E4F94F0F69D6EF72103A72
6330DFD497FD9BFFE62107DDE0A7F4

>> signature (cose_sign1)
8443A10126A0584F847050726F6F664F664F776E65727368697078186F72672E
69736F2E31383031332D352E323031392E6D646C5820EFAE35B44D9486E4F94F
0F69D6EF72103A726330DFD497FD9BFFE62107DDE0A7F4584041ECFBC76DF5A8
CC2625154A8C27AC7E416CE8514FCE4F5D05D49D73A01F0C4C42CFA9F0BD69C1
7A217E68326B202E7D91B4F4BB41FCA546A1007C6D05C98962

مفاتيح وشهادات الاختبار

يمكنك الرجوع إلى مفاتيح الاختبار التالية أثناء التنفيذ.

مفتاح هوية جهة الإصدار (التوقيع) التجريبي

  • المفتاح الخاص

    -----BEGIN PRIVATE KEY-----
    MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCBSDJqogkjkqD7O8mX5
    FcUvwOxFp0CxPOGnMD8BfSbcyw==
    -----END PRIVATE KEY-----

  • شهادة المفتاح العام

    -----BEGIN CERTIFICATE-----
    MIIBkDCCATegAwIBAgIIIi7oI6UIMEYwCgYIKoZIzj0EAwIwNzE1MDMGA1UEAxMs
    Ly9leHBlcmltZW50YWwvdXNlcnMvaWdhcmlldi9jcnlwdG86U2lnbkNlcnQwHhcN
    MjIxMjEyMjAyNDA0WhcNMjMxMjEyMjAyNDA0WjBSMQ8wDQYDVQQLEwZXYWxsZXQx
    DzANBgNVBAoTBkdvb2dsZTEuMCwGA1UEAxMlVEVTVCBEQVRBIElzc3VlciBJZGVu
    dGl0eSAoU2lnbmF0dXJlKTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHV9uYlT
    wGV3UB+SM62fXcW6QzFfSoxq2gU34xG+XVMjxk9JDP9UTE34zX72WIfZ9nqRN9y/
    SsbSxw5WrSQdGY2jEjAQMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNHADBE
    AiBnMgsyJhdfelqpOFvT4H63dWSrNPxyrKEdxTwbYMfCKQIgOh2n2gCETH07tjxR
    l9HQfUcb6vqQY4EoPz2O0wNs6yc=
    -----END CERTIFICATE-----

مفتاح تشفير جهة الإصدار التجريبي

  • المفتاح الخاص

    -----BEGIN PRIVATE KEY-----
    MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCDZMUnwmygUdKXSujXS
    ye7YbVnk1Zy/qwnQtzlZs3pQFQ==
    -----END PRIVATE KEY-----

  • شهادة المفتاح العام

    -----BEGIN CERTIFICATE-----
    MIIBpjCCAUygAwIBAgIIIVwLEOrrzm0wCgYIKoZIzj0EAwIwNzE1MDMGA1UEAxMs
    Ly9leHBlcmltZW50YWwvdXNlcnMvaWdhcmlldi9jcnlwdG86U2lnbkNlcnQwHhcN
    MjIxMjIyMjA1NzIzWhcNMjMxMjIyMjA1NzIzWjBIMQ8wDQYDVQQLEwZXYWxsZXQx
    DzANBgNVBAoTBkdvb2dsZTEkMCIGA1UEAxMbVEVTVCBEQVRBIElzc3VlciBFbmNy
    eXB0aW9uMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETx/HJq//wy6qEnW1tJ1n
    AYrefYWZ3lP+BJmWwOxF0m6jN1v0Z7Yxz4qw8oTktijih8iZEHRlUp3Kk9z196fq
    X6MxMC8wDgYDVR0PAQH/BAQDAgMYMB0GA1UdDgQWBBQKFb7K4eZjtp70DLoCHWe7
    v/toXzAKBggqhkjOPQQDAgNIADBFAiEAwN1gOwiSx3999Zxc980eKv3p2H8kA4J6
    9aWH6jiVaGMCIA7lLkebHFhD0fItGqXv1f5fwiMBV0605KZFh5+RBj/W
    -----END CERTIFICATE-----

مفتاح معرّف الجهاز (التوقيع)، المعروف أيضًا باسم مفتاح بيانات الاعتماد

  • سلسلة شهادات المفتاح العام (X.509)
    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

لمزيد من التفاصيل، يُرجى الرجوع إلى مستندات ميزة "إثبات صحة المفتاح" في Android.

مفتاح تشفير الجهاز

  • المفتاح الخاص

    -----BEGIN PRIVATE KEY-----
    MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCBJY8n7A1v+thMM63np
    m0wr+rAoMFEYmMZ+mWzBIj2CiQ==
    -----END PRIVATE KEY-----

  • شهادة المفتاح العام

    -----BEGIN CERTIFICATE-----
    MIIBhzCCAS2gAwIBAgIIAyJ+NkzueMUwCgYIKoZIzj0EAwIwNzE1MDMGA1UEAxMs
    Ly9leHBlcmltZW50YWwvdXNlcnMvaWdhcmlldi9jcnlwdG86U2lnbkNlcnQwHhcN
    MjMwMTA5MjMwOTIwWhcNMjQwMTA5MjMwOTIwWjBIMQ8wDQYDVQQLEwZXYWxsZXQx
    DzANBgNVBAoTBkdvb2dsZTEkMCIGA1UEAxMbVEVTVCBEQVRBIERldmljZSBFbmNy
    eXB0aW9uMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/m+DNn5ROjPNvpyZpny2
    Sh/aeHZDagdUCyCC9zxXxJHoL3BZTpb0kSrQCawZui7eNjDgEt+0k/ZdB4IHe4P+
    2qMSMBAwDgYDVR0PAQH/BAQDAgMYMAoGCCqGSM49BAMCA0gAMEUCIQD9syewRhvK
    KcyaM7fLwuuCidpiIVd/CZxFCLOo9adCPAIgNd3FMcT710KtYptJBZQ/i7N+C7G5
    pLbHmAUoFwNuB2E=
    -----END CERTIFICATE-----