Al generar la clave/secreto maestro, seguí los pasos descritos en mi script de shell. Validé que le estoy pasando datos correctamente ingresando manualmente estos pasos varias veces (ingresando la clave $ manualmente) y finalmente llego al mismo resultado/datos en este caso.
clave = clave maestra previa descifrada del paso anterior
03033ab0d673caefc4a9f6d35cf51d349815d67a09ac454f11dfb9741c96001a
66a3e82f688b82138403018384cf35f2
mseed.key = "master secret" + client.random + server.random El archivo es un archivo binario cuando uso el hexdump xxd -p mseed.key para que puedas ver los datos:
6d617374657220736563726574 5b689404b500456eef2f1a79ec782eb3ee
aac3a8d7c02ae03c8426f363b18a33 5b6894043bb1289e158b0278ef66dc
53c9fa71e75e900739af2657cd4476ec1e
Note: the spaces are not in the data I added those manually to make it clear
cliente.aleatorio xxd -p crnd.bin
5b689404b500456eef2f1a79ec782eb3eeaac3a8d7c02ae03c8426f363b1
8a33
servidor.random xxd - srnd.bin
5b6894043bb1289e158b0278ef66dc53c9fa71e75e900739af2657cd4476
ec1e
Para que quede claro, esos elementos aleatorios también incluyen el prefijo de tiempo Unix (¿correcto?)
key=${1} #passed to shell script
openssl dgst -sha256 -mac hmac -macopt hexkey:$key <mseed.key -binary >a1
openssl dgst -sha256 -mac hmac -macopt hexkey:$key <a1 -binary >a2
openssl dgst -sha256 -mac hmac -macopt hexkey:$key <a2 -binary >a3
openssl dgst -sha256 -mac hmac -macopt hexkey:$key <a3 -binary >a4
El siguiente paso es:
cat a1 mseed.key | openssl dgst -sha256 -mac hmac -macopt hexkey:$key -binary >k1
cat a2 mseed.key | openssl dgst -sha256 -mac hmac -macopt hexkey:$key -binary >k2
cat a3 mseed.key | openssl dgst -sha256 -mac hmac -macopt hexkey:$key -binary >k3
cat a4 mseed.key | openssl dgst -sha256 -mac hmac -macopt hexkey:$key -binary >k4
Seguido de extraer el secreto maestro.
cat k1 k2 | head -c48 | xxd -p -c48 > master_secret.hex
truncate -s-1 master_secret.hex
master_secret en este punto
$cat master_secret.hex
ee45b637f95ddf3b3bf51661cdf4e07bdd63a67f2d2df776322992b3fd871fe4ba38debcd7179bf4
ef8b8bb814fe4544d
De mi registro de Wireshark extraje el cliente al azar durante la conversación y lo guardé como el archivo binario crnd.bin.
Random: 5b689404b500456eef2f1a79ec782eb3eeaac3a8d7c02ae0...
GMT Unix Time: Aug 6, 2018 14:31:32.000000000 Eastern Daylight Time
Random Bytes: b500456eef2f1a79ec782eb3eeaac3a8d7c02ae03c8426f3...
Posteriormente capturo la hora del servidor y los bytes aleatorios y los guardo como srnd.bin.
Random: 5b6894043bb1289e158b0278ef66dc53c9fa71e75e900739...
GMT Unix Time: Aug 6, 2018 14:31:32.000000000 Eastern Daylight Time
Random Bytes: 3bb1289e158b0278ef66dc53c9fa71e75e900739af2657cd...
Dave, en este punto no estoy seguro de lo que podría estar perdiéndome. No creo que me esté faltando algo como un valor nulo en una variable ni nada. He revisado meticulosamente los datos y los pasos y no veo qué me podría faltar. ¿Ves algo con estos pasos? Gracias