Appendix B. Test Vectors (Vecteurs de test)
Appendix B. Test Vectors (Vecteurs de test)
Toutes les valeurs sont en hexadécimal.
B.1. AES-f8 Test Vectors (Vecteurs de test AES-f8)
SRTP PREFIX LENGTH : 0
RTP packet header : 806e5cba50681de55c621599
RTP packet payload : 70736575646f72616e646f6d6e657373
20697320746865206e65787420626573
74207468696e67
ROC : d462564a
key : 234829008467be186c3de14aae72d62c
salt key : 32f2870d
key-mask (m) : 32f2870d555555555555555555555555
key XOR key-mask : 11baae0dd132eb4d3968b41ffb278379
IV : 006e5cba50681de55c621599d462564a
IV' : 595b699bbd3bc0df26062093c1ad8f73
j = 0
IV' xor j : 595b699bbd3bc0df26062093c1ad8f73
S(-1) : 00000000000000000000000000000000
IV' xor S(-1) xor j : 595b699bbd3bc0df26062093c1ad8f73
S(0) : 71ef82d70a172660240709c7fbb19d8e
plaintext : 70736575646f72616e646f6d6e657373
ciphertext : 019ce7a26e7854014a6366aa95d4eefd
j = 1
IV' xor j : 595b699bbd3bc0df26062093c1ad8f72
S(0) : 71ef82d70a172660240709c7fbb19d8e
IV' xor S(0) xor j : 28b4eb4cb72ce6bf020129543a1c12fc
S(1) : 3abd640a60919fd43bd289a09649b5fc
plaintext : 20697320746865206e65787420626573
ciphertext : 1ad4172a14f9faf455b7f1d4b62bd08f
j = 2
IV' xor j : 595b699bbd3bc0df26062093c1ad8f71
S(1) : 3abd640a60919fd43bd289a09649b5fc
IV' xor S(1) xor j : 63e60d91ddaa5f0b1dd4a93357e43a8d
S(2) : 220c7a8715266565b09ecc8a2a62b11b
plaintext : 74207468696e67
ciphertext : 562c0eef7c4802
B.2. AES-CM Test Vectors (Vecteurs de test AES-CM)
Keystream segment length: 1044512 octets (65282 AES blocks)
Session Key: 2B7E151628AED2A6ABF7158809CF4F3C
Rollover Counter: 00000000
Sequence Number: 0000
SSRC: 00000000
Session Salt: F0F1F2F3F4F5F6F7F8F9FAFBFCFD0000 (already shifted)
Offset: F0F1F2F3F4F5F6F7F8F9FAFBFCFD0000
Counter Keystream
F0F1F2F3F4F5F6F7F8F9FAFBFCFD0000 E03EAD0935C95E80E166B16DD92B4EB4
F0F1F2F3F4F5F6F7F8F9FAFBFCFD0001 D23513162B02D0F72A43A2FE4A5F97AB
F0F1F2F3F4F5F6F7F8F9FAFBFCFD0002 41E95B3BB0A2E8DD477901E4FCA894C0
... ...
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF EC8CDF7398607CB0F2D21675EA9EA1E4
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFF00 362B7C3C6773516318A077D7FC5073AE
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFF01 6A2CC3787889374FBEB4C81B17BA6C44
Nota Bene: ce cas de test est conçu de sorte que la dernière partie du segment de flux de clés coïncide avec le cas de test de la section F.5.1 de [CTR].
B.3. Key Derivation Test Vectors (Vecteurs de test de dérivation de clé)
Cette section fournit des données de test pour la fonction de dérivation de clé par défaut, qui utilise AES-128 en mode compteur. Dans ce qui suit, nous détaillons la dérivation de clé initiale pour le chiffrement en mode compteur AES-128, qui nécessite une clé de chiffrement de session de 16 octets et un sel de session de 14 octets, ainsi qu'une fonction d'authentification qui nécessite une clé d'authentification de session de 94 octets. Ces valeurs sont appelées clé de chiffrement (cipher key), sel de chiffrement (cipher salt) et clé d'authentification (auth key) dans ce qui suit. Comme il s'agit de la dérivation de clé initiale et que le taux de dérivation de clé est égal à zéro, la valeur de (index DIV key_derivation_rate) est zéro (en fait, une chaîne de six octets de zéros). Dans ce qui suit, nous abrégeons key_derivation_rate en kdr.
Les entrées de la fonction de dérivation de clé sont la clé maîtresse de 16 octets et le sel maître de 14 octets:
master key: E1F97A0D3E018BE0D64FA32C06DE4139
master salt: 0EC675AD498AFEEBB6960B3AABE6
Nous montrons d'abord comment la clé de chiffrement est générée. Le bloc d'entrée pour AES-CM est généré en effectuant un OU exclusif du sel maître avec la concaténation de l'étiquette de clé de chiffrement 0x00 avec (index DIV kdr), puis en ajoutant à droite deux octets nuls (ce qui implémente l'opération de multiplication par 2^16, voir section 4.3.3). La valeur résultante est ensuite chiffrée par AES-CM en utilisant la clé maîtresse pour obtenir la clé de chiffrement.
index DIV kdr: 000000000000
label: 00
master salt: 0EC675AD498AFEEBB6960B3AABE6
-----------------------------------------------
xor: 0EC675AD498AFEEBB6960B3AABE6 (x, PRF input)
x*2^16: 0EC675AD498AFEEBB6960B3AABE60000 (AES-CM input)
cipher key: C61E7A93744F39EE10734AFE3FF7A087 (AES-CM output)
Ensuite, nous montrons comment le sel de chiffrement est généré. Le bloc d'entrée pour AES-CM est généré en effectuant un OU exclusif du sel maître avec la concaténation de l'étiquette de sel de chiffrement. Cette valeur est remplie et chiffrée comme ci-dessus.
index DIV kdr: 000000000000
label: 02
master salt: 0EC675AD498AFEEBB6960B3AABE6
----------------------------------------------
xor: 0EC675AD498AFEE9B6960B3AABE6 (x, PRF input)
x*2^16: 0EC675AD498AFEE9B6960B3AABE60000 (AES-CM input)
30CBBC08863D8C85D49DB34A9AE17AC6 (AES-CM ouptut)
cipher salt: 30CBBC08863D8C85D49DB34A9AE1
Nous montrons maintenant comment la clé d'authentification est générée. Le bloc d'entrée pour AES-CM est généré comme ci-dessus, mais en utilisant l'étiquette de clé d'authentification.
index DIV kdr: 000000000000
label: 01
master salt: 0EC675AD498AFEEBB6960B3AABE6
-----------------------------------------------
xor: 0EC675AD498AFEEAB6960B3AABE6 (x, PRF input)
x*2^16: 0EC675AD498AFEEAB6960B3AABE60000 (AES-CM input)
Ci-dessous, la clé d'authentification est affichée à gauche, tandis que les blocs d'entrée AES correspondants sont affichés à droite.
auth key AES input blocks
CEBE321F6FF7716B6FD4AB49AF256A15 0EC675AD498AFEEAB6960B3AABE60000
6D38BAA48F0A0ACF3C34E2359E6CDBCE 0EC675AD498AFEEAB6960B3AABE60001
E049646C43D9327AD175578EF7227098 0EC675AD498AFEEAB6960B3AABE60002
6371C10C9A369AC2F94A8C5FBCDDDC25 0EC675AD498AFEEAB6960B3AABE60003
6D6E919A48B610EF17C2041E47403576 0EC675AD498AFEEAB6960B3AABE60004
6B68642C59BBFC2F34DB60DBDFB2 0EC675AD498AFEEAB6960B3AABE60005