«Достаточно ли SHA256 в качестве функции фиксации?»
Использование SHA256 должно быть вполне приемлемым.Единственная проблема, о которой я слышал, заключается в том, что у нее есть уязвимость расширения хеша.Если вы создаете несколько хэшей, используя одни и те же данные, не просто объединяйте больше данных в конец уже хэшированных данных.В вашем посте есть два хэша "sha256 (UUID || DH pub || Chall)" и "sha256 (UUID || DH pub || DH sess || Chall)".Если бы этот второй был "sha256 (UUID || DH pub || Chall || DH sess)", то между значениями хеш-функции была бы связь, если бы UUID, DH pub и Chall имели те же значения, что и раньше.Вам следует либо позаботиться о том, чтобы избежать проблемы с расширением хеша, либо включить значение соли в данные, которые нужно хешировать, либо передавая соль через ссылку, либо используя разные значения для каждого пути кода.
В примечании стороны: действительно ли необходимо передавать Chall, если у вас уже сохранен предыдущий сеансовый ключ и вам не нужно просить пользователя вручную подтвердить код вызова?
"Является ли добавление общего секрета какинформация аутентификации в строке коммита safe? "
Я предполагаю, что вы хотите спросить:" Безопасно ли включать секретную информацию в хеш, который должен быть обнародован? "Если секрет является чем-то, что действительно трудно угадать, и для выполнения атаки грубой силы потребуется очень много времени, тогда да, это безопасно.Если секрет легко угадать или имеет только несколько возможных значений, то нет, это небезопасно, если только вы одновременно не включите трудно угадываемый секрет, чтобы заставить потенциального подслушивателя угадывать все такие секреты одновременно.Для большого, эффективно случайного числа, такого как общий секрет DH, это должно быть просто прекрасно.
"Какова общая безопасность 1024-битной группы DH"
Я не уверен, еслиDH group 1024 - это то, что вы хотите использовать.Обмен ключами, который считается столь же эффективным, как и алгоритм хеширования SHA256, который вы используете, будет 521-битным ECDH.Криптографическая стойкость ECDH считается равной 1/2, поэтому, если вы хотите 256-битную защиту, вы хотите 521-битную ECDH.К сожалению, я не уверен в безопасности многих отдельных 521-битных групп ECDH, которые были опубликованы.
"Я предполагаю, что не более 2 ^ -24 битов вероятность успешной атаки MITM (из-за 24-битного вызова). Это правдоподобно? "
Существует более одного способа выполнить MITM-атаку.Ева будет использовать каждый находящийся в ее распоряжении ресурс для выполнения своих атак, и если вы не будете осторожны, она будет использовать то, о чем вы даже не подумали.Вот почему рецензирование необходимо в криптографии.