Я недавно исследую TLS1.0. Я установил sh HTTPS-сервер с самозаверяющей сертификацией и использую openssl для подключения к серверу. Набор шифров - это RSA_AESCBC256_SHA. Затем перехватите пакеты TLS с помощью wireshark. Когда я фиксирую запись приложения, а затем дешифрую ее. Я получил результат, подобный следующему скриншоту.
Я анализирую шестнадцатеричный дамп и делю их на 3, как показано на рисунке ниже.
Красная часть заполнена, зеленая часть заполнена, а синяя - MA C. Проблема в том, что порядок отличается от RFC2246 6.2.3.2, где MA C предшествует заполнению.
block-ciphered struct {
opaque content[TLSCompressed.length];
opaque MAC[CipherSpec.hash_size];
uint8 padding[GenericBlockCipher.padding_length];
uint8 padding_length;
} GenericBlockCipher
Я считаю, что OpenSSL верен, но не могу объяснить, что результат отличается от RF C. Вы можете помочь? Оригинальный снимок с Wireshark, как показано ниже.