メインコンテンツまでスキップ

付録 A. 暗号化の中間値

付録 A. 暗号化の中間値

第5節の例で計算した中間値を示す. 以下の base64url 値に含まれる空白は削除してよい.

計算への入力は次のとおり.

平文 (Plaintext): V2hlbiBJIGdyb3cgdXAsIEkgd2FudCB0byBiZSBhIHdhdGVybWVsb24

アプリケーションサーバー公開鍵 (as_public):

BP4z9KsN6nGRTbVYI_c7VJSPQTBtkgcy27mlmlMoZIIg
Dll6e3vCYLocInmYWAmS6TlzAC8wEqKK6PBru3jl7A8

アプリケーションサーバー秘密鍵 (as_private): yfWPiYE-n46HLnH0KqZOF1fJJU3MYrct3AELtAQ-oRw

ユーザエージェント公開鍵 (ua_public):

BCVxsr7N_eNgVRqvHtD0zTZsEc6-VV-
JvLexhqUzORcx aOzi6-AYWXvTBHm4bjyPjs7Vd8pZGH6SRpkNtoIAiw4

ユーザエージェント秘密鍵 (ua_private): q1dXpw3UpT5VOmu_cf_v6ih07Aems3njxI-JWgLcM94

Salt: DGv6ra1nlYgDCS1FRnbzlw

認証秘密 (auth_secret): BTBZMqHH6r4Tts7J_aSIgg

秘密鍵のどちらか一方だけが分かれば十分である. アプリケーションサーバーは salt をランダム生成するが, 受信側では salt が入力となる.

得られる中間値は次のとおり.

共有 ECDH 秘密 (ecdh_secret): kyrL1jIIOHEzg3sM2ZWRHDRB62YACZhhSlknJ672kSs

鍵結合用疑似乱数鍵 (PRK_key): Snr3JMxaHVDXHWJn5wdC52WjpCtd2EIEGBykDcZW32k

鍵結合用 info (key_info):

V2ViUHVzaDogaW5mbwAEJXGyvs3942BVG
q8e0PTNNmwR zr5VX4m8t7GGpTM5FzFo7OLr4BhZe9MEebhuPI-OztV3
ylkYfpJGmQ22ggCLDgT-M_SrDepxkU21WCP3O1SUj0Ew
bZIHMtu5pZpTKGSCIA5Zent7wmC6HCJ5mFgJkuk5cwAv MBKiiujwa7t45ewP

コンテント暗号化鍵導入の入力鍵素材 (IKM): S4lYMb_L0FxCeq0WhDx813KgSYqU26kOyzWUdsXYyrg

コンテント暗号化用 PRK (PRK): 09_eUZGrsvxChDCGRCdkLiDXrReGOEVeSCdCcPBSJSc

CEK 導出用 info (cek_info): Q29udGVudC1FbmNvZGluZzogYWVzMTI4Z2NtAA

コンテント暗号化鍵 (CEK): oIhVW04MRdy2XN9CiKLxTg

nonce 導出用 info (nonce_info): Q29udGVudC1FbmNvZGluZzogbm9uY2UA

Nonce (NONCE): 4h_95klXJ5E_qnoN

salt, レコードサイズ4096, アプリケーションサーバー公開鍵から86オクテットのヘッダが得られる.

DGv6ra1nlYgDCS1FRnbzlwAAEABBBP4z 9KsN6nGRTbVYI_c7VJSPQTBtkgcy27ml
mlMoZIIgDll6e3vCYLocInmYWAmS6Tlz AC8wEqKK6PBru3jl7A8

プッシュメッセージの平文にパディング区切りオクテット (0x02) を付加すると:

V2hlbiBJIGdyb3cgdXAsIEkgd2FudCB0 byBiZSBhIHdhdGVybWVsb24C

平文を AES-GCM で暗号化すると次の暗号文となる.

8pfeW0KbunFT06SuDKoJH9Ql87S1QUrd irN6GcG7sFz1y1sqLgVi1VhjVkHsUoEs
bI_0LpXMuGvnzQ

ヘッダと暗号文を連結すると第5節の結果になる.