Увидел в Твиттере вопрос о переносе текущих ключей SSH на тот же компьютер после новой установки.
Это вызвало у меня любопытство, и я спросил себя, как они делаются. Я понимаю процесс создания ключа и разницу между приватным и публичным.
Логически я предполагаю, что ключи генерируются случайным образом и не имеют ничего общего с оборудованием / ОС (кроме последней строки с пользователем / компьютером), на которой они находятся.
Спасибо за понимание. Мне всегда нравится узнавать, как все «тикают».
Убедитесь, что вы точно знаете, во что ввязываетесь - здесь много математики. Криптография с асимметричным ключом работает путем генерации модуля из произведения двух очень больших простых чисел, которые выбираются случайным образом с помощью криптографически безопасного генератора псевдослучайных чисел. Используя этот модуль и модульную арифметику, генерируются два ключа, так что открытый ключ может быть получен из частного ключа, но не наоборот.
Первая ссылка на Википедию - это общее введение в криптографию с открытым ключом. Второй - это конкретное описание того, как ключи генерируются в RSA.
SSH использует предварительно сгенерированные открытые и закрытые ключи. После создания эти ключи сохраняются для будущего использования. Содержимое ключей не должно быть связано с оборудованием или O / S, но должно зависеть от предоставляемых ими случайных чисел.
Для транспортировки ключей используются разные форматы. Если вы переходите с одной платформы на другую, вам может потребоваться изменить формат ключа. Putty использует формат, отличный от OpenSSH, но для обоих есть инструменты для преобразования формата.
Личный ключ редко нужно транспортировать. Если они есть, их нужно хранить в безопасности. Открытые ключи и свободно распространяются и автоматически обмениваются во время соединения. Обычно известные ключи хранятся, поэтому диалоговое окно проверки не требуется при последующих подключениях.
Я обычно генерирую новые ключи для новых устройств, так как это более безопасно. Это действительно требует восстановления доверительных отношений. Копирование старых ключей может позволить передачу доверия. Иногда доверие включает в себя другую информацию, такую как имя хоста и / или IP-адрес, предотвращающую передачу доверия.
Можно передать существующий список известных хостов. Это позволяет передать список устройств, которым вы доверяете. Это не гарантирует, что они будут вам доверять.
Существует несколько алгоритмов генерации пар открытого / закрытого ключей. Вы можете посмотреть на ЮАР и DSA если ты заинтересован.
Генерация ключей ssh зависит от качества генератора случайных чисел, предоставляемого операционной системой хоста. Если генератор случайных чисел предсказуем, то удаленный злоумышленник может сгенерировать те же ключи. Эта проблема действительно произошла:
Нет ничего, что зависело бы от базового хоста / ОС / оборудования. Вы можете безопасно переносить ключи между системами.
Хотя я бы предостерегал от повторного использования ключей, если нет особой необходимости. Если вы не уверены, вероятно, вам это не нужно. Но если вы уверены, что вам не нужно объяснять, почему.
puttygen инструмент генератора ключей ssh для Windows фактически позволяет пользователю перемещать курсор мыши случайным образом в пределах окна, чтобы заполнить генератор случайных чисел. это лучше, чем мог бы сделать любой чисто программный генератор.
Генераторы ключей на основе терминалов могут позволить пользователю вводить случайные ключи на клавиатуре, чтобы заполнить генератор случайных чисел.