رمزگذاری انتها به انتها

بررسی اجمالی HPKE

رمزگذاری کلید عمومی ترکیبی (HPKE) یک مکانیزم رمزنگاری است که برای رمزگذاری یک بار داده به یک کلید عمومی استفاده می‌شود. این روش "ترکیبی" نامیده می‌شود زیرا خود بار داده با یک کلید متقارن رمزگذاری می‌شود و HPKE این کلید متقارن را با استفاده از تبادل کلید دیفی-هلمن استخراج می‌کند.

حالت‌های HPKE

  • پایه: رایج‌ترین حالت.
  • Auth: از کلید خصوصی فرستنده برای احراز هویت استفاده می‌کند.
  • PSK: از یک کلید از پیش اشتراک‌گذاری‌شده و با آنتروپی بالا برای احراز هویت استفاده می‌کند.
  • AuthPSK: کلید خصوصی فرستنده و یک کلید از پیش به اشتراک گذاشته شده و با آنتروپی بالا را برای احراز هویت ترکیب می‌کند.

تعامل حالت پایه (دستگاه و مرجع صدور)

در اینجا یک جریان سطح بالا وجود دارد که سناریویی را نشان می‌دهد که در آن یک دستگاه می‌خواهد داده‌های حساس را به یک مرجع صادرکننده ارسال کند.

مرحله ۱: تولید و تبادل کلید

  • مرجع صادرکننده یک جفت کلید رمزگذاری ایجاد می‌کند: IE₍ₚₖ, ₛₖ₎ که در آن ₚₖ کلید عمومی و ₛₖ کلید خصوصی است.
  • مرجع صادرکننده، کلید عمومی ( IEₚₖ ) را ارسال و با دستگاه به اشتراک می‌گذارد.

مرحله ۲: رمزگذاری و ارسال

دستگاه Hybrid-Encrypt(Data, IEₚₖ, Context) را اجرا می‌کند.

  • دستگاه یک جفت کلید نامتقارن زودگذر برای رمزگذاری تولید می‌کند: ₍Eₚₖ, Eₛₖ₎ .
  • این روش یک کلید AES متقارن، که به عنوان کلید مخفی مشترک (SS) شناخته می‌شود، را با استفاده از فرمول زیر استخراج می‌کند: SS = ExtractAndExpand(Diffie-Hellman(IEₚₖ, Eₛₖ), _Context) .
  • دستگاه با استفاده از این راز مشترک، داده‌ها را رمزگذاری می‌کند تا encData تولید شود.
  • این { encData, Eₚₖ } را به اشتراک می‌گذارد و آن را به مرجع صادرکننده ارسال می‌کند.

مرحله ۳: رمزگشایی

مرجع صادرکننده در حال حاضر IE₍ₚₖ, ₛₖ₎ و { encData, Eₚₖ } دریافتی را در اختیار دارد. این Hybrid-Decrypt(encData, Eₚₖ, IEₛₖ, Context) را اجرا می‌کند.

  • این روش، کلید متقارن AES (رمز مشترک، SS) را با استفاده از فرمول زیر استخراج می‌کند: SS = ExtractAndExpand(Diffie-Hellman(IEₛₖ, Eₚₖ), _Context) .
  • این encData با استفاده از SS رمزگشایی می‌کند.

اصطلاحات

مدت تعریف و جزئیات
دیₚₖ زنجیره گواهی کلید اعتبار (گواهی‌های هویت دستگاه): یک زنجیره گواهی X.509 برای کلید اعتبار که اعتبار را به مرجع صادرکننده شناسایی می‌کند.
  • شامل یک افزونه‌ی گواهی‌نامه‌ی فروشگاه کلید اندروید است که کلید و سخت‌افزار امنیتی آن را توصیف می‌کند.
  • برای اثبات مالکیت سند استفاده می‌شود.
  • صادرکننده باید این زنجیره گواهی را به دقت بررسی کند (مثلاً تأیید کند که گواهی ریشه شناخته شده است، وجود Tag::IDENTITY_CREDENTIAL_KEY، وجود ایراد، Tag::ATTESTATION_APPLICATION_ID صحیح، فعال بودن بوت تأیید شده، و وضعیت امضا/ابطال).
Aₚₖ کلیدهای تأیید: کلیدهای تأیید هویت پویای X.509 که نیاز به گواهی دارند و هر کدام توسط CredentialKey امضا شده‌اند.
  • صادرکننده برای هر کلید، داده‌های احراز هویت استاتیک تولید می‌کند، آن را به دستگاه ارسال می‌کند و دستگاه آن را از طریق storeStaticAuthenticationData ذخیره می‌کند.
  • این کلید یک payload است که رمزگذاری می‌شود و مستقیماً برای E2EE استفاده نمی‌شود.
  • فیلدهای غیراختیاری X.509 عبارتند از: نسخه (INTEGER 2)، شماره سریال (INTEGER 1)، امضا (ECDSA)، موضوع (CN روی "Android Identity Credential Authentication Key" تنظیم شده باشد)، صادرکننده (CN روی "Android Identity Credential Key" تنظیم شده باشد)، اعتبار (زمان فعلی تا 365 روز آینده) و subjectPublicKeyInfo (باید حاوی کلید عمومی تأیید شده باشد).
اینترنت اکسپلورر، جفت کلید رمزگذاری صادرکننده: یک کلید نامتقارن که توسط صادرکننده تولید می‌شود. دستگاه از این کلید برای انجام رمزگذاری ترکیبی برای صادرکننده استفاده می‌کند.
II₍ₛₖ،ₚₖ₎ جفت کلید هویت صادرکننده: یک کلید نامتقارن که توسط صادرکننده تولید می‌شود. دستگاه از این کلید برای تأیید هویت صادرکننده استفاده می‌کند.
DE₍ₛₖ،ₚₖ₎ جفت کلید رمزگذاری دستگاه: یک کلید نامتقارن زودگذر که توسط دستگاه در هر درخواست تولید می‌شود. صادرکننده از این کلید برای انجام رمزگذاری ترکیبی روی دستگاه استفاده می‌کند.
FE₍ₛₖ،ₚₖ₎ کلید رمزگذاری فیلد: یک کلید نامتقارن زودگذر که در طول رمزگذاری ترکیبی برای هر فیلد تولید می‌شود.

E2EE در API تأمین اعتبار دیجیتال گوگل

مرحله ۱: دریافت کلید هویت صادرکننده و کلید رمزگذاری

  • نقاط پایانی API: /getIdentityKey ، /getHybridEncryptionKey .
  • بازده: IIₚₖ ، IEₚₖ .

مرحله ۲: دریافت Nonce ثبت دستگاه

  • یک شناسه مرجع دستگاه ( deviceReferenceId ) ایجاد کنید.
  • نقطه پایانی API: فراخوانی /getDeviceRegistrationNonce(deviceReferenceId) .
  • مقدار بازگشتی: nonce .

مرحله ۳: ثبت دستگاه

  • اعتبارنامه هویت اندروید را تنظیم کنید.
  • تابع IC.getCredentialKeyCertificateChain(nonce) را فراخوانی کنید که یک DIₚₖ که به صورت nonce تعبیه شده است را برمی‌گرداند.
  • نقطه پایانی API: فراخوانی /registerDevice(deviceReferenceId, DIₚₖ) .
  • مرجع صادرکننده باید این زنجیره گواهی را به دقت بررسی کند تا اطمینان حاصل شود که گواهی ریشه شناخته شده است، چالش وجود دارد، ATTESTATION_APPLICATION_ID با برنامه مورد انتظار مطابقت دارد، بوت تأیید شده فعال است و امضاها یا ابطال‌ها معتبر هستند.
  • مقدار بازگشتی: ack .

مرحله 4a: ارسال درخواست تأیید

  • برای هر فیلد:
    • برای تولید encData و FEₚₖ Hybrid-Encrypt(Data, IEₚₖ, Context=FieldName) را اجرا کنید.
    • برای بدست آوردن sigData (یک ساختار داده COSE_Sign1 که توسط CredentialKey امضا شده و payload آن روی ProofofOwnership تنظیم شده است) تابع IC.proveOwnership(SHA-256(Data + IEₚₖ)) را فراخوانی کنید.
  • نقطه پایانی API: فراخوانی /proofUser([encData, sigData, FEₚₖ]) .
  • مرجع صادرکننده، sigData با استفاده از DIₚₖ تأیید می‌کند.
  • مرجع صادرکننده، Hybrid-Decrypt(encData, FEₚₖ, IEₛₖ, Context=FieldName) را برای تولید Data اجرا می‌کند.
  • مقدار بازگشتی: ack .

مرحله 4b: به‌روزرسانی وضعیت اثبات

  • با استفاده از deviceReferenceId و proofingId گوگل را از به‌روزرسانی وضعیت Proofing مطلع کنید.
  • نقطه پایانی API: فراخوانی /notifyProofingStatusUpdateAvailable(...) .
  • سرورهای گوگل با فراخوانی /getProofingStatus(deviceReferenceId, proofingId) ‎ وضعیت اثبات را از صادرکننده واکشی می‌کنند.

مرحله 5: ارائه اعتبارنامه

  • برای دریافت sigDEₚₖ (ساختار COSE_Sign1 که توسط CredentialKey/DIₛₖ با بار مفید ProofofOwnship امضا شده است)، تابع IC.proveOwnership(SHA-256(DEₚₖ)) را فراخوانی کنید.
  • نقطه پایانی API: ارسال deviceReferenceId ، proofingId ، credentialId و sigDEₚₖ به صادرکننده از طریق /provisionCredential(dRId, pId, cId, DEₚₖ, sigDEₚₖ) .
  • سمت صادرکننده:
    • sigDEₚₖ با DIₚₖ تأیید کنید.
    • اعتبارنامه (PersonalizationData + AccessControlProfiles) را رمزگذاری کنید.
    • برای تولید encCred و FEₚₖ Hybrid-Encrypt(Cred, DEₚₖ, Context=FieldName) را اجرا کنید.
    • با امضای COSE_Sign1 SHA-256(Cred + DEₚₖ) با IIₛₖ sigCred ایجاد کنید.
    • encCred ، sigCred و FEₚₖ را برمی‌گرداند.
  • سمت دستگاه:
    • با استفاده از IIₚₖ sigCred را تأیید کنید.
    • برای استخراج Cred Hybrid-Decrypt(encCred, FEₚₖ, DEₛₖ, Context=FieldName) را اجرا کنید.
    • برای دریافت sigCredReceipt (COSE_Sign1 که توسط CredentialKey امضا شده و شامل payload ProofOfProvisioning است) تابع WC.personalize(Cred) را فراخوانی کنید.
    • دستور Hybrid-Encrypt(sigCredReceipt, DEₛₖ, Context=FieldName) را اجرا کنید تا encReceipt و FE1ₚₖ تولید شوند.
    • برای دریافت sigReceipt (COSE_Sign1 امضا شده توسط CredentialKey، payload ProofofOwnership) تابع IC.proveOwnership(SHA-256(encReceipt + IEₚₖ)) فراخوانی کنید.
    • کلیدهای تأیید [ Aₚₖ ] را تولید کنید.

مرحله 6: تولید MSO و StaticAuthData

  • سمت دستگاه:
    • برای هر کلید احراز هویت: Hybrid-Encrypt(AuthKey, IEₚₖ, Context=FieldName) را اجرا کنید تا encAuthKey و FEₚₖ تولید شوند.
    • برای دریافت sigAuthKey تابع IC.proveOwnership(SHA-256(AuthKey + IEₚₖ)) را فراخوانی کنید.
    • نقطه پایانی 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 است.
    • برای تولید encSAD و FEₚₖ Hybrid-Encrypt(SAD, DEₚₖ, Context=FieldName) را اجرا کنید.
    • با استفاده از COSE_Sign1 SHA-256(SAD + DEₚₖ) و IIₛₖ ، sigSAD امضا کنید.
    • عبارت [encSAD, sigSAD, FEₚₖ] را برگردان.
  • سمت دستگاه (نهایی):
    • برای هر encSAD, sigSAD, FEₚₖ برگردانده شده: sigSAD با IIₚₖ تأیید کنید.
    • برای استخراج SAD Hybrid-Decrypt(encSAD, FEₚₖ, DEₛₖ, Context=FieldName) را اجرا کنید.
    • برای تکمیل فرآیند، تابع storeStaticAuthenticationData با SAD فراخوانی کنید.

الزامات چرخش

کلید هویت صادرکننده باید هر سال یک بار تغییر کند. در طول دوره تغییر، صادرکننده باید میزبان کلید قدیمی و جدید باشد و دستگاه به هر دوی این کلیدها اعتماد خواهد کرد. هنگامی که صادرکننده به طور کامل به استفاده از کلید هویت صادرکننده جدید روی آورد، صادرکننده باید میزبانی کلید قدیمی را متوقف کند و دستگاه دیگر به آن اعتماد نخواهد کرد.

کلید رمزگذاری ترکیبی صادرکننده باید هر ۳ ماه یک بار تغییر کند. در طول دوره تغییر، صادرکننده باید فقط کلید جدید را میزبانی کند و دستگاه شروع به رمزگذاری با کلید جدید خواهد کرد. صادرکننده باید برای مدت زمان معقولی از رمزگشایی با استفاده از کلید قدیمی و جدید پشتیبانی کند تا از خرابی جلوگیری شود.

مقادیر AAD

از مقادیر زمینه زیر برای AAD استفاده کنید.

فیلدها ارزش‌های زمینه‌ای
کد پیش مجوز کد پیش مجوز

برای مقادیر AAD سایر انواع شواهد، با نماینده گوگل خود تماس بگیرید.

بردارهای آزمایش برای رمزگذاری سرتاسری اعتبارنامه‌های دیجیتال

بردارهای آزمون برای رمزگذاری سرتاسری شناسه دیجیتال، مجموعه‌ای از پیام‌های از پیش تعریف‌شده و نسخه‌های رمزگذاری‌شده آن‌ها هستند که برای آزمایش صحت الگوریتم رمزگذاری استفاده می‌شوند.

پارامترهای رمزگذاری 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

مشتری → صادرکننده، صادرکننده → مشتری

نمونه برای ارتباط در هر دو جهت.

نمونه فیلد درخواست رمزگذاری شده

متن ساده = "سلام دنیا!"، داده مرتبط = "فیلد1"

{
  "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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

برای جزئیات بیشتر به مستندات Key Attestation اندروید مراجعه کنید.

کلید رمزگذاری دستگاه

  • کلید خصوصی

    -----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-----