В настоящее время мы разрабатываем простой протокол механизма аутентификации вызов-ответ (CRAM), основанный на симметричной криптографии, который будет использоваться на ограниченных встроенных устройствах, которые будут работать в закрытой сети ближнего действия.
Желательна взаимная аутентификация. Возможности безопасности, предлагаемые устройствами, пока неизвестны. Следовательно, мы сосредоточены в первую очередь на использовании протокола AES во время аутентификации. Если мы также можем использовать, например, протокол MAC, мы расширим его во время последующей связи по безопасному каналу.
Мы предполагаем, что оба устройства имеют соответствующие симметричные ключи. Вызовы (chg_x) должны состоять из 16 байт и генерироваться случайным образом с использованием истинного ГСЧ.
Последовательность выполнения протокола будет следующей:
- $A \стрелка вправо B : id_A, chg_A $
- $A \leftarrow B : id_B, enc(chg_A), enc(chg_B)$
- $A \стрелка вправо B : dec(enc(chg_B))$
Устройство $А$ проверит свой вызов во время ответа, а также расшифрует и отправит вызов с другого устройства.Шифрование на устройстве $В$ своего вызова $chg_B$ делается, чтобы избежать атак отражения, как указано в этот вопрос.
После этого для безопасного канала мы планируем использовать $ KDF(K||chg_A) $ для получения сеансовых ключей.
Мои вопросы:
- будет ли этого протокола достаточно для предполагаемого сценария или он по-прежнему уязвим для некоторых других атак?
- желательно ли также иметь Hash или MAC во время аутентификации в некоторой степени для смягчения потенциальных угроз?