По размеру ключа DSA
Когда вы выполняете
ssh-keygen -t ssh-dss
он генерирует два файла: один содержит открытый, а другой - закрытый ключ.
На man-странице ssh-keygen написано, что он всегда генерирует 1024-битный ключ, но когда я открываю файл открытого ключа, я всегда получаю строку из 580 символов (что в ASCII составляет 4640 бит).
Я что-то упускаю или думаю об этом неправильно? Я попытался прочитать алгоритм, но это очень сложно рассчитать, учитывая размер участвующих простых чисел.
Есть ли способ проверить, является ли ключ размером 1024 бита из количества символов в файле id_dsa.pub?
1 ответ
Файлы, в которых ssh-keygen хранит открытый и закрытый ключи, имеют некоторый предопределенный формат (PEM, ...), они не являются дампом самих ключей (помните, например, что закрытый ключ обычно будет зашифрован).
В этой ссылке ( https://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html) вы найдете несколько хороших объяснений различных форматов и использования таких инструментов, как "openssl asn1parse", чтобы отобразить их:
Закрытый ключ - это структура данных ASN.1, сериализованная в байтовую строку с использованием DER, а затем закодированная в Base64. ASN.1 примерно сопоставим с JSON (он поддерживает различные типы данных, такие как целые числа, логические значения, строки и списки / последовательности, которые могут быть вложены в древовидную структуру). Он очень широко используется в криптографических целях, но каким-то образом вышел из моды с веб-поколением (я не знаю почему, это выглядит как довольно приличный формат).
Методом определения размера открытого ключа является поиск в ASN1 тега, в котором он хранится, и проверка длины его данных.