Appendice A. Valori intermedi per la crittografia
Appendice A. Valori intermedi per la crittografia
Qui sono riportati i valori intermedi calcolati per l'esempio della Sezione 5. Gli spazi nei valori base64url possono essere rimossi.
Input al calcolo:
Testo in chiaro (Plaintext): V2hlbiBJIGdyb3cgdXAsIEkgd2FudCB0byBiZSBhIHdhdGVybWVsb24
Chiave pubblica dell'application server (as_public):
BP4z9KsN6nGRTbVYI_c7VJSPQTBtkgcy27mlmlMoZIIg
Dll6e3vCYLocInmYWAmS6TlzAC8wEqKK6PBru3jl7A8
Chiave privata dell'application server (as_private): yfWPiYE-n46HLnH0KqZOF1fJJU3MYrct3AELtAQ-oRw
Chiave pubblica dell'user agent (ua_public):
BCVxsr7N_eNgVRqvHtD0zTZsEc6-VV-
JvLexhqUzORcx aOzi6-AYWXvTBHm4bjyPjs7Vd8pZGH6SRpkNtoIAiw4
Chiave privata dell'user agent (ua_private): q1dXpw3UpT5VOmu_cf_v6ih07Aems3njxI-JWgLcM94
Salt: DGv6ra1nlYgDCS1FRnbzlw
Authentication secret (auth_secret): BTBZMqHH6r4Tts7J_aSIgg
Basta conoscere una delle chiavi private. L'application server genera il salt in modo casuale, mentre per il ricevente il salt è un input.
Si ottengono i seguenti valori intermedi:
Segreto ECDH condiviso (ecdh_secret): kyrL1jIIOHEzg3sM2ZWRHDRB62YACZhhSlknJ672kSs
Chiave pseudocasuale (PRK) per la combinazione delle chiavi (PRK_key): Snr3JMxaHVDXHWJn5wdC52WjpCtd2EIEGBykDcZW32k
Info per la combinazione delle chiavi (key_info):
V2ViUHVzaDogaW5mbwAEJXGyvs3942BVG
q8e0PTNNmwR zr5VX4m8t7GGpTM5FzFo7OLr4BhZe9MEebhuPI-OztV3
ylkYfpJGmQ22ggCLDgT-M_SrDepxkU21WCP3O1SUj0Ew
bZIHMtu5pZpTKGSCIA5Zent7wmC6HCJ5mFgJkuk5cwAv MBKiiujwa7t45ewP
Input keying material per la derivazione della content encryption key (IKM): S4lYMb_L0FxCeq0WhDx813KgSYqU26kOyzWUdsXYyrg
PRK per la crittografia del contenuto (PRK): 09_eUZGrsvxChDCGRCdkLiDXrReGOEVeSCdCcPBSJSc
Info per la derivazione della CEK (cek_info): Q29udGVudC1FbmNvZGluZzogYWVzMTI4Z2NtAA
Content encryption key (CEK): oIhVW04MRdy2XN9CiKLxTg
Info per la derivazione del nonce (nonce_info): Q29udGVudC1FbmNvZGluZzogbm9uY2UA
Nonce (NONCE): 4h_95klXJ5E_qnoN
Il salt, la dimensione del record 4096 e la chiave pubblica dell'application server producono un'intestazione di 86 ottetti:
DGv6ra1nlYgDCS1FRnbzlwAAEABBBP4z 9KsN6nGRTbVYI_c7VJSPQTBtkgcy27ml
mlMoZIIgDll6e3vCYLocInmYWAmS6Tlz AC8wEqKK6PBru3jl7A8
Al testo in chiaro del messaggio push viene aggiunto l'ottetto delimitatore di padding (0x02):
V2hlbiBJIGdyb3cgdXAsIEkgd2FudCB0 byBiZSBhIHdhdGVybWVsb24C
Il testo in chiaro è poi crittografato con AES-GCM, producendo il ciphertext:
8pfeW0KbunFT06SuDKoJH9Ql87S1QUrd irN6GcG7sFz1y1sqLgVi1VhjVkHsUoEs
bI_0LpXMuGvnzQ
L'intestazione e il ciphertext concatenati producono il risultato della Sezione 5.