diff options
| author | vlapa <vlapa@ya.ru> | 2026-06-13 20:33:26 +0300 |
|---|---|---|
| committer | vlapa <vlapa@ya.ru> | 2026-06-13 20:33:26 +0300 |
| commit | e5abc1fe99340b979b18864d978179f71fe8f5c5 (patch) | |
| tree | 98fd0ad7c6d0744894d6e74e446daacd9e6dd1b5 /LINUX/GPG, PASS.md | |
First
Diffstat (limited to 'LINUX/GPG, PASS.md')
| -rw-r--r-- | LINUX/GPG, PASS.md | 276 |
1 files changed, 276 insertions, 0 deletions
diff --git a/LINUX/GPG, PASS.md b/LINUX/GPG, PASS.md new file mode 100644 index 0000000..3720f0f --- /dev/null +++ b/LINUX/GPG, PASS.md @@ -0,0 +1,276 @@ +```sh +sudo su +apt install gpg + +gpg —full-gen-key + +# ставим 4096 бит +# 0 - ключ бессрочный +# y +# Real name: vlapa +# Email address: vlapa@ya.ru +# Comment: My Keys ! +# o +# Passphrase: `xxxxxxxxxx` +# мышь, клавиатура +``` + +```sh +echo "keyid-format 0xlong +> throw-keyids +> no-emit-version +> no-comments" > ~/.gnupg/gpg.conf + +gpg -k - публичный ключ +gpg -K - приватный ключ + +cd /tmp +echo "Hello World !" > /tmp/file.txt +ls +file.txt +cat file.txt +Hello World ! + + +# шифруем: +gpg -e -a -r vlapa@ya.ru file.txt + +# расшифровываем: +gpg -d -o file.txt file.txt.asc + +======================================== +# экспортируем: +gpg —export -a vlapa@ya.ru > pubkey.gpg +gpg —export-secret-key -a vlapa@ya.ru > seckey.gpg + +# Удаляем: +gpg —delete-secret-keys vlapa@ya.ru +gpg —delete-keys vlapa@ya.ru + +# импортируем: +gpg —import pubkey.gpg +gpg —import seckey.gpg + +# делаем доверенным: +gpg --edit-key <email_при_создании_ключа> +# - trust +# - 5 +# - Y +# - quit + +# Если нужно изменить пароль GPG-ключа (не содержимое записи) + +# Если вы сменили пароль самого GPG-ключа, но `pass` по-прежнему запрашивает старый, выполните: + +gpg --edit-key "Ваше_имя_или_email" + +# Затем в интерактивном меню введите: +passwd +save + +# Где найти имя ключа? +# Посмотрите в файле: +~/.password-store/.gpg-id +# там указано имя или ID ключа, используемого pass. + +======================================== +``` + +```sh +sudo apt install pass +which pass +pass init vlapa@ya.ru + +cd /root/.password-store/ +ls -la ~/.password-store/ + +# Добавить запись: +pass insert -m Email/mail.ru +конец - < ctrl+d > + +# Удалить запись: +pass rm Email/mail.ru + +# Редактировать запись: +pass edit Email/mail.ru + +# Система откроет файл в текстовом редакторе (по умолчанию заданный в переменной окружения $EDITOR или $VISUAL). + + +# Посмотреть запись: +pass Email/ya.ru + +# Помощь: +pass —-help | less + +# Сгенерировать: +pass generate email/vlapa.ru 25 + +# Получить пароль: +pass -c Email/ya.ru +# Будет предложено ввести мастер пароль Pass. Пароль будет находиться в буфере в течении 45 секунд. После чего буфер обмена будет очищен. + +# Если просто необходимо отобразить сохраненный пароль, просто удалите `-c` + +# Изменить данные пароля: +pass edit Email/ya.ru + +# =============================== + +pass git init +pass git remote add origin git@10.10.10.2:~/git/pass +pass git push +# commit делать не надо! +``` + +```sh +# Заменить первую строку в записи pass новым сгенерированным паролем, оказывается, можно так: + +pass generate -i Email/my@email.com 20 +``` + +============================================ +## Шифрование файлов при помощи GPG + +GNU Privacy Guard – это и есть GPG – свободная реализация шифрования данных для их защиты. Это очень актуально, ведь информацию, если она персональная, конфиденциальная или просто секретная необходимо защищать. Технология GPG основана на защите данных при помощи ключей шифрования, которые изначально должны быть созданы, а также соответствующим образом распространены между участниками обмена защищаемыми данными. + +Как работает защита данных с помощью ключей GPG + +Для того, чтобы стороны могли передавать друг другу зашифрованные данные, должен быть выполнен ряд условий: + +- наличие ключей шифрования GPG, которые представляют собой пару ключей — открытый и закрытый; + +- обе стороны должны обменяться открытыми ключами; + +- передающая сторона должна зашифровать данные с помощью + + открытого ключа, полученного от принимающей стороны при обмене + + этими ключами; + +- принимающая сторона при получении шифрованных данный должна + + расшифровать их своим закрытым ключом, открытой частью которого (т. е. открытым ключом) были зашифрованы данные передающей стороной. + + Отсюда вытекают два важных момента: + + +- расшифровать данные можно только закрытым ключом, который должен храниться у его владельца в надёжном и недоступном для посторонних месте; + +- данные всегда шифруются именно ключом адресата, т. е. того, кому нужно передать зашифрованные данные. + + Открытые ключи распространяются свободно. Ими можно обмениваться непосредственно, либо загружать на специальные сервера для хранения и обслуживания ключей GPG. + + Также необходимо иметь специальный сертификат для отзыва открытых ключей, чтобы сделать их недействительными. Кроме того механизм защиты данных по ключам позволяет подписывать отправляемые данные закрытым ключом, т. е. гарантировать, что эти данные отправлены именно тем, кто указан как отправитель. А соответствующий этому закрытому ключу открытый ключ, имеющийся у принимающей стороны может это подтвердить. Таким образом и достигается достоверная идентификация пользователей и надёжная защита передаваемых данных. + + Установка системы GPG в Linux + + Практически во всех популярных дистрибутивах Linux установить систему GPG позволяет система управления пакетами (СУП) этого дистрибутива. Например, для Ubuntu: + + `$ sudo apt install gnupg + + Наименования пакетов также могут различаться в зависимости от используемого дистрибутива, так для CentOS: + + `$ sudo yum install gnupg2 + + Теперь можно приступить к созданию самих ключей. + + Генерация и подпись ключей + + Для генерации и управления ключами системы GPG предназначена команда gpg. Более подробно с ней можно ознакомиться на страницах интерактивного руководства, используя команду man gpg. Для создания же, собственно, пары (открытый и закрытый) ключей нужно выполнить команду gpg с опцией —gen-key: + + +`$ gpg --gen-key + +В ходе выполнения команды у пользователя будут запрошены некоторые персональные данные, такие как полное имя и e-mail, необходимо их ввести, после чего начнётся генерация ключей, которая может занять некоторое время. После чего будет выведена информация о созданных ключах: + +`gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc. +`This is free software: you are free to change and redistribute it. +`There is NO WARRANTY, to the extent permitted by law. +Замечание: "gpg --full-generate-key" вызывает полнофункциональный диалог создания ключа. + +GnuPG должен составить идентификатор пользователя для идентификации ключа. +Ваше полное имя: John Silver +Адрес электронной почты: john@silver.ru + +Вы выбрали следующий идентификатор пользователя: +"John Silver <john@silver.ru>" +Сменить (N)Имя, (E)Адрес; (O)Принять/(Q)Выход? O +Необходимо получить много случайных чисел. Желательно, чтобы Вы +в процессе генерации выполняли какие-то другие действия (печать +на клавиатуре, движения мыши, обращения к дискам); это даст генератору случайных чисел больше возможностей получить достаточное количество энтропии. + +Необходимо получить много случайных чисел. Желательно, чтобы Вы +в процессе генерации выполняли какие-то другие действия (печать +на клавиатуре, движения мыши, обращения к дискам); это даст генератору случайных чисел больше возможностей получить достаточное количество энтропии. +gpg: ключ 49192168EGELF50S помечен как абсолютно доверенный +gpg: создан каталог '/home/john/.gnupg/openpgp-revocs.d' +gpg: сертификат отзыва записан в '/home/john/.gnupg/openpgp- revocs.d/FFBD0C66CBA22A8739ACB07949192168EGELF50S.rev'. +открытый и секретный ключи созданы и подписаны. + +`pub rsa3072 2019-03-27 [SC] [годен до: 2021-03-26] FFBD0C66CBA22A8739ACB07949192168EGELF50S uid John Silver <john@silver.ru> +`sub rsa3072 2019-03-27 [E] [годен до: 2021-03-26] + +Здесь pub – это открытый ключ, значение «FFBD0C66CBA22A8739ACB07949192168EGELF50S» — его отпечаток, uid – идентификатор, состоящий из полей имени и e-mail, пользователя-владельца ключа. Этот идентификатор нужно использовать при указании ключа, а также + +для обозначения адресата, которому предназначается сообщение (данные), зашифрованное этим ключом. Можно указывать любое из полей. В нижеследующих примерах будет указываться email. + +Для созданных ключей также автоматически будет сгенерирован и сертификат отзыва. Либо это можно сделать вручную: + +`$ gpg --output ~/revocation.crt --gen-revoke your_email@address.ru + +Созданный сертификат revocation.crt нужно хранить также надёжно, как и закрытые ключи. При создании сертификата отзыва нужно указать возможную причину отзыва ключа, а также комментарий к отзыву. Эту информацию будут видеть другие пользователи систем управления ключами GPG. Опция —output служит для вывода сертификата отзыва в файл, в данном случае revocation.crt. + +Очень важно также подписывать ключи, которые были получены от других пользователей, если достоверно известно, что это именно те пользователи, за которых они себя выдают и ключи принадлежат действительно им. Это часто происходит при импорте открытых ключей других пользователей. После проверки их (и ключей и их пользователей-владельцев) очень желательно эти ключи подписать: + +`$ gpg --sign-key other_user@address.ru + +После подписи импортированного ключа нужно дать знать об этом его владельцу, чтобы он мог использовать этот ключ (ведь он подписанный) как аргумент для других пользователей, которые буду видеть, что его уже кто-то «одобрил» и доверяет ему. Для этого подписанный ключ экспортируется в файл и отправляется обратно его владельцу. + +Импорт и экспорт ключей + +Для того, чтобы экспортировать, например подписанный (в предыдущей главе) ключ нужно выполнить команду: + +`$ gpg –-output ~/signed.key –-export –-armor other_user@address.ru + +Опция —armor создаёт вывод в виде символов ASCII, т. е. в виде текста. По- умолчанию (если эту опцию не указывать) gpg создаст двоичный вывод. Теперь полученный файл с подписанным ключом можно отправлять его владельцу. Он в свою очередь может его импортировать себе в GPG, а также внести некоторую информацию о подписи: + +`$ gpg --import ~/signed.key + +Таким образом происходит, собственно обмен открытыми и подписанными ключами между пользователями. + +Если нужно перенести свой секретный ключ куда-либо (для использования на других компьютерах), то нужно использовать опцию —export-secrert-key: + +`$ gpg --output mygpgkey_private.txt --armor --export-secret-key my_email.address.ru + +Чтобы теперь импортировать этот секретный ключ на другом компьютере, нужно воспользоваться опцией —allow-secret-key-import: + +`$ gpg --allow-secret-key-import --import mygpgkey_private.txt + +Шифрование и дешифровка данных + +Чтобы зашифровать данные в GPG используется опция —encrypt: + +`$ gpg --recipient other_user@address.ru --encrypt somefile + +Здесь какой-либо файл somefile зашифруется открытым ключом пользователя, идентифицируемого с помощью его e-mail (other_user@address.ru) и только он сможет расшифровать этот файл своим закрытым ключом: + +`$ gpg --decrypt-files somefile.gpg + +Как можно видеть, при шифровке на выходе получаются файлы с расширением *.gpg. + +Проверка подлинности ключа пользователя + +Каким образом можно узнать, что пользователь, предоставивший свой открытый ключ действительно тот, за кого себя выдаёт, т. е. подлинный владелец соответствующего закрытого ключа? + +Для этого существует отпечаток ключа, который можно получить с помощью опции —fingerprint: + +`$ gpg --fingerprint john@silver.ru +`pub rsa3072 2019-03-27 [SC] [годен до: 2021-03-26] FFBD 0C66 CBA2 2A87 39AC B079 4919 2168 EGEL F50S uid [ абсолютно ] John Silver <john@silver.ru> +`sub rsa3072 2019-03-27 [E] [годен до: 2021-03-26] + +Значение «FFBD 0C66 CBA2 2A87 39AC B079 4919 2168 EGEL F50S» нужно сверять с соответствующим значением, полученным таким же образом, но на стороне пользователя, приславшего этот ключ. Значения должны быть идентичны. + +Заключение + +В заключение необходимо отметить некоторую сложность для быстрого понимания самого механизма защиты GPG. Которая главным образом заключается в предварительном обмене ключами между взаимодействующими сторонами. Механизм GPG становится довольно просто использовать на практике. Если хотя бы пару раз выполнить обмен шифрованными данными, тем более, что это очень надёжно.
\ No newline at end of file |
