הצפנה מקצה לקצה

סקירה כללית על HPKE

הצפנה היברידית של מפתח ציבורי (HPKE) היא מנגנון קריפטוגרפי שמשמש להצפנה של מטען ייעודי (payload) באמצעות מפתח ציבורי. ההצפנה נקראת 'היברידית' כי המטען הייעודי (payload) עצמו מוצפן באמצעות מפתח סימטרי, ו-HPKE גוזרת את המפתח הסימטרי הזה באמצעות חילופי מפתחות מסוג Diffie-Hellman.

מצבי HPKE

  • בסיסי: המצב הנפוץ ביותר.
  • אימות: המערכת משתמשת במפתח הפרטי של השולח לצורך אימות.
  • PSK: משתמש במפתח ששותף מראש עם אנטרופיה גבוהה לצורך אימות.
  • 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 עבור CredentialKey שמזהה את פרטי הכניסה לרשות המנפיקה.
  • מכיל תוסף אימות (attestation) של Android Keystore שמתאר את המפתח ואת חומרת האבטחה שלו.
  • הפרטים האלה משמשים להוכחת בעלות על פרטי הכניסה.
  • הגורם המנפיק חייב לבדוק בקפידה את שרשרת האישורים הזו (למשל, לוודא שהאישור הבסיסי מוכר, שהתג Tag::IDENTITY_CREDENTIAL_KEY קיים, שהאתגר קיים, שהתג Tag::ATTESTATION_APPLICATION_ID נכון, שההפעלה המאומתת מופעלת ושהחתימה או סטטוס הביטול תקינים).
Aₚₖ מפתחות אימות: מפתחות אימות דינמיים מסוג X.509 שנדרש אישור עבורם, כל אחד חתום על ידי CredentialKey.
  • הגורם המנפיק יוצר נתוני אימות סטטיים לכל מפתח, שולח אותם למכשיר והמכשיר מאחסן אותם באמצעות storeStaticAuthenticationData.
  • המפתח הזה הוא מטען ייעודי (payload) שיוצפן, ולא ישמש ישירות להצפנה מקצה לקצה.
  • שדות X.509 לא אופציונליים כוללים: גרסה (INTEGER 2), מספר סידורי (INTEGER 1), חתימה (ECDSA), נושא (CN מוגדר כ-"Android Identity Credential Authentication Key"), מנפיק (CN מוגדר כ-"Android Identity Credential Key"), תוקף (הזמן הנוכחי עד 365 ימים בעתיד) ו-subjectPublicKeyInfo (חייב להכיל מפתח ציבורי מאומת).
IE₍ₛₖ,ₚₖ₎ זוג מפתחות הצפנה של המנפיק: מפתח אסימטרי שנוצר על ידי המנפיק. המכשיר משתמש במפתח הזה כדי לבצע הצפנה היברידית של המנפיק.
II₍ₛₖ,ₚₖ₎ זוג מפתחות לזהות המנפיק: מפתח אסימטרי שנוצר על ידי המנפיק. המכשיר משתמש במפתח הזה כדי לאמת את הזהות של הגורם המנפיק.
DE₍ₛₖ,ₚₖ₎ זוג מפתחות להצפנת המכשיר: מפתח אסימטרי זמני שנוצר על ידי המכשיר לכל בקשה. הגורם המנפיק משתמש במפתח הזה כדי לבצע הצפנה היברידית למכשיר.
FE₍ₛₖ,ₚₖ₎ מפתח הצפנה של שדה: מפתח אסימטרי זמני שנוצר לכל שדה במהלך הצפנה היברידית.

הצפנה מקצה לקצה ב-Google Digital Credential Provisioning API

שלב 1: קבלת מפתח הזהות של המנפיק ומפתח ההצפנה

  • נקודות קצה של API: ‏ /getIdentityKey, /getHybridEncryptionKey.
  • החזרות: IIₚₖ, IEₚₖ.

שלב 2: קבלת ערך חד-פעמי לרישום המכשיר

  • יוצרים מזהה הפניה למכשיר (deviceReferenceId).
  • נקודת קצה ל-API: קריאה /getDeviceRegistrationNonce(deviceReferenceId).
  • החזרות: nonce.

שלב 3: רישום המכשיר

  • מגדירים את פרטי הזהות של Android.
  • קוראים ל-IC.getCredentialKeyCertificateChain(nonce) שמחזירה DIₚₖ עם nonce מוטמע.
  • נקודת קצה ל-API: קריאה /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, עם מטען ייעודי (payload) שהוגדר כ-ProofofOwnership).
  • נקודת קצה ל-API: קריאה /proofUser([encData, sigData, FEₚₖ]).
  • הרשות המנפיקה מאמתת את sigData באמצעות DIₚₖ.
  • הרשות המנפיקה מריצה את הפקודה Hybrid-Decrypt(encData, FEₚₖ, IEₛₖ, Context=FieldName) כדי ליצור את Data.
  • החזרות: ack.

שלב 4ב: עדכון סטטוס ההגהה

  • מודיעים ל-Google על עדכון בסטטוס ההגהה באמצעות deviceReferenceId ו-proofingId.
  • נקודת קצה ל-API: קריאה /notifyProofingStatusUpdateAvailable(...).
  • שרתי Google מאחזרים את סטטוס ההוכחה מהגורם המנפיק על ידי קריאה ל-/getProofingStatus(deviceReferenceId, proofingId).

שלב 5: הקצאת הרשאות לפרטי הכניסה

  • התקשרות אל IC.proveOwnership(SHA-256(DEₚₖ)) כדי לקבל sigDEₚₖ (מבנה COSE_Sign1 שנחתם על ידי CredentialKey/DIₛₖ עם מטען ייעודי (payload) מסוג ProofofOwnership).
  • נקודת קצה ל-API: שולחים את 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, מטען ייעודי (payload) ProofOfProvisioning).
    • מריצים את Hybrid-Encrypt(sigCredReceipt, DEₛₖ, Context=FieldName) כדי ליצור את encReceipt ואת FE1ₚₖ.
    • מתקשרים למספר IC.proveOwnership(SHA-256(encReceipt + IEₚₖ)) כדי לקבל sigReceipt (COSE_Sign1 חתום על ידי CredentialKey, מטען ייעודי (payload) ProofofOwnership).
    • יצירת מפתחות אימות [Aₚₖ].

שלב 6: יצירת MSO ו-StaticAuthData

  • בצד המכשיר:
    • לכל מפתח אימות: מריצים את הפקודה Hybrid-Encrypt(AuthKey, IEₚₖ, Context=FieldName) כדי ליצור את encAuthKey ואת FEₚₖ.
    • אפשר להתקשר אל IC.proveOwnership(SHA-256(AuthKey + IEₚₖ)) כדי לקבל sigAuthKey.
    • נקודת קצה ל-API: קריאה /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-----