- Введение
- Что делать?
- Почему возникает ошибка при генерации ключа егаис?
- Начало конца
- 1с электронные торговые площадки
- Как использовать файл сертификата в проекте
- Cisco nexus 9.3
- Huawei usg (6000)
- Mac os x
- Padding oracle атаки
- Putty
- Securecrt
- Во-вторых, шаги по созданию сертификата для rsa
- Выбор параметров — трудная задача
- Генерация простых чисел
- Генерирование rsa-пары в securecrt
- Генерирование публичных ключей на mac os x средствами операционной системы
- Использование секретного ключа для подключения по ssh
- Конвертирование rsa-ключа из формата putty private key (putty) в формат openssh (securecrt)
- Конвертирование rsa-ключа из формата vandyke private key (securecrt) в формат putty private key (putty)
- Настройка jre
- Настройка приложения
- Настройка сервера jboss
- Общие рекомендации для успешной генерации транспортного rsa ключа егаис
- Открытая экспонента e
- Ошибка в методе createcertificaterequest error: ckr_attribute_type_invalid
- Ошибка в методе createcertificaterequest error: ckr_pni_incorrect
- Ошибка при генерации rsa ключа “выберете устройство чтения смарт карт…”
- Пару слов об алгоритме rsa
- Подготовка gost-ключей аутентификации
- Подготовка rsa-ключей аутентификации
- Постановка задачи
- Применение публичного ключа на оборудовании
- Результаты
- Секретная экспонента d
- Создание публичного rsa-ключа
- Список источников:
- Хватит использовать rsa. серьезно.
- Четыре, дополнение к знаниям
- Заключение
Введение
Кроме стандартной аутентификации по паролю (password/keyboard) в протоколе SSH существует также аутентификация по публичному ключу (RSA).
RSA (
https://ru.wikipedia.org/wiki/RSA
) — криптографический алгоритм с открытым ключом. Существует публичный открытый ключ (public key) и частный секретный ключ (private key). Обычно они используются для шифрования или цифровой подписи: сообщение зашифровывается с помощью открытого ключа и расшифровывается с помощью секретного ключа. То есть прочитать сообщение может только владелец частного ключа. Сообщение можно подписать контрольной суммой с использованием частного ключа, а любой обладатель открытого ключа сможет убедиться, что сообщение было зашифровано с помощью секретного ключа.
Аутентификация с помощью RSA-ключей состоит из нескольких этапов:
Почему только RSA? Почему не DSA? К сожалению, ответа на этот вопрос я не нашел (и не особо искал). Но официально на оборудовании Cisco поддерживается только RSA.
Документ Secure Shell Configuration Guide, Cisco IOS Release 15E:
Secure Shell Configuration Guide, Cisco IOS Release 15E
Restrictions for Secure Shell Version 2 Support
Rivest, Shamir, and Adleman (RSA) key generation is an SSH server-side requirement. Devices that act as SSH clients need not generate RSA keys.
Попытка ввести данные DSA-ключа:
Что делать?
Люди часто предпочитают использовать RSA, потому что они считают, что это концептуально проще, чем запутанный протокол DSA или криптография с эллиптической кривой (ECC). Но хотя RSA интуитивно понятнее, ему очень не хватает защиты от дурака.
Прежде всего, распространенным заблуждением является то, что эллиптика очень опасна, потому что выбор плохой кривой может всё свести на нет. Верно то, что выбор кривой имеет большое влияние на безопасность, но одним из преимуществ использования ECC является то, что выбор параметров может быть сделан публично.
Криптографы делают выбор параметров за вас, так что разработчикам просто нужно генерировать случайные байты данных для использования в качестве ключей. Разработчики теоретически могут построить реализацию ECC с ужасными параметрами и не смогут проверить наличие таких вещей, как некорректные точки кривой, но они, как правило, этого не делают.
Вероятное объяснение состоит в том, что математика, стоящая за ECC, настолько сложна, что очень немногие люди чувствуют себя достаточно уверенно, чтобы ее реализовать. Другими словами, этот страх заставляет людей использовать библиотеки, созданные криптографами, которые знают своё дело. RSA, с другой стороны, настолько прост, что его можно (плохо) реализовать за час.
Во-вторых, любое согласование ключей на основе алгоритма Диффи-Хеллмана или схема подписи (включая варианты эллиптической кривой) не требуют выравнивания и, следовательно, полностью устойчивы к атакам Padding Oracle. Это серьезная победа, учитывая, что у RSA очень длинный послужной список попыток избежать этого класса уязвимостей.
Мы рекомендуем использовать Curve25519 для обмена ключами и ed25519 для цифровых подписей. Шифрование должно выполняться с использованием протокола ECIES, который сочетает в себе обмен ключами ECC с алгоритмом симметричного шифрования. Curve25519 была разработана чтобы полностью предотвратить классы атак, которые могут случиться с другими кривыми, а еще она очень быстрая.
Почему возникает ошибка при генерации ключа егаис?
Ошибка при генерации транспортного ключа для ЕГАИС иногда возникает из-за неполадок
на сайте ЕГАИС. Но это происходит крайне редко.
В основном ошибки при генерации связаны с некорректными настройками компьютера.
Начало конца
Для работы RSA требуется выбрать довольно много параметров. К сожалению, невинные на первый взгляд методы их выбора могут навредить безопасности. Давайте пройдемся по каждому из них и посмотрим, какие неприятные сюрпризы вас ждут.
1с электронные торговые площадки
RSA-ключ необходим для установления защищенного соединения с сервером ЕГАИС и должен быть записан на тот же аппаратный криптоключ, что и электронная подпись для ЕГАИС.
Обратите внимание, что для каждого КПП организации должен быть сформирован свой уникальный RSA-ключ. Перед формированием ключа проверьте настройки торговых точек, убедитесь, что вставлен аппаратный криптоключ с ЭП именно той организации, на которую будет формироваться сертификат RSA.
Войдите в личный кабинет ЕГАИС, перейдите в раздел «Получить ключ», сверьте данные организации, на которую необходимо получить RSA-ключ и нажмите кнопку «Сформировать ключ».

Откроется окно формирования сертификата RSA, введите ПИН-код пользователя аппаратного криптоключа части PKI, по умолчанию пароль: 11111111 (8 единиц) и нажмите «Сформировать ключ».

Повторно введите ПИН-код пользователя аппаратного криптоключа части PKI, по умолчанию пароль: 11111111 (8 единиц) и нажмите «ОК».

Если все действия выполнены верно, RSA-ключ сформируется и запишется на аппаратный криптоключ, о чем появится соответствующее сообщение.

Как использовать файл сертификата в проекте
Положить сгенерированныйderсp12Перетащите в проект
- (void)viewDidLoad {
[super viewDidLoad];
// Асимметричное шифрование RSA. При шифровании необходимо загрузить открытый ключ. При расшифровке необходимо загрузить закрытый ключ.
CryptorTools *tools = [CryptorTools new];
// Шифрование
// Загружаем открытый ключ
NSString *path = [[NSBundle mainBundle] pathForResource:@"rsa.der" ofType:nil];
[tools loadPublicKeyWithFilePath:path];
NSString * cryptStr = [инструменты RSAEncryptString: @ " "];
NSLog (@ "Wang Qilian RSA зашифрованная строка:% @", cryptStr);
// Расшифровать
// Загружаем закрытый ключ
path = [[NSBundle mainBundle] pathForResource:@"p.p12" ofType:nil];
/ ** 123456 вот пароль, который вы ввели при экспорте p12 ** /
[tools loadPrivateKey:path password:@"123456"];
NSString *decryptStr = [tools RSADecryptString:cryptStr];
NSLog (@ "Расшифрованная строка:% @", decryptStr);
}
Cisco nexus 9.3
Вариант 1: предустанавливаем файл публичного ключа на устройство и привязываем файл публичного ключа к пользователю.
Huawei usg (6000)
Конфигурация полностью аналогична настройкам на маршрутизаторе, но имеет некоторые особенности.
По умолчанию уровень привилегий после журналирования с использованием сертификатов равен 0 и повышению не поддается. Поэтому уровень приоритета задается с помощью
Mac os x
Настройка стандартного клиента для использования публичных ключей:
Padding oracle атаки
Как мы уже выяснили выше, простое использование RSA «из коробки» не совсем работает. Например, схема RSA, изложенная во введении, будет создавать идентичные шифротексты, если один и тот же открытый текст когда-либо шифровался более одного раза. Это проблема, потому что это позволит злоумышленнику узнать содержание сообщения из контекста, не имея возможности расшифровать его.
Putty
В настройках SSH (Connection → SSH → Auth) в поле “Private key file for authentication” укажите файл Putty Private Key (*.ppk):
Securecrt
В окне настроек SSH есть список Authentication. В нём необходимо увеличить приоритет PublicKey до самого высокого — сделать верхним в списке.
Затем перейдите в параметры PublicKey и выберите файл приватного ключа. Самый верхний переключатель позволяет использовать глобальные настройки секретного ключа или сеансовые настройки — другой секретный ключ (ключ не по умолчанию) — только для этого подключения.
Настраиваем глобальный публичный ключ: в меню Options → Global options → Категория SSH2.
Во-вторых, шаги по созданию сертификата для rsa
- Среда: openssl, потому что Mac поставляется со средой openssl, поэтому вам не нужно ее устанавливать, откройте терминал напрямую.Примечание:Все сгенерированные файлы сертификатов находятся по текущему пути, вы можете переключить путь к папке, в которой вы хотите сохранить файл сертификата]
- Сгенерировать ключ
1024Длина указанного ключаopenssl genrsa -out private.pem 1024
Введите терминалcat private.pemВы можете просмотреть pem-файл, и после его просмотра вы узнаете, что это двоичный файл в кодировке base64. - Создайте файл запроса сертификата (открытый ключ, информация об организации, контактная информация и т. Д., Здесь вы сможете ввести много чего, просто введите их один за другим, если вы не знаете, что ввести, вы можете заполнить его. )
openssl req -new -key private.pem -out rsa.csr - Установите срок действия подписанного сертификата
openssl x509 -req -days 365 -in rsa.csr -signkey private.pem -out rsa.crt - Преобразуйте формат файла pem в формат der [цель:pem – это base64. При шифровании системы следует использовать двоичный файл, декодированный с помощью base64]
openssl x509 -outform der -in rsa.crt -out rsa.der
6. Экспортируйте наш закрытый ключ.p12openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsa.crt
7.derОткрытый ключ,p12Это закрытый ключ, а путь: путь к текущему терминалу.
Выбор параметров — трудная задача
Общим для всех этих атак на параметры является то, что общее количество возможных вариантов параметров намного больше, чем количество безопасных вариантов.
Предполагается, что разработчики сами будут управлять этим сложным процессом отбора, поскольку всё, кроме открытой экспоненты, должно генерироваться при инициализации.Нет простых способов проверить надежность параметров. Вместо этого разработчикам нужна серьёзная математическая база, наличие которой не следует ожидать от рядовых сотрудников.
Генерация простых чисел
Безопасность RSA основана на том факте, что имея большое число
N
, являющееся произведением двух простых чисел
pq
, разложение
N
на простые множители, не зная
pq
сделать трудно. Разработчики несут ответственность за выбор простых чисел, составляющих модуль RSA. Этот процесс чрезвычайно медленный по сравнению с генерацией ключей для других криптографических протоколов, где достаточно просто выбрать несколько случайных байтов.
Поэтому, вместо того чтобы генерировать действительно случайное простое число, разработчики часто пытаются создавать числа определенной формы. Это почти всегда плохо кончается. Существует много способов выбора простых чисел таким образом, чтобы факторинг
N
был простым. Например,
pq
должны быть глобально уникальными. Если
p
или
q
когда-либо повторно используются в других модулях RSA, то оба множителя можно легко вычислить с помощью алгоритма GCD. Плохие генераторы случайных чисел делают этот сценарий довольно вероятным, и исследования показали, что примерно 1% трафика TLS в 2021 году было подвержено такой атаке.
Более того, p и q должны быть выбраны независимо друг от друга. Если p и q совместно используют приблизительно половину своих старших битов, то N может быть вычислено с использованием метода Ферма.
На самом деле, даже выбор алгоритма тестирования простоты может иметь последствия для безопасности. Пожалуй, самая широко разрекламированная атака — это уязвимость ROCA в RSALib, которая затронула многие смарт-карты, модули доверенных платформ и даже ключи Yubikey.
Здесь при генерации ключей используются только простые числа определенной формы для ускорения вычислений. Простые числа, сгенерированные таким образом, тривиально обнаружить, используя хитрые приемы теории чисел. Как только слабая система была распознана, специальные алгебраические свойства простых чисел позволяют злоумышленнику использовать метод Копперсмита для разложения N.
Стоит учитывать, что ни в одном из этих случаев генерация простых чисел таким образом не является очевидным фактом, приводящем к полному отказу системы. Всё потому, что малозначимые теоретико-числовые свойства простых чисел оказывают существенное влияние на безопасность RSA.
Генерирование rsa-пары в securecrt
SecureCRT → Tools → Create Public Key…:
Чуть-чуть теории → кнопка “Next >”:
Тип сертификата RSA/DSA → Выбираем RSA → кнопка “Next >”:
Генерирование публичных ключей на mac os x средствами операционной системы
Будем использовать встроенную утилиту ssh-keygen (man ssh-keygen).
Генерируем RSA-ключ с длиной 2048 бит с указанием имени ключа, путем к папке с местом хранения ключа:
Использование секретного ключа для подключения по ssh
Этот раздел посвящен настройке SSH-клиентов для аутентификации по RSA-ключам на сетевом оборудовании (или другом оборудовании, при условии, что оборудование и ПО поддерживает аутентификацию по публичным ключам).
Мы рассмотрим настройку использования публичного ключа в самых популярных программах: SecureCRT и PuTTY.
Конвертирование rsa-ключа из формата putty private key (putty) в формат openssh (securecrt)
Чтобы использовать в SecureCRT RSA-ключи, которые сгенерированы в PuTTYgen и сохранены в формате Putty Private Key (*.ppk), экспортируем их с помощью PuTTYgen в формат OpenSSH:
- Запускаем PuTTYgen.
- Загружаем существующий RSA-ключ в формате Putty Private Key (*.ppk) → Кнопка “Load”.
- Сохраняем файл публичного ключа → “Save public key”.
- Экспортируем секретный ключ в формат OpenSSH: меню PuTTYgen → “Conversions” → “Export OpenSSH key”.
- Используем в SecureCRT файлы в формате OpenSSH. Файл с публичным ключом имеет расширение .pub, файл с секретным ключом не имеет расширения.
Конвертирование rsa-ключа из формата vandyke private key (securecrt) в формат putty private key (putty)
Чтобы использовать в PuTTY RSA-ключи, которые сгенерированы в SecureCRT и сохранены в формате VanDyke Private Key (файл публичного ключа — *.pub, файл секретного ключа *. (без расширения)), экспортируем их с помощью SecureCRT в формат OpenSSH, а затем с помощью PuTTYgen экспортируем в формат Putty Private Key (*.ppk):
- Запускаем SecureCRT.
- Меню “Tools” → “Convert Private Key to OpenSSH format…”
- Выбираем исходный файл с ключами VanDyke Private Key.
- Сохраняем OpenSSH-ключи с новым именем.
- Запускаем PuTTYgen.
- Загружаем существующий RSA-ключ в формате OpenSSH (*.): PuTTYgen Menu → “Conversions” → “Import key”.
- Сохраняем файл в формате Putty: “Save private key”.
Настройка jre
Казалось бы, все настроено, и должно работать. Но нет. Остается еще один важный штрих.
Чтобы из приложения на JBoss аутентифицироваться в КриптоПро УЦ по протоколу Gost TLS, сервер JBoss нужно запускать в JRE с установленным КриптоПро JCP провайдером.
При установке JCP в настройки JRE вносятся изменения. В частности, в jre1.8.0_144libsecurity java.security алгоритмы KeyManagerFactory и TrustManagerFactory меняются на Gost. Если так оставить, то в JBoss при старте будет возникать ошибка:
Настройка приложения
Для того чтобы при установке deployment-приложение интегрировалось с настройками на сервере, необходимо внести ряд параметров в его конфигурационные файлы.
Домен безопасности и виртуальный хост приложения указываются в /WEB-INF/jboss-web.xml
Настройка сервера jboss
Для настройки сервера JBoss EAP 7.0.0 все изменения нужно внести в конфигурационный файл jboss-EAP-7.0.0standaloneconfiguration
standalone.xml
В раздел <system-properties> добавляются настройки, указывающие серверу, каких провайдера и хранилища использовать для двусторонней ГОСТ-аутентификации:
Для настройки RSA TLSv1.2 аутентификации пользователя и сервера JBoss в раздел
нужно добавить область безопасности:
Таким образом, для JBoss указаны все необходимые хранилища ключей и сертификатов.
В раздел
Общие рекомендации для успешной генерации транспортного rsa ключа егаис
Для успешной генерации транспортных ключей на сайте ЕГАИС необходимо соблюсти некоторые требования и рекомендации:
Для настройки рабочего места для доступа личный кабинет ЕГАИС Вы можете воспользоваться нашей статьей.
Открытая экспонента e
Как и в случае c секретной экспонентой, разработчики хотят использовать небольшие открытые экспоненты, чтобы сэкономить на шифровании и проверке подписей. Обычно в этом контексте используются простые числа Ферма, в частности e = 3, 17 и 65537.
Несмотря на то, что криптографы рекомендуют использовать 65537, разработчики часто выбирают e = 3, что приводит к множеству уязвимостей в криптосистеме RSA.

(Тут разработчики использовали e = 1, который на самом деле не шифрует открытый текст вообще.)
Когда e = 3 или схожего размера, многое может пойти не так. Маленькие открытые экспоненты часто сочетаются с другими распространенными ошибками, позволяющими злоумышленнику расшифровать определенные шифротексты или факторизовать N.
Например, атака Франклина-Рейтера позволяет злоумышленнику дешифровать два сообщения, которые связаны известным, фиксированным расстоянием. Другими словами, предположим, что Алиса посылает Бобу только «купить» или «продать». Эти сообщения будут связаны известным значением и позволят злоумышленнику определить, какие из них означают «купить», а какие «продать», не расшифровывая сообщения. Некоторые атаки с маленькой e могут даже привести к восстановлению ключа.
Если открытая экспонента маленькая (не только 3), злоумышленник, который знает несколько бит секретного ключа, может восстановить оставшиеся биты и сломать криптосистему. Хотя многие из этих e = 3-атак на RSA можно пофиксить выравниванием (padding), разработчики, которые сами реализуют RSA, чрезвычайно часто забывают его использовать.
Подписи RSA также уязвимы для маленьких публичных экспонент. В 2006 году Блейхенбахер обнаружил атаку, которая позволяет злоумышленникам подделывать произвольные подписи во многих реализациях RSA, в том числе используемых в Firefox и Chrome.
Это означает, что любой сертификат TLS из уязвимой реализации может быть подделан. Эта атака использует тот факт, что многие библиотеки используют небольшую публичную экспоненту и не делают простую проверку выравнивания при обработке подписей RSA. Атака Блейхенбахера на подпись настолько проста, что включена во многие упражнения на курсах криптографии.
Ошибка в методе createcertificaterequest error: ckr_attribute_type_invalid
Такая ошибка была нами зафиксирована при использовании ключа JaCarta SE.
Для исправления ошибки необходимо инициализировать раздел PKI на носителе. Для этого откройте Единый клиент JaCarta желательно включить интерфейс Администратора (снизу слева кнопка “Переключиться в режим администрирования”). Перейдите вверху во вкладку PKI и нажмите “Инициализировать”. При запросе пин-кода введите пин-код Администратора 00000000, пин-код Пользователя 11111111.
После успешной инициализации попробуйте снова сгенерировать транспортный ключ.
Также не забывайте о том, что для нормальной работы вашего защищенного носителя для ЕГАИС должен быть установлен свежий драйвер ключа!
Если Вы самостоятельно не можете справится с генерацией транспортного ключа ЕГАИС –
обратитесь к нашим специалистам (достаточно просто написать в чат на сайте). Обычно мы справляемся с этой задачей за 5-15 минут.
Решения самых популярных проблем с ЕГАИС Вы можете найти в нашем
Telegram канале “ЕГАИС простыми словами” (@egais_is_easy).
Если помогла статья – можете сказать Спасибо автору:
Ошибка в методе createcertificaterequest error: ckr_pni_incorrect
В этой ошибке прямым текстом, правда по иностранному, написано, что неверно введен пин-код.
Проверьте правильность ввода пин-кодов. Если на вашем носителе установлен пин-код по умолчанию. и Вы его не помните, то напоминаем:
- для JaCrata пин RSA – 11111111, пин ГОСТ – 0987654321
- для Рутокен пин RSA – 12345678, пин ГОСТ – 12345678
Если не подходят стандартные пин-коды и пин-код, который установили Вы, то скорее всего носитель заблокировался. Для разблокировки носителя обратитесь к тому, у кого получали ключи, должны помочь.
Если Вы самостоятельно не можете справится с пин-кодом для ключа ЕГАИС – обратитесь к нашим специалистам (достаточно просто написать в чат на сайте). Обычно мы справляемся с этой задачей за 5-15 минут.
Ошибка при генерации rsa ключа “выберете устройство чтения смарт карт…”
Если при генерации ключа ЕГАИС вместо окна запроса пин-кода Вы увидели окно “Выберете устройство чтения смарт карт” или “Обнаружена смарт-карта, но она не может использоваться для текущей операции…” или “Смарт-карта не может выполнить запрошенную операцию либо операция требует другой смарт-карты”, значит нужно скорректировать настройки компьютера.
Такая ошибка возникает из-за того, что настройки вашего компьютера не позволяют сформировать ключи, необходимые для работы УТМ ЕГАИС.
Если Вы используете носитель Рутокен ЭЦП, то вам необходимо сделать следующее:
Откройте Панель управления Рутокен (запускается ярлыком на рабочем столе или через меню Пуск – Программы (или Все программы) – Рутокен – Панель управления Рутокен), перейдите на вкладку “Настройки” и нажмите на кнопку “Настройка” в разделе “Настройки криптопровайдера”. Установите напротив строки Рутокен ЭЦП значение Microsoft Base Smart Card Crypto Provider.
Пробуйте сгенерировать транспортный ключ ЕГАИС еще раз.
Если не получилось – сделайте перенастройку еще раз. Выберете другой криптопровайдер, нажмите ОК, и снова выберете Microsoft Base Smart Card Crypto Provider.
Пару слов об алгоритме rsa
Если знаете, как работает RSA, эту часть можно пропустить.
RSA — криптосистема с открытым ключом, у которой есть два применения.
Первый — шифрование, когда Алиса публикует свой открытый ключ и Боб, зная его, может зашифровать сообщение, которое сможет прочитать только Алиса, расшифровав его своим закрытым ключом.
Второй — цифровая подпись, которая позволяет Алисе подписать сообщение своим закрытым ключом так, чтобы все могли проверить эту подпись с помощью её открытого ключа.
Оба алгоритма отличаются незначительными деталями, поэтому будем их называть просто RSA.
Чтобы начать работать с RSA, Алисе нужно выбрать два простых числа p и q, которые вместе образуют группу чисел по модулю N = pq. Потом Алисе нужно выбрать открытую экспоненту e и секретную d такие, что e и d должны быть взаимно просты.Как только эти параметры будут выбраны, Боб может послать Алисе сообщение M, вычислив
Цифровая подпись происходит ровно наоборот. Если Алиса хочет подписать сообщение, она вычисляет подпись
Вот как бы и всё, это основная идея. К Padding oracles мы вернёмся попозже, а пока давайте посмотрим что можно сделать если параметры RSA выбраны неверно.
Подготовка gost-ключей аутентификации
Процесс обоюдной аутентификации сервера JBoss и КриптоПро УЦ сервера в сущности такой же. Единственное отличие в криптографических алгоритмах.
Серверы обмениваются сертификатами с алгоритмами подписи ГОСТ Р 34.11/34.10-2001 и хэширования подписи ГОСТ Р 34.11-94 вместо применяемых в RSA TLSv1.2 sha256RSA и sha256 соответственно. В качестве корневого сертификата здесь выступает ROOT-сертификат самого ПАК КриптоПро УЦ.
Подготовка rsa-ключей аутентификации
Для аутентификации клиента и подтверждения клиенту подлинности самого сервера обеим сторонам необходимо иметь свои пары ключей с сертификатами открытого ключа. А также хранилище корневых доверенных сертификатов, куда должны быть установлены корневые сертификаты удостоверяющих центров, выпустивших конечные сертификаты аутентификации.
Удостоверяющие центры для сервера и клиента могут быть разные.
Пользователь должен доверять удостоверяющему центру, выпустившему сертификат для сервера.
Сервер должен доверять удостоверяющему центру, выпустившему сертификат для клиента.
Существует много утилит и инструментов с хорошим описанием и примерами, которые позволяют работать с хранилищами и выполнять генерацию ключей и запросов на сертификат (keytool, openSSL, Portecle, XCA). Поэтому процесс подготовки хранилищ и выпуск сертификатов здесь пропустим.
Вот, например, хорошая статья и пошаговая инструкция по настройке Two-way SSL with TLS1.2 для Oracle SOA Suite с использованием openSSL и keytool. Но, правда, она частично потеряла актуальность и перестала отражать всю картину. Выпущенные по ней сертификаты не будут корректно восприниматься в веб-браузерах.
Error: «Subject Alternative Name Missing» or NET::ERR_CERT_COMMON_NAME_INVALID or «Your connection is not private»
если получит с сервера SSL-сертификат без домена в альтернативном имени субъекта сертификации.
Вот что говорит об этом Support Google Chrome Answer
Как с помощью openSSL добавить в сертификат subjectAlternativeName — можно посмотреть здесь и здесь
Разумеется, такой способ получения TLS-сертификатов годится только для внутрикорпоративных приложений.
Постановка задачи
Для корпоративного приложения с тонким клиентом в веб-браузере, middle или backend servlet-а, которые запускаются на JBoss EAP, необходимо настроить двустороннюю аутентификацию по протоколу TLSv1.2 с применением зарубежных криптографических алгоритмов.
Задача усложняется тем, что приложение на сервере JBoss в свою очередь взаимодействует, например, с Программно-аппаратным комплексом «ПАК Удостоверяющий центр КриптоПро», где требуется процедура двусторонней аутентификации по протоколу Transport Layer Security (TLSv1.0) c использованием российских криптографических алгоритмов.
Получается, что в одном приложении на сервере JBoss нужно подружить отечественную и зарубежную криптографию.
Аутентификация должна выполняться комбинированным методом инструментами Инфраструктуры открытых ключей (PKI), т.е. с помощью сертификатов клиента и сервера.
Применение публичного ключа на оборудовании
Как на различном оборудовании привязать открытый ключ к пользователю?
Процесс привязки публичного ключа к пользователю не стандартный и меняется от оборудования к оборудованию, поэтому приведены примеры для каждого типа оборудования, которое чаще всего применяется в сети.
Результаты
Приложение и среда исполнения с двусторонней аутентификацией настроены, каналы передачи данных зашифрованы, между участниками системы установлены надежные соединения.
Секретная экспонента d
Поскольку использование закрытого ключа большого размера отрицательно влияет на время расшифровки и подписи, у разработчиков есть стимул выбирать небольшую
d
, особенно в случаях устройств с низким потреблением энергии, таком как смарт-карты. Тем не менее, злоумышленник
, когда
d
меньше корня 4-й степени из
N
. Вместо этого разработчикам стоит выбирать большое значение
d
, так, чтобы для ускорения дешифрования могла бы использоваться
. Однако сложность этого подхода увеличивает вероятность незначительных ошибок реализации, которые могут привести к восстановлению ключа.
Вы скажете, что обычно при инициализации RSA вы сначала генерируете модуль, используете фиксированную открытую экспоненту, а затем выбираете секретную?Да, это предотвращает атаки с маленькой секретной экспонентой, если вы всегда используете одну из рекомендуемых открытых экспонент e.
Создание публичного rsa-ключа
Пару RSA-ключей можно создать с помощью различных утилит: SecureCRT, PuTTYgen или любым другим ПО. При создании ключа можно задать Passphrase (защита ключа с помощью пароля).
Список источников:
- Википедия RSA
- Conversion from Putty to SecureCRT with auth. keys, SecureCRT Forum
- Secure Shell Configuration Guide, Cisco IOS Release 15E
- Скачивание PuTTYgen
- Huawei, официальная документация — описание различных форматов ключей для импортирования на маршрутизатор Huawei
- Huawei USG 6000, настройка аутентификации по публичным ключам (CLI: Example for Logging In to the CLI Using STelnet (RSA Authentication))
- Nexus 9000 Configuration guide SSH public key
- man ssh-keygen — всё про генерацию ключей на mac os x.
- SSH config file на MAC OS X
- Как указывать другой публичный ключ в параметрах SSH
- Как указывать сторонний публичный ключ в параметрах SSH config
- Как преобразовать openssh public key в формат RFC4716
Хватит использовать rsa. серьезно.

(Twilio
использует RSA ключи)

(Travis CI до сих пор использует 1024 битные ключи и не даёт их заменить)
RSA был важной вехой в развитии безопасных коммуникаций, но последние два десятилетия криптографических исследований сделали его устаревшим. Алгоритмы на эллиптических кривых как для обмена ключами, так и для цифровых подписей были стандартизированы еще в 2005 году и с тех пор были интегрированы в интуитивно понятные и устойчивые к неправильному использованию библиотеки, такие как libsodium.
Тот факт, что RSA все еще широко используется в наши дни, указывает как на ошибку со стороны криптографов из-за неадекватного описания рисков, присущих RSA, так и со стороны разработчиков, переоценивающих свои способности успешно развертывать его. Security сообщество должно начать думать об этом как о стадной проблеме — хоть некоторые из нас и могут быть в состоянии ориентироваться в чрезвычайно опасном процессе настройки или реализации RSA, исключения дают понять разработчикам, что в некотором роде RSA еще актуален.
Несмотря на множество предостережений и предупреждений на StackExchange и GitHub README, очень немногие люди верят, что именно они испортят RSA, и поэтому они продолжают поступать безрассудно. В конечном счете ваши пользователи будут платить за это. Вот почему мы все должны согласиться с тем, что использование RSA в 2021 году совершенно неприемлемо. Без исключений.
Оригинал статьи на английском.
VirgilSecurity, Inc. разрабатывает open source developer friendly SDK и сервисы для защиты данных. Мы позволяем разработчикам использовать существующие алгоритмы с минимальным риском для безопасности.
P.S. рекоммендую так же почитать о встраивании бекдора в публичный ключ RSA.
Четыре, дополнение к знаниям
Асимметричный алгоритм шифрования RSA
сцены, которые будут использоватьсяОбычно используется симметричный ключ шифрования RSA.
Заключение
RSA-ключи могут использоваться для замены аутентификации по паролю, но не во всех случаях:
Незащищенные паролем публичные ключи удобно применять в стендовом оборудовании. Недостаток: приходится рассылать коллегам и партнерам связку приватных и публичных ключей.
На некотором оборудовании одному пользователю может соответствовать несколько пар публичных ключей, на другом оборудовании одному пользователю соответствует только один публичный ключ.
Также разнятся форматы, в которых хранится пара из публичного и секретного ключа. Но это руководство поможет вам экспортировать ключи в разные форматы.
Сегодня оптимально использовать ключи длиной 2048 бит, но для некоторого оборудования это максимально возможная длина ключа (быть может, в новых прошивках это исправят). Например:
[R1]rsa peer-public-key test-key2 encoding-type pem
Enter "RSA public key" view, return system view with "peer-public-key end".
NOTE: The number of the bits of public key must be between 769 and 2048.
[R1-rsa-public-key]
Рекомендуется использовать публичные ключи для замены паролей, если пароли вводятся с помощью скриптов (пример: autologon в SecureCRT).
Рекомендуется использовать публичные ключи для защиты от передачи пароля по сети.
Некоторое ПО по умолчанию использует публичные ключи для аутентификации по SSH вместо пароля (пример: Ansible).
