การเข้ารหัสจากต้นทางถึงปลายทาง

ภาพรวม HPKE

การเข้ารหัสคีย์สาธารณะแบบผสม (HPKE) เป็นกลไกการเข้ารหัสที่ใช้เพื่อเข้ารหัส เพย์โหลดไปยังคีย์สาธารณะ เรียกว่า "ไฮบริด" เนื่องจากเพย์โหลดเอง ได้รับการเข้ารหัสด้วยคีย์แบบสมมาตร และ HPKE จะได้คีย์แบบสมมาตรนี้โดยใช้ การแลกเปลี่ยนคีย์ Diffie-Hellman

โหมด HPKE

  • พื้นฐาน: โหมดที่พบบ่อยที่สุด
  • Auth: ใช้คีย์ส่วนตัวของผู้ส่งในการตรวจสอบสิทธิ์
  • 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 ที่ระบุข้อมูลเข้าสู่ระบบต่อหน่วยงานที่ออก
  • มีส่วนขยายการรับรอง Android Keystore ที่อธิบายคีย์และฮาร์ดแวร์ความปลอดภัยของคีย์
  • ใช้เพื่อพิสูจน์ความเป็นเจ้าของข้อมูลเข้าสู่ระบบ
  • ผู้ออกต้องตรวจสอบห่วงโซ่ใบรับรองนี้อย่างละเอียด (เช่น การยืนยันว่าใบรับรองรูทเป็นที่รู้จัก การมี Tag::IDENTITY_CREDENTIAL_KEY การมีคำท้า การมี Tag::ATTESTATION_APPLICATION_ID ที่ถูกต้อง การเปิดใช้การเปิดเครื่องที่ได้รับการยืนยัน และสถานะลายเซ็น/การเพิกถอน)
Aₚₖ คีย์การตรวจสอบสิทธิ์: คีย์การตรวจสอบสิทธิ์ X.509 แบบไดนามิกที่ต้องมีการรับรอง โดยแต่ละคีย์จะลงนามโดย CredentialKey
  • ผู้ออกบัตรจะสร้างข้อมูลการให้สิทธิ์แบบคงที่สำหรับแต่ละคีย์ ส่งไปยังอุปกรณ์ และอุปกรณ์จะจัดเก็บข้อมูลดังกล่าวผ่าน storeStaticAuthenticationData
  • คีย์นี้คือเพย์โหลดที่จะได้รับการเข้ารหัส ไม่ได้ใช้โดยตรงสำหรับ E2EE
  • ฟิลด์ X.509 ที่ต้องระบุ ได้แก่ version (INTEGER 2), serialNumber (INTEGER 1), signature (ECDSA), subject (CN ตั้งค่าเป็น "Android Identity Credential Authentication Key"), issuer (CN ตั้งค่าเป็น "Android Identity Credential Key"), validity (เวลาปัจจุบันถึง 365 วันในอนาคต) และ subjectPublicKeyInfo (ต้องมีคีย์สาธารณะที่รับรอง)
IE₍ₛₖ,ₚₖ₎ คู่คีย์การเข้ารหัสของผู้ออกใบรับรอง: คีย์แบบอสมมาตรที่ผู้ออกใบรับรองสร้างขึ้น อุปกรณ์จะใช้คีย์นี้เพื่อทำการเข้ารหัสแบบผสมกับผู้ออกบัตร
II₍ₛₖ,ₚₖ₎ คู่คีย์ประจำตัวผู้ออก: คีย์แบบอสมมาตรที่ผู้ออกสร้างขึ้น อุปกรณ์จะใช้คีย์นี้เพื่อยืนยันตัวตนของผู้ออกบัตร
DE₍ₛₖ,ₚₖ₎ คู่คีย์การเข้ารหัสอุปกรณ์: คีย์แบบอสมมาตรชั่วคราวที่อุปกรณ์สร้างขึ้นต่อคำขอ ผู้ออกจะใช้คีย์นี้เพื่อทำการเข้ารหัสแบบผสมกับอุปกรณ์
FE₍ₛₖ,ₚₖ₎ คีย์การเข้ารหัสฟิลด์: คีย์แบบอสมมาตรชั่วคราวที่สร้างขึ้นต่อฟิลด์ในระหว่างการเข้ารหัสแบบไฮบริด

การเข้ารหัสจากต้นทางถึงปลายทางใน Google Digital Credential Provisioning API

ขั้นตอนที่ 1: รับคีย์ระบุตัวตนของผู้ออกและคีย์การเข้ารหัส

  • ปลายทาง API: /getIdentityKey, /getHybridEncryptionKey
  • การคืนสินค้า: IIₚₖ, IEₚₖ

ขั้นตอนที่ 2: รับ Nonce การลงทะเบียนอุปกรณ์

  • สร้างรหัสอ้างอิงอุปกรณ์ (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 โดยตั้งค่าเพย์โหลดเป็น ProofofOwnership)
  • ปลายทาง API: เรียก /proofUser([encData, sigData, FEₚₖ])
  • หน่วยงานที่ออกใบอนุญาตจะยืนยัน sigData โดยใช้ DIₚₖ
  • หน่วยงานที่ออกใบอนุญาตจะดำเนินการ Hybrid-Decrypt(encData, FEₚₖ, IEₛₖ, Context=FieldName) เพื่อสร้าง Data
  • การคืนสินค้า: ack

ขั้นตอนที่ 4b: อัปเดตสถานะการพิสูจน์อักษร

  • แจ้งให้ Google ทราบถึงการอัปเดตสถานะการพิสูจน์ตัวตนโดยใช้ deviceReferenceId และ proofingId
  • ปลายทาง API: เรียก /notifyProofingStatusUpdateAvailable(...)
  • เซิร์ฟเวอร์ของ Google จะดึงสถานะการพิสูจน์จากผู้ออกบัตรโดยการเรียกใช้ /getProofingStatus(deviceReferenceId, proofingId)

ขั้นตอนที่ 5: จัดสรรข้อมูลเข้าสู่ระบบ

  • เรียกใช้ IC.proveOwnership(SHA-256(DEₚₖ)) เพื่อรับ sigDEₚₖ (โครงสร้าง COSE_Sign1 ที่ลงนามโดย CredentialKey/DIₛₖ พร้อมเพย์โหลด 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, เพย์โหลด 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
    • ปลายทาง 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 เพื่อดำเนินการให้เสร็จสิ้น

ข้อกำหนดในการหมุนเวียน

ควรหมุนเวียนคีย์ระบุตัวตนของผู้ออกใบรับรองปีละครั้ง ในระหว่างระยะเวลาการหมุนเวียน ผู้ออกใบรับรองควรโฮสต์คีย์เก่าและคีย์ใหม่ และอุปกรณ์จะ เชื่อถือทั้ง 2 คีย์ เมื่อผู้ออกเปลี่ยนไปใช้ คีย์ระบุตัวตนของผู้ออกใหม่โดยสมบูรณ์แล้ว ผู้ออกควรหยุดโฮสต์คีย์เก่าและอุปกรณ์ จะไม่เชื่อถือคีย์นั้นอีกต่อไป

คีย์การเข้ารหัสแบบไฮบริดของผู้ออกบัตรควรมีการหมุนเวียนทุกๆ 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

ไคลเอ็นต์ → ผู้ออกใบรับรอง, ผู้ออกใบรับรอง → ไคลเอ็นต์

ตัวอย่างสำหรับการสื่อสารทั้ง 2 ทิศทาง

ฟิลด์คำขอที่เข้ารหัสตัวอย่าง

ข้อความธรรมดา = "Hello, world!", ข้อมูลที่เชื่อมโยง = "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-----