2023-11-16
Знай свои ключи
2023-11-16 18:18В "Автостопом по галактике" утверждалось, что всякий путешественник обязан чётко знать, где его полотенце.
Уровень вашей компьютерной безопасности определяется тем, насколько вы понимаете, где лежат ваши ключи доступа и что каждый из них защищает.
По аналогии с реальностью: вы ведь имеете представление, сколько у вас ключей от дома и у кого они находятся? Если нет - ваше имущество под угрозой. То же самое в компьютере и в сети.
Здесь я составлю шпаргалку по ключам, для себя и для всех интересующихся. Я намеренно не пытаюсь объяснять суть асимметричного шифрования, цифровых подписей и прочей теории. Про это уже имеется много хороших статей.
В самом ключе доступа нет ничего магического. Это файл небольшого размера, внутри которого чепуха. То есть случайное число, шум. Но эта чепуха уникальная, сгенерённая персонально для вас, и внутренне защищённая от подделки. Плюс обычно защищённая паролем. То есть мало иметь этот файл-ключ: чтобы его применить, надо сообщить пароль, который знаете только вы.
Обычно для каждого юзера на каждом компьютере/мобильнике/таблете создаётся один ключ 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. Срок устаревания ключа лучше не ставить.
