Рубрики
Uncategorized

Использование Yubikey, чтобы начать работу с GPG

Зачем хранить свой ключ RSA на Yubikey? Цифровая безопасность, как правило, намного сложнее, чем … Tagged с DevOps, Linux, Security, GitHub.

Получить максимальную отдачу от Yubikey (3 серии части)

Зачем хранить свой ключ RSA на Yubikey?

Цифровая безопасность, как правило, намного сложнее, чем физическая безопасность. Если бы у меня был секрет, написанный на листе бумаги, я мог бы спрятать эту бумагу где -нибудь, я мог бы оставить ее на своем лице, я мог бы поместить ее в боковую коробку безопасности. Все это довольно хорошие способы убедиться, что никто не читает все, что находится на бумаге, и все так просто рассуждать. Однако, если у меня есть тот же секрет на моем ноутбуке, то есть гораздо больше, о чем подумать. Каждая часть программного обеспечения, которое я запускаю, имеет разрешение на чтение этого файла.

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

Если ваш SSH -ключ хранится на Yubikey, его нельзя скопировать, его нельзя было украдено удаленно, и программное обеспечение на любой машине, в которую вы его придерживаетесь, не может его прочитать. Вы даже можете закрепить ключ, что означает, что если кто -то физически крадет вашу Yubikey, ему придется правильно угадать пин -код, чтобы иметь возможность использовать его, и даже тогда он не сможет извлечь ключ.

PGP может использовать ряд алгоритмов шифрования для генерации своих ключей. Одним из них является Ривест -Шамир -Адлман (RSA). RSA назван в честь своих разработчиков, Рона Ривеста, Ади Шамира и Леонарда Адлмана, которые разработали алгоритм в 1978 году.

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

Установите штифты Yubikey

Установите GPG, используя диспетчер пакетов вашей операционной системы, чтобы вы могли взаимодействовать с Yubikey.

Подключите свою Yubikey и запустите GPG-Change-Pin, чтобы изменить PIN-код по умолчанию 123456. Это булавка, которую вам просят ввести, когда вам нужно получить доступ к закрытому ключу, например, при протоколе GIT.

$ gpg --change-pin
1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code
Q - quit
Your selection? 1
Please enter the PIN
New PIN
New PIN
PIN changed.

Если вы введете свой вновь настройку неверно трижды три раза, то Yubikey будет заблокирован, и вы должны разблокировать его, используя контакт администратора, который по умолчанию составляет 12345678.

Вы также должны изменить контакт администратора, снова выполнив одну и ту же команду, на этот раз, выбрав опцию 3:

$ gpg --change-pin
1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code
Q - quit
Your selection? 3
gpg: 3 Admin PIN attempts remaining before card is permanently locked
Please enter the Admin PIN
New Admin PIN
New Admin PIN
Admin PIN changed.

Если вы позже введите штифт администратора неправильно три раза, вам нужно будет на заводе-набор Yubikey.

Настройте машины для использования агента GPG

Во -первых, вам необходимо настроить SSH на машинах, над которыми вы будете работать, чтобы использовать GPG -AGENT для обработки аутентификации, которая, в свою очередь, загрузит ключ RSA из вашего Yubikey — при условии, что вы введете правильный вывод.

Приведенный ниже фрагмент добавляет соответствующую конфигурацию к вашему .bashrc (Если вы используете ZSH, вам нужно будет добавить эти строки в ~/.ZSHRC вместо этого).

$ cat <> ~/.bashrc
export GPG_TTY=$(tty)
gpg-connect-agent updatestartuptty /bye
unset SSH_AGENT_PID
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
EOF
$ . ~/.bashrc

Создайте ключ RSA на Yubikey для знака GPG

Я рекомендую создать ваш ключ RSA на самом Yubikey, а не генерировать ключ на вашем компьютере, а затем копировать его в Yubikey. Таким образом, вы знаете, что она никогда не была в файловой системе, где ее можно было бы привлечь.

$ gpg --card-edit

Reader ...........: Yubico YubiKey OTP FIDO CCID 00 00
Application ID ...: D****************************0
Application type .: OpenPGP
Version ..........: 2.1
Manufacturer .....: Yubico
Serial number ....: 10300768
Name of cardholder: Paul Micheli
Language prefs ...: en
Salutation .......: 
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: not forced
Key attributes ...: rsa2048 rsa2048 rsa4096
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 0 3
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

Введите аргумент администратора, чтобы включить команды администратора

gpg/card> admin
Admin commands are allowed

Запустите команду Generate, чтобы сгенерировать ключ RSA.

gpg/card> generate

Вас спросят, хотите ли вы сделать резервную копию ключа шифрования. Если вы используете только этот ключ для аутентификации SSH, я бы порекомендовал вам этого не делать. Это довольно легко пойти, хотя этот процесс снова снова, если вы потеряете свою Yubikey, и это означает, что ваш ключ никогда не покинет ваш Yubikey.

Make off-card backup of encryption key? (Y/n) n
Please note that the factory settings of the PINs are
   PIN = `123456'     Admin PIN = `12345678'
You should change them using the command --change-pin
gpg: gpg-agent is not available in this session
Please enter the PIN
What keysize do you want for the Signature key? (2048)
What keysize do you want for the Encryption key? (2048)
What keysize do you want for the Authentication key? (2048)
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years

По умолчанию ваш ключ не истекает. Я бы порекомендовал установить дату истечения срока действия.

Key is valid for? (0) 1y
Key expires at Thu 11 Aug 2021 14:18:02 GMT
Is this correct? (y/N) y
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) "
Real name: Paul Micheli
Email address: paul@*********.com>
Comment:
You selected this USER-ID:
    "Paul Micheli "
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
gpg: generating new key
gpg: 3 Admin PIN attempts remaining before card is permanently locked
Please enter the Admin PIN
gpg: please wait while key is being generated ...
gpg: key generation completed (4 seconds)
gpg: signatures created so far: 0
gpg: generating new key
gpg: please wait while key is being generated ...
gpg: key generation completed (6 seconds)
gpg: signatures created so far: 1
gpg: signatures created so far: 2
gpg: generating new key
gpg: please wait while key is being generated ...
gpg: key generation completed (9 seconds)
gpg: signatures created so far: 3
gpg: signatures created so far: 4
gpg: key A4D581D2 marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: public key of ultimately trusted key 53157188 not found
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: next trustdb check due at 2018-11-14
pub   2**/********2 2017-11-14 [expires: 2018-11-14]
      Key fingerprint = 3***************************2
uid                  Paul Micheli >
sub   2***/*********A 2020-08-11 [expires: 2021-08-11]
sub   2***/*********A 2020-08-11 [expires: 2021-08-11]

Покидать

gpg/card> quit

Ваш ключ RSA теперь генерируется, а открытый ключ хранится в вашей ключевой матче GPG.

Просмотр открытого ключа

С вашим Yubikey вставили и разблокированы, найдите идентификатор своего ключа GPG:

$ gpg --list-secret-keys --keyid-format LONG
/home/paulmicheli/.gnupg/pubring.kbx
------------------------------------
sec   r***/*********E 2020-07-30 [SC] [expires: 2022-07-30]
      6**************************************E     
uid                 [ultimate] Paul Micheli 
ssb   r***/*********0 2020-07-30 [E] [expires: 2022-07-30]

sec>  r***/*********4 2020-07-30 [SC]
      7**************************************H
      Card serial no. = 0006 10300768
uid                 [ultimate] Paul Micheli 
ssb   r***/********8 2020-07-30 [E]

Затем получите свой открытый ключ, чтобы вы могли рассказать об этом GitHub. Аргумент здесь является длинным идентификатором из приведенной выше команды:

$ gpg --armor --export  A97FDF705EF51C50
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQG********************kyd
[NOPE NOT HAVING THE MIDDLE]
I**********************==
=ZDdO
-----END PGP PUBLIC KEY BLOCK-----

У меня есть целая серия советов и хитростей Yubikey, если кто -то заинтересован, дайте мне знать

  • Использование вашей Yubikey для подписанных GIT Commits
  • Использование ваших Yubikeys с присягой MFA
  • Использование Yubikey для хранения вашего SSH -ключа (RSA 4096)
  • Использование Yubikey в качестве смарт -карты в MacOS
  • Использование вашей Yubikey для двухфакторной аудитории с GitHub

Получить максимальную отдачу от Yubikey (3 серии части)

Оригинал: «https://dev.to/paulmicheli/using-your-yubikey-to-get-started-with-gpg-3h4k»