Проект Kryptonite предлагает отказаться от использования привычного всем ~/.ssh/id_rsa и контролировать использование закрытого ключа прямо со смартфона. С одной стороны, создатели справедливо замечают что хранение закрытого ключа на ПК даёт возможность другим приложениям прочитать его, с другой стороны, далеко (даже очень) не каждый смартфон сегодня получает обновления безопасности, которые закрывали бы актуальные уязвимости. Ну и возможность кражи устройства никуда не делась. Однако, с учётом того как плотно наша современная жизнь бывает связана со смартфоном, предложенный подход найдёт своего пользователя.
В общем и целом работает это так — на нужную нам систему, где хранится закрытый ключ, устанавливается ssh-агент kr, на смартфоны ставится специальное приложение, с помощь которого и происходит контроль. Выполняется сопряжение устройства и локальной системы (генерируется qr, фотографируется смартфоном), приложением генерируется пара SSH-ключей, сессионные ключи для аутентификации рабочей станции, устанавливается канал связи между приложением и агентом. Обмен данными может выполняться как по шифрованному каналу поверх TCP\IP так и по Bluetooth.
После сопряжения и настройки, при каждой попытке использовать закрытый ключ, приложение на смартфоне будет запрашивать разрешение на его использование. При этом, имеется возможность выдать как постоянное, так и временное (на 1 час) разрешение.
iOS хранит закрытые ключи в iOS Keychain, Android в аппаратно изолированном Android Keystore, откуда даже само Kryptonite приложение не может получить к ним прямого доступа — генерируется цифровая подпись при помощи сохранённого ключа и приложению Kryptonite возвращается результат. При потере\краже смартфона предлагается просто удалить все привязанные к нему открытые ключи со всех локальных систем, затем просто «привязать» устройство к новому смартфону выполнив сопряжение заново.
Выглядит всё интересно, однако я пока что предпочту привычный подход — для авторизации по ssh с помощью ключа у меня в системе заведён отдельный пользователь, на уровень которого я просто перехожу из терминала. Да, закрытый ключ у меня всё ещё на ПК, однако основной пользователь, от имени которого работают приложения на десктопе, доступа к закрытому ключу не имеет.