Из моих предыдущих сообщений, часть 1, часть 2, часть 3 и часть 4, я считаю, что все правильно рассчитал / расшифровал и готов попытаться расшифровать зашифрованное сообщение рукопожатия клиента. Я застрял на следующем шаге, как только у меня есть все ключи. Я читал и исследовал это в течение пары дней и просто застрял.
Следуя указаниям из моих предыдущих постов, я придумал
20 bytes for a client MAC key: 64666eafe1cbd51f2e2b50799b40f6007c3dc56f
20 bytes for a server MAC key: e0aac1312d35b5e8b6bf9af6ecf07e1dff27c784
32 bytes client encryption key:
4bf20108190203c4210ff9df6c4eb6e907ddd1f49646ab4b243c80a6ae9b4808
32 bytes for a server encryption key:
ca94445e3d771d3e06b71ee0deb4c1879986c4c6a4b78bf1c3c1083a6ddce9ff
Мое зашифрованное клиентское рукопожатие:
Hex. FILE SIZE: 40
ADDRESS 000 001 002 003 004 005 006 007 ASCII
===============================================================================
00000000 09A 01B 0F3 06B 078 06C 03B 059 ~Z ^[ -s k x l ; Y
00000008 085 061 07C 076 0AF 0D9 085 0D6 ~E a | v -/ -Y ~E -V
00000010 08F 0FD 0AF 06D 09F 01A 025 0EF ~O -} -/ m ~_ ^Z % -o
00000018 040 015 097 002 0B5 0AD 0EF 040 @ ^U ~W ^B -5 -- -o @
00000020 02B 0DB 051 096 0CE 076 0A9 03F + -[ Q ~V -N v -) ?
00000028 0D7 030 049 03A 0CC 0F9 029 044 -W 0 I : -L -y ) D
00000030 07F 0A9 0C6 0F1 017 02D 06B 040 ^? -) -F -q ^W - k @
00000038 035 0F5 057 08E 0BF 0E9 05C 06D 5 -u W ~N -? -i \ m
00000040
Я считаю, что мне нужно использовать вариант openssl end -d -K, но спотыкаясь здесь между RFC и Google, чтобы найти решение / пример, который это четко объясняет. Кто-нибудь знает, как / если я могу сделать это в командной строке в openssl? Спасибо
Обновить. Я не уверен, почему / как я пропустил в RFC 7.4.9 PRF(master_secret, finished_label, Hash(handshake_messages))
Я записал все сообщения рукопожатия, может кто-то объяснить, как я могу смоделировать это с помощью только командной строки openssl с данными Я захватил / расшифровал до этого момента.
Похоже, что хеш сообщений рукопожатия - это то, что мне нужно выполнить до этого раздела 5 RFC. Я предполагаю, что собираюсь использовать сгенерированный мной master_secret. Я не уверен, что начальное значение для этого должно использовать openssl, как Я ранее использовал это. Я не вижу, что для этого хэша есть сцепленная метка, так что я просто использую все рукопожатия, чтобы соединить эту точку вместе? Есть много шагов, которые я теряюсь, где я нахожусь. Спасибо
openssl dgst -sha256 -mac hmac -macopt hexkey:$key <seed -binary >a1