Знай свои ключи
2023-11-16 18:18![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
В "Автостопом по галактике" утверждалось, что всякий путешественник обязан чётко знать, где его полотенце.
Уровень вашей компьютерной безопасности определяется тем, насколько вы понимаете, где лежат ваши ключи доступа и что каждый из них защищает.
По аналогии с реальностью: вы ведь имеете представление, сколько у вас ключей от дома и у кого они находятся? Если нет - ваше имущество под угрозой. То же самое в компьютере и в сети.
Здесь я составлю шпаргалку по ключам, для себя и для всех интересующихся. Я намеренно не пытаюсь объяснять суть асимметричного шифрования, цифровых подписей и прочей теории. Про это уже имеется много хороших статей.
В самом ключе доступа нет ничего магического. Это файл небольшого размера, внутри которого чепуха. То есть случайное число, шум. Но эта чепуха уникальная, сгенерённая персонально для вас, и внутренне защищённая от подделки. Плюс обычно защищённая паролем. То есть мало иметь этот файл-ключ: чтобы его применить, надо сообщить пароль, который знаете только вы.
Обычно для каждого юзера на каждом компьютере/мобильнике/таблете создаётся один ключ SSH. Если компьютер погибнет или мобильник потеряется, заведёте новый с новым ключом. После этого на всех нужных вам сетевых сервисах придётся заменить файл публичного ключа на новый.
Когда заводите ключ SSH, обязательно защитите его паролем, хотя бы простейшим. Обычно народ ленится и делает беспарольные ключи. В результате они теряют смысл, так как любой хакер, сперев ваш ключ, скажем из бэкапа, получит доступ ко всем вашим сетевым ништякам.
Заметьте, что при потере ключа SSH вы лишаетесь доступа к каким-то сайтам, скажем Github или Bitbucket. Никакие ваши данные при этом не теряются. После восстановления доступа методом замены ключа всё опять в порядке.
Иметь много ключей PGP можно, но вы рискуете запутаться, что у вас зашифровано каким ключом. Обычно каждый человек заводит себе один ключ PGP на все случаи жизни. Крайне важно защитить ключ PGP хорошим паролем, так как предположительно вы будете пользоваться ним долго (много лет), и риск утечки возрастает.
Нужно иметь резервные копии ключа PGP в защищённом месте. Хранить их в облаке небезопасно. При утере ключа PGP вы потеряете все ваши зашифрованные файлы. Восстановить их будет невозможно. Часто народ держит ключи на флешках, но помните, что Flash память имеет ограниченный срок жизни.
Пароль выбирайте такой, чтобы легко вспомнить в любом сонном/нетрезвом состоянии, без необходимости записывать. Забудете пароль - опять пропало всё, нажитое нелёгким трудом. 😀
В юниксе ключи PGP лежат в папке ~/.gnupg/, но не по одному, а связками: в одном файле публичные, в другом секретные. Из командной строки их можно глянуть командами gpg --list-keys и gpg --list-secret-keys.
В линуксе есть утилита "Passwords and Keys", она же seahorse, показывающая ключи в удобном виде.

На маке хоть и есть своя аналогичная тулза "Keychain Access", но она, к сожалению, не умеет работать с ключами SSH и PGP. Недоработочка. Вместо этого рекомендую GPG Tools.
На андроидном мобильнике ключами удобно рулить из Termius (SSH) и OpenKeychain (PGP).
Для айфона или айпада годится PGPro.
На маке легче создавать ключ утилитой GPG Keychain из пакета GPG Tools. Срок устаревания ключа лучше не ставить.

Уровень вашей компьютерной безопасности определяется тем, насколько вы понимаете, где лежат ваши ключи доступа и что каждый из них защищает.
По аналогии с реальностью: вы ведь имеете представление, сколько у вас ключей от дома и у кого они находятся? Если нет - ваше имущество под угрозой. То же самое в компьютере и в сети.
Здесь я составлю шпаргалку по ключам, для себя и для всех интересующихся. Я намеренно не пытаюсь объяснять суть асимметричного шифрования, цифровых подписей и прочей теории. Про это уже имеется много хороших статей.
Почему ключи, а не пароли
Все мы пользуемся паролями каждый день, заходя на разные сайты. Но следует понимать, что пароль это слабая и ненадёжная защита. Мы ведь не ставим кодовые замки на входную дверь нашего дома? И на автомобили. Потому что пароли легко утекают или забываются. Физический ключ реже "утекает" и забывается. Ровно так же и цифровой ключ.В самом ключе доступа нет ничего магического. Это файл небольшого размера, внутри которого чепуха. То есть случайное число, шум. Но эта чепуха уникальная, сгенерённая персонально для вас, и внутренне защищённая от подделки. Плюс обычно защищённая паролем. То есть мало иметь этот файл-ключ: чтобы его применить, надо сообщить пароль, который знаете только вы.
Два типа ключей
Исторически сложились два типа ключей:- для доступа к сетевым сервисам: так называемые ключи SSH
- для шифрования файлов: ключи PGP
Ключи SSH
Обычно чтобы настроить вход по ключу на удалённый сетевой сервис, надо на сайт сервиса положить вашу публичную часть ключа SSH. Таких ключей можно иметь несколько, для каждого сервиса свой, или один на все случаи жизни. Зависит от вашего желаемого уровня безопасности.Обычно для каждого юзера на каждом компьютере/мобильнике/таблете создаётся один ключ SSH. Если компьютер погибнет или мобильник потеряется, заведёте новый с новым ключом. После этого на всех нужных вам сетевых сервисах придётся заменить файл публичного ключа на новый.
Когда заводите ключ SSH, обязательно защитите его паролем, хотя бы простейшим. Обычно народ ленится и делает беспарольные ключи. В результате они теряют смысл, так как любой хакер, сперев ваш ключ, скажем из бэкапа, получит доступ ко всем вашим сетевым ништякам.
Заметьте, что при потере ключа SSH вы лишаетесь доступа к каким-то сайтам, скажем Github или Bitbucket. Никакие ваши данные при этом не теряются. После восстановления доступа методом замены ключа всё опять в порядке.
Ключи PGP
Для защиты данных применяются другие алгоритмы шифрования, и поэтому ключи в другом формате, а именно PGP. У них своя интересная история, заслуживающая отдельного поста. Нам достаточно знать, что существует стандарт OpenPGP и его реализации, в частности популярная опенсорсная GPG (Gnu Privacy Guard). Они дают возможность хранить и пересылать ваши файлы в хорошо защищённом зашифрованном виде.Иметь много ключей PGP можно, но вы рискуете запутаться, что у вас зашифровано каким ключом. Обычно каждый человек заводит себе один ключ PGP на все случаи жизни. Крайне важно защитить ключ PGP хорошим паролем, так как предположительно вы будете пользоваться ним долго (много лет), и риск утечки возрастает.
Нужно иметь резервные копии ключа PGP в защищённом месте. Хранить их в облаке небезопасно. При утере ключа PGP вы потеряете все ваши зашифрованные файлы. Восстановить их будет невозможно. Часто народ держит ключи на флешках, но помните, что Flash память имеет ограниченный срок жизни.
Пароль выбирайте такой, чтобы легко вспомнить в любом сонном/нетрезвом состоянии, без необходимости записывать. Забудете пароль - опять пропало всё, нажитое нелёгким трудом. 😀
Как просмотреть ключи
Всякий юниксоид в курсе, что его публичный ключ SSH находится в файле ~/.ssh/id_rsa.pub, а секретный - в файле ~/.ssh/id_rsa. Если вы не знали - теперь знаете. 😀 Можете заглянуть туда: это текстовые файлы в кодировке base64.В юниксе ключи PGP лежат в папке ~/.gnupg/, но не по одному, а связками: в одном файле публичные, в другом секретные. Из командной строки их можно глянуть командами gpg --list-keys и gpg --list-secret-keys.
В линуксе есть утилита "Passwords and Keys", она же seahorse, показывающая ключи в удобном виде.

На маке хоть и есть своя аналогичная тулза "Keychain Access", но она, к сожалению, не умеет работать с ключами SSH и PGP. Недоработочка. Вместо этого рекомендую GPG Tools.
На андроидном мобильнике ключами удобно рулить из Termius (SSH) и OpenKeychain (PGP).
Для айфона или айпада годится PGPro.
Как создать ключ SSH
Из командной строки это делается командой:Но это для юниксистов, а обычным людям воспользоваться утилитой Termius. Выбирайте формат RSA и размер как минимум 2048.ssh-keygen -t rsa -b 4096
Как создать ключ PGP
Из командной строки:Вам будет задано несколько вопросов. Выбирайте формат RSA и размер 2048 или больше. Внимательно отнеситесь к остальным вопросам: имя, email, пароль. Повторю про пароль: ставьте такой, чтобы легко вспомнить в любом состоянии, без необходимости записывать. Но это для юниксистов, а обычным людям воспользоваться утилитой GPG Tools или другими вышеперечисленными.gpg --full-generate-key
На маке легче создавать ключ утилитой GPG Keychain из пакета GPG Tools. Срок устаревания ключа лучше не ставить.

no subject
Date: 2023-11-17 02:35 (UTC)Форд, например, ставит.
no subject
Date: 2023-11-17 02:41 (UTC)no subject
Date: 2023-11-25 17:18 (UTC)Мы раз в недавно купленном подержанном Форде (заведенном ради кондиционера) случайно закрыли маленького ребенка. Дальше 911, через 5 минут появляются пожарные, еще через полминуты машина открыта (иллюстрация надежности запирания машины ключами), и на следующий день я уже платил фордовским механикам за сброс пароля и ставил свой.
На входной двери дома у меня тоже кодовый замок...
no subject
Date: 2023-11-17 03:56 (UTC)Неудачная аналогия. У меня на входной двери дома уже много лет стоит кодовый замок. И на сейфе тоже. PIN в банкомате всего четыре цифры. На телефоне - шесть.
Короткий пароль является проблемой только если можно делать много попыток его угадать.
no subject
Date: 2023-11-17 06:07 (UTC)Кстати, шесть на телефоне - это хорошая дыра; но дальше в банк нужно или пароль, или лицо показать. Но в общем да.
no subject
Date: 2023-11-17 12:23 (UTC)Почему же дыра. Подобрать код перебором не получится, после нескольких неудачных попыток телефон заблокируется.
no subject
Date: 2023-11-17 06:11 (UTC)no subject
Date: 2023-11-17 12:11 (UTC)До появления карточек с чипом информация на магнитной дорожке карточки записывалась в открытом виде. Можно было взять чистую карточку и записать на неё эту информацию, скопированную с другой. Или вставить специальную карточку с катушкой внутри, которая воспроизводит магнитное поле вставляемой карточки. Так что этот "физический ключ" по своей сути всего лишь последовательность битов.
В дом тоже можно войти без физического ключа. Современные электронные замки открываются кодом, механический замок с ключом там для резервного доступа.
Кроме того, физический ключ механического замка полностью описывается последовательностью битов (пять глубин канавок). Можно взять Lishi и открыть произвольный замок, зная эти числа.
no subject
Date: 2023-11-17 19:27 (UTC)no subject
Date: 2023-11-18 01:28 (UTC)Вы начали с того, что пароль - это слабая и ненадёжная защита, и что физический и цифровой ключ - лучше. А теперь получается, что и пароли, и ключи - просто последовательность битов.
Какой смысл тогда возиться с этими ключами? Достаточно использовать длинный и сложный пароль. Если лень запоминать и набирать каждый раз, можно использовать Yubikey в обманчиво названном режиме static OTP. А ещё лучше в режиме Fido/WebAuthn или хотя бы TOTP. Тогда вы получаете ту самую защищённость, потому что из Yubikey секрет наружу не вытащить, грубым перебором не угадать, и запоминать ничего не надо.
no subject
Date: 2023-11-18 02:19 (UTC)Yubikey хорош, пока вы имеете работающий интернет. И пока вы его не посеяли.
no subject
Date: 2023-11-17 06:04 (UTC)Ценная инструкция.
no subject
Date: 2023-11-17 06:13 (UTC)no subject
Date: 2023-11-17 06:14 (UTC)Это значит, что можно один раз защитить свои ключи паролями и не набирать их при каждом соединении. Но придётся беречь пароль от KeyChain ;)
no subject
Date: 2023-11-17 19:54 (UTC)no subject
Date: 2023-11-17 06:55 (UTC)no subject
Date: 2023-11-17 19:53 (UTC)no subject
Date: 2023-11-17 08:03 (UTC)Когда SSH-ключ кладется в ~/.ssh/authorized_keys, нужно помнить, что записи в этом файле предполагают не два, а три поля:
ssh-rsa AAAAB3N....71zWKw== f12k
Третье поле (f12k) - это коммент, который, почему-то, все игнорят. А у меня в этом комменте хранится намек на passphrase к приватной части ключа. И когда я пытаюсь залогиниться с ключом, SSH меня в лоб спрашивает:
И сразу понятно, что к чему.
Хм
Date: 2023-11-17 09:57 (UTC)Re: Хм
Date: 2023-11-17 19:28 (UTC)Re: Хм
Date: 2023-11-17 22:15 (UTC)no subject
Date: 2023-11-17 22:17 (UTC)no subject
Date: 2023-11-17 22:18 (UTC)no subject
Date: 2023-11-17 22:20 (UTC)no subject
Date: 2023-11-17 22:26 (UTC)no subject
Date: 2023-11-17 22:31 (UTC)no subject
Date: 2023-11-17 12:26 (UTC)no subject
Date: 2023-11-17 14:57 (UTC)no subject
Date: 2023-11-17 20:17 (UTC)no subject
Date: 2023-11-17 19:37 (UTC)no subject
Date: 2023-11-17 17:24 (UTC)Бытовому юзеру это надо иметь?
no subject
Date: 2023-11-17 19:51 (UTC)Если активно пользуетесь почтой и мессенджерами - имеет смысл защитить ваши аккаунты от взлома физическим ключом типа Google Titan или Yubikey. Это просто и надёжно.
Для более серьёзных сетевых сервисов лучше перейти с простых паролей на ключи типа SSH.
Паролей и другой регистрационной информации накапливается много, её приходится где-то записывать, и возникает вопрос шифрования OpenPGP.