Как использовать HKDF с ECDiffieHellmanCng
Я пытаюсь использовать класс ECDiffieHellmanCng для выполнения операций обмена ключами между рабочим столом и устройством, подключенным через BLE. Спецификации системы требуют, чтобы HKDF использовался для получения ключа. Это, кажется, не вариант для хэш-функций в классе ECDiffieHellmanCng. Есть ли способ сделать это? Затем мне нужно взять полученный ключ и передать его в объект AesCng.
1 ответ
ECDiffieHellmanCng отстой, так как вынуждает вас использовать одну из трех предопределенных функций деривации ключей пост-обработки (Hash, Hmac или Tls). Если ни один из них не соответствует вашему протоколу, вам не повезло.
Однако вы можете использовать вариант Hmac, поскольку это первая внутренняя операция для HKDF ("extract"). Просто установите свойство HmacKey для соли в HKDF. Затем вручную выполните вторую операцию Hmac ("разверните"), чтобы получить окончательный результат HKDF.