Pytania i odpowiedzi (FAQ)
Z czego ma się składać wejście dla funkcji tworzącej AT (Authentication Tag") ?
Należy użyć ciągu bajtów postaci Base64URL dodatkowych danych uwierzytelniających AAD, a pozostałe części czyli wektor inicjujący oraz zaszyfrowane dane należy odkodować z Base64URL do postaci bajtowej. Przykład z wykorzystaniem danych ze specyfikacji https://tools.ietf.org/html/rfc7516#appendix-B
Postać szesnastkowa odszyfrowanego klucza 32 bajtowego CEK (Content Encryption Key):
04d31fc5549dfcfe0b649dfa3faa6ace6b7cd42d6f6b09dbc8b100f08f9c2ccf
pierwsze 16 bajtów wykorzystywane w funkcji HMAC:
MAC_KEY:
04d31fc5549dfcfe0b649dfa3faa6ace
ostatnie 16 bajtów wykorzystywane do odszyfrowania treści algorytmem AES:
ENC_KEY:
6b7cd42d6f6b09dbc8b100f08f9c2ccf
użyte dane autoryzujące AAD (nagłówek JWE):
postać ASCII:
{"alg":"A128KW","enc":"A128CBC-HS256"}
postać Base65URL:
eyJhbGciOiJBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0
postać szesnastkowa (bajty postaci Base64URL) wykorzystana w funkcji HMAC:
65794a68624763694f694a424d544934533163694c434a6c626
d4d694f694a424d54493451304a444c5568544d6a5532496e30
użyty 16 bajtowy wektor inicjujący IV:
postać Base65URL:
AxY8DCtDaGlsbGljb3RoZQ
postać szesnastkowa wykorzystana w funkcji HMAC:
03163c0c2b4368696c6c69636f746865
zaszyfrowane dane użyte również do wyliczenia etykiety uwierzytelniającej:
postać Base65URL:
KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY
postać szesnastkowa wykorzystana w funkcji HMAC:
283953b577218594c6b9f31898e6064b81df7f13d252b7e6a821d7688f703866
długość dodatkowych danych autoryzujących w formacie Base64URL wynosi 51 bajtów, czyli 408 bitów i w formacie Big-Endian w postaci szesnastkowej ma wartość:
0000000000000198
Dokonując konkatenacji bajtowej AAD, IV oraz danych zaszyfrowanych i długości AAD do wyliczenia MAC będzie wykorzystany ciąg bajtów:
65794a68624763694f694a424d544934533163694c434a6c626d4d694f694a424d54493
451304a444c5568544d6a5532496e3003163c0c2b4368696c6c69636f746865283953b5
77218594c6b9f31898e6064b81df7f13d252b7e6a821d7688f7038660000000000000198
Wynik użycia powyższego ciągu bajtów oraz klucza MAC_KEY 04d31fc5549dfcfe0b649dfa3faa6ace funkcja haszująca HS256 powinna zwrócić 32 bajtową wartość:
5349bf6268cdd380c9bdc7852026c2550954e5c9db872cfc9166b38c6956e574