TLSv1.0, вычисление 'HMAC'

251
26 января 2018, 20:24

Здравствуйте. Прошу мне помочь, как сгенерировать HMAC от сообщения? HEX:

1400000cb0b513341258473a9f7f216d5545df094b1bedc5cc6b46ea891bcb6081b1266e0b0b0b0b0b0b0b0b0b0b0b0b

Сообщение смог создать: b0b513341258473a9f7f216d

К сожалению не могу понять, как вычислить HMAC: 5545df094b1bedc5cc6b46ea891bcb6081b1266e

Я использую CipherSuite: TLS_RSA_WITH_AES_128_CBC_SHA (0x2f) и версию TLS: 1.0

Буду благодарен за помощь

Answer 1

https://tools.ietf.org/html/rfc2246#section-6.2.3.1

The MAC is generated as:
HMAC_hash(MAC_write_secret, seq_num + TLSCompressed.type +
          TLSCompressed.version + TLSCompressed.length +
          TLSCompressed.fragment));

Здесь:

seq_num - 64-битное число, счетчик, для Finished всегда 0, так как оно первое сообщение которое зашифровано
TLSCompressed.type - 1 байт, тип сообщения, для Finished - это handshake
TLSCompressed.version - 2 байта, версия SSL
TLSCompressed.length - 2 байта, длина сообщения
TLSCompressed.fragment - само сообщение

HMAC вычисляется так:

byte[] key = ...; // один из ключей, вычисленный на этапе key expansion
var hmacsha1 = new System.Security.Cryptography.HMACSHA1(key);
byte[] data = ...; // seq_num + type + version + length + fragment, с примера выше
byte[] hmac = hmacsha1.ComputeHash(data);
READ ALSO
Получить web страницу через TcpClient

Получить web страницу через TcpClient

Пытаюсь получить содержимое страницы через TcpClient (c#)Взял за основу ответ HTTP запрос через TCPClient По какой то причине получаю ответ длинной 0

284
Отправка сообщений с Hangfire

Отправка сообщений с Hangfire

Покажите пожалуйста какой пример отправки сообщений на Email с технологией Hangfire

283
C# Запуск программы после входа пользователем в систему

C# Запуск программы после входа пользователем в систему

Есть программа, которая прописывает себя в автозагрузкуВсе работает, все отлично

246
Передать параметр в ViewModel из Behavior WPF MVVM

Передать параметр в ViewModel из Behavior WPF MVVM

Каким образом из реализации поведения контрола можно передать свойство или параметр во ViewModelВ окне имеется PasswordBox у которого реализовано...

236