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