vak: (Default)
[personal profile] vak
В "Автостопом по галактике" утверждалось, что всякий путешественник обязан чётко знать, где его полотенце.

Уровень вашей компьютерной безопасности определяется тем, насколько вы понимаете, где лежат ваши ключи доступа и что каждый из них защищает.

По аналогии с реальностью: вы ведь имеете представление, сколько у вас ключей от дома и у кого они находятся? Если нет - ваше имущество под угрозой. То же самое в компьютере и в сети.

Здесь я составлю шпаргалку по ключам, для себя и для всех интересующихся. Я намеренно не пытаюсь объяснять суть асимметричного шифрования, цифровых подписей и прочей теории. Про это уже имеется много хороших статей.

Почему ключи, а не пароли

Все мы пользуемся паролями каждый день, заходя на разные сайты. Но следует понимать, что пароль это слабая и ненадёжная защита. Мы ведь не ставим кодовые замки на входную дверь нашего дома? И на автомобили. Потому что пароли легко утекают или забываются. Физический ключ реже "утекает" и забывается. Ровно так же и цифровой ключ.

В самом ключе доступа нет ничего магического. Это файл небольшого размера, внутри которого чепуха. То есть случайное число, шум. Но эта чепуха уникальная, сгенерённая персонально для вас, и внутренне защищённая от подделки. Плюс обычно защищённая паролем. То есть мало иметь этот файл-ключ: чтобы его применить, надо сообщить пароль, который знаете только вы.

Два типа ключей

Исторически сложились два типа ключей:
  • для доступа к сетевым сервисам: так называемые ключи SSH
  • для шифрования файлов: ключи PGP
Ключи сетевого доступа 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

Из командной строки это делается командой:
ssh-keygen -t rsa -b 4096
Но это для юниксистов, а обычным людям воспользоваться утилитой Termius. Выбирайте формат RSA и размер как минимум 2048.

Как создать ключ PGP

Из командной строки:
gpg --full-generate-key
Вам будет задано несколько вопросов. Выбирайте формат RSA и размер 2048 или больше. Внимательно отнеситесь к остальным вопросам: имя, email, пароль. Повторю про пароль: ставьте такой, чтобы легко вспомнить в любом состоянии, без необходимости записывать. Но это для юниксистов, а обычным людям воспользоваться утилитой GPG Tools или другими вышеперечисленными. 

На маке легче создавать ключ утилитой GPG Keychain из пакета GPG Tools. Срок устаревания ключа лучше не ставить.

Date: 2023-11-17 02:35 (UTC)
From: [personal profile] dijifi
Мы ведь не ставим кодовые замки на входную дверь нашего дома? И на автомобили.

Форд, например, ставит.

Date: 2023-11-25 17:18 (UTC)
ugputu: (Default)
From: [personal profile] ugputu
И правильно делает, кстати сказать.
Мы раз в недавно купленном подержанном Форде (заведенном ради кондиционера) случайно закрыли маленького ребенка. Дальше 911, через 5 минут появляются пожарные, еще через полминуты машина открыта (иллюстрация надежности запирания машины ключами), и на следующий день я уже платил фордовским механикам за сброс пароля и ставил свой.


На входной двери дома у меня тоже кодовый замок...

Date: 2023-11-17 03:56 (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

пароль это слабая и ненадёжная защита. Мы ведь не ставим кодовые замки на входную дверь нашего дома

Неудачная аналогия. У меня на входной двери дома уже много лет стоит кодовый замок. И на сейфе тоже. PIN в банкомате всего четыре цифры. На телефоне - шесть.

Короткий пароль является проблемой только если можно делать много попыток его угадать.

Date: 2023-11-17 06:07 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Кстати, шесть на телефоне - это хорошая дыра; но дальше в банк нужно или пароль, или лицо показать. Но в общем да.

Date: 2023-11-17 12:23 (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

Почему же дыра. Подобрать код перебором не получится, после нескольких неудачных попыток телефон заблокируется.

Date: 2023-11-17 12:11 (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

До появления карточек с чипом информация на магнитной дорожке карточки записывалась в открытом виде. Можно было взять чистую карточку и записать на неё эту информацию, скопированную с другой. Или вставить специальную карточку с катушкой внутри, которая воспроизводит магнитное поле вставляемой карточки. Так что этот "физический ключ" по своей сути всего лишь последовательность битов.

В дом тоже можно войти без физического ключа. Современные электронные замки открываются кодом, механический замок с ключом там для резервного доступа.

Кроме того, физический ключ механического замка полностью описывается последовательностью битов (пять глубин канавок). Можно взять Lishi и открыть произвольный замок, зная эти числа.

Date: 2023-11-18 01:28 (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

Вы начали с того, что пароль - это слабая и ненадёжная защита, и что физический и цифровой ключ - лучше. А теперь получается, что и пароли, и ключи - просто последовательность битов.

Какой смысл тогда возиться с этими ключами? Достаточно использовать длинный и сложный пароль. Если лень запоминать и набирать каждый раз, можно использовать Yubikey в обманчиво названном режиме static OTP. А ещё лучше в режиме Fido/WebAuthn или хотя бы TOTP. Тогда вы получаете ту самую защищённость, потому что из Yubikey секрет наружу не вытащить, грубым перебором не угадать, и запоминать ничего не надо.

Date: 2023-11-17 06:04 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Ценная инструкция.

Date: 2023-11-17 06:14 (UTC)
From: [personal profile] borisk
MacOS умеет хранить пароли от ключей SSH в базе KeyChain.

Это значит, что можно один раз защитить свои ключи паролями и не набирать их при каждом соединении. Но придётся беречь пароль от KeyChain ;)

Date: 2023-11-17 06:55 (UTC)
tiresome_cat: (CuriousCat)
From: [personal profile] tiresome_cat
А вот какого Вьі мнения про Fingerprint сенсорьі(в ноутбуках)/USB-брелки и хранение паролей в них/связанньіх с ними утилитах?

Date: 2023-11-17 08:03 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Одно маленькое замечание.

Когда SSH-ключ кладется в ~/.ssh/authorized_keys, нужно помнить, что записи в этом файле предполагают не два, а три поля:

ssh-rsa AAAAB3N....71zWKw== f12k

Третье поле (f12k) - это коммент, который, почему-то, все игнорят. А у меня в этом комменте хранится намек на passphrase к приватной части ключа. И когда я пытаюсь залогиниться с ключом, SSH меня в лоб спрашивает:
login as: kondybas
Authenticating with public key "f12k"
Passphrase for key "f12k":


И сразу понятно, что к чему.

Хм

Date: 2023-11-17 09:57 (UTC)
sla165: (Default)
From: [personal profile] sla165
Как эта херабора работает и нужна ли она вообще?

Re: Хм

Date: 2023-11-17 22:15 (UTC)
sla165: (Default)
From: [personal profile] sla165
А по нормальному можно ответ написать?

Date: 2023-11-17 22:26 (UTC)
sla165: (Default)
From: [personal profile] sla165
Мне лекция не нужна,мне нужен короткий и емкий ответ на мой вопрос?

Date: 2023-11-17 12:26 (UTC)
fenikso: (Default)
From: [personal profile] fenikso
Интересный вопрос - как повысить уверенность, что не забудешь/утратишь пароль в случае травмы, амнезии, или просто возраста.

Date: 2023-11-17 14:57 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Или что ваш пароль не отключат за неуплату.

Date: 2023-11-17 17:24 (UTC)
spyle: (Default)
From: [personal profile] spyle
Очень интеревно, но непонятно :)
Бытовому юзеру это надо иметь?