Yubikey, GnuPG a podepisování

mhepp

Yubikey, GnuPG a podepisování
« kdy: 29. 11. 2016, 22:30:26 »
Zdravím,

potřeboval bych poradit, mám Yubikey NEO, uvnitř vygenerovaný PGP klíč, který používám pro SSH, to funguje. Nyní bych ale potřeboval tento klíč použít pro podepisování/šifrování. Problém je, že používám víče PC a potřéboval bych bezpečně používat klíč na všech. Představa je taková, že když připojím Yubikey k počítači, tak když zadám gpg2 --list-(secure-)keys, uvidím klíč z Yubikey, budu ho moci po zadání PIN-u použít a tak. Jakmile Yubikey odpojím, klíč nebude dostupný.

Problém je v tom, že je tisíce návodů, které řeší inicializaci Yubikey (pomocí gpg vyrobím klíč, ten importuji do Yubikey), ale nenašel jsem návod, který by řešil nastavení GPG tak, aby automaticky bralo klíče z Yubikey. Přehlédl jsem něco? Nepochopil jsem něco? Prosím o radu.


karlik

Re:Yubikey, GnuPG a podepisování
« Odpověď #1 kdy: 05. 12. 2016, 14:22:58 »
No a jak používáš ten pgp klíč na ssh?
Na druhém PC by mělo stačit gpg --card-status pro gpg-agenta.

mhepp

Re:Yubikey, GnuPG a podepisování
« Odpověď #2 kdy: 06. 12. 2016, 00:59:13 »
Na SSH klíč používám přes gpg-agent-a. Když vypíšu ssh-add -L, tak klíč vidím.

Ale když dám gpg2 --list-keys, tak nevypíše nic.


$ gpg2 --card-status
Application ID ...: D27600012...90000
Version ..........: 2.0
Manufacturer .....: Yubico
Serial number ....: 03...9
Name of cardholder: M... ...r
Language prefs ...: cz
Sex ..............: male
URL of public key : [not set]
Login data .......: mhepp
Signature PIN ....: forced
Key attributes ...: 2048R 2048R 2048R
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 4
Signature key ....: 7433 XXXX 5915 YYYY 5F74  ZZZZ 7F91 AAAA DAA7 BBBB
      created ....: 2016-11-09 15:50:37
Encryption key....: 5B44 XXXX BBCE YYYY 85A6  ZZZZ 3459 AAAA 5228 BBBB
      creaed ....: 2016-11-09 15:50:37
Authentication key: 3800 XXXX A5EB YYYY 67F5  ZZZZ A96D AAAA 4757 BBBB
      created ....: 2016-11-09 15:50:37
General key info..: [none]


Jak s tím tedy podepíši soubor?


$ gpg2 --output /dev/null --sign -u 7433XXXX5915YYYY5F74ZZZZ7F91AAAADAA7BBBB /dev/null
gpg: skipped "7433XXXX5915YYYY5F74ZZZZ7F91AAAADAA7BBBB": No secret key
gpg: signing failed: No secret key

David1234

Re:Yubikey, GnuPG a podepisování
« Odpověď #3 kdy: 06. 12. 2016, 12:36:16 »

karlik

Re:Yubikey, GnuPG a podepisování
« Odpověď #4 kdy: 06. 12. 2016, 18:29:19 »
V tom .gnupg adresáři by měly být soubory pubring.gpg a secring.gpg, měl bys je mít někde v záloze, když jsi vytvářel gpg klíč, tak je tam nakopíruj.


David1234

Re:Yubikey, GnuPG a podepisování
« Odpověď #5 kdy: 06. 12. 2016, 20:24:33 »
Máš to tam nějak špatně nahrané na té kartě? Mám taky yubico a zkusil jsem vygenerovat default klíč a nahrát ho tam a normálně funguje:

Kód: [Vybrat]
david@hlina:~/gpg$ gpg --card-status
Application ID ...: D2760000000000010006049405910000
Version ..........: 2.1
Manufacturer .....: unknown
Serial number ....: 04940591
Name of cardholder: [not set]
Language prefs ...: [not set]
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: not forced
Key attributes ...: 2048R 2048R 2048R
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 0 3
Signature counter : 3
Signature key ....: 11B9 3EAF 9D2E 2C7E 0ECD  8BAB 6606 ECE8 25DF 31EE
      created ....: 2016-12-06 19:15:53
Encryption key....: [none]
Authentication key: [none]
General key info..: pub  2048R/25DF31EE 2016-12-06 David <david@test.cz>
sec>  2048R/25DF31EE  created: 2016-12-06  expires: never     
                      card-no: 0006 04940591
ssb   2048R/584BF5E7  created: 2016-12-06  expires: never     
david@hlina:~/gpg$ gpg  -v --sign test.txt
gpg: using PGP trust model
File `test.txt.gpg' exists. Overwrite? (y/N) y
gpg: writing to `test.txt.gpg'
gpg: RSA/SHA1 signature from: "25DF31EE David <david@test.cz>"
david@hlina:~/gpg$
david@hlina:~/gpg$ gpg --list-secret-keys David
sec>  2048R/25DF31EE 2016-12-06
      Card serial no. = 0003 01010591
uid                  David <david@test.cz>
ssb   2048R/584BF5E7 2016-12-06

mhepp

Re:Yubikey, GnuPG a podepisování
« Odpověď #6 kdy: 07. 12. 2016, 10:38:14 »
Klíč jsem vytvářel přímo v kartě (gpg2 příkaz generate). Problém není ve stroji, kde jsem klíč vytvářel, ale na těch ostatních. Předpokládal jsem, že když Yubikey umí uchovávat PG klíč, tak ho budu moci používat všude. Pracuji na více strojích, rozkopírovávat ~/.gnupg/ mi přijde jako nesystémové. Zvláště, když mám ten klíč pořád s sebou. Je ale možné, že něco dělám špatně, že jsem něco nepochopil...

mhepp

Re:Yubikey, GnuPG a podepisování
« Odpověď #7 kdy: 07. 12. 2016, 10:41:41 »
Jo, a fetch stáhne klíč do Yubikey z dané url.

David1234

Re:Yubikey, GnuPG a podepisování
« Odpověď #8 kdy: 07. 12. 2016, 11:33:04 »
Mě přijde, že jsi něco přehlédl. Mrkni se znovu na tento článek:
https://www.jfry.me/articles/2015/gpg-smartcard/#linux

On tam generuje klíče na LiveCD, pak je nahraje do yubikey. Proto aby je použil na jiném systému provede pouze import veřejného klíče. Make sure to load your public key into GPG and then link your keys to the smart card.

mhepp

Re:Yubikey, GnuPG a podepisování
« Odpověď #9 kdy: 07. 12. 2016, 17:07:18 »
...hmmm.

Tak ještě jednou... Zkusím to znovu podle toho návodu. Nejhorší je to rozdistribuování nového ssh klíče.

David1234

Re:Yubikey, GnuPG a podepisování
« Odpověď #10 kdy: 07. 12. 2016, 21:26:30 »
No co si budeme říkat gpg je uživatelsky dost nepřívětivé. Hele mrkni se sem: http://www.abclinuxu.cz/clanky/yubikey.-co-to-je-a-co-to-umi-3

Je tam přímo popsané to co chceš:

Přenos na jiný počítač
Co dělat, pokud přijdete k jinému počítači a chcete Yubikey používat i tam?
Většinou je nutné nainstalovat všechny závislosti, udev pravidlo a resetovat GPG agent, jak už bylo ukázáno na začátku této kapitoly. Časem možná budou distribuce doplněny natolik, že to již nutné nebude.
K tomu, aby Yubikey začal s GPG fungovat, stačí už jen importovat předtím exportovaný veřejný klíč:
$ gpg2 --import < yubikey.pub


A řeší tam i použití s SSH.

David1234

Re:Yubikey, GnuPG a podepisování
« Odpověď #11 kdy: 08. 12. 2016, 22:08:55 »
Tak tady je to opravdu asi nejlépe napsané se vším všudy - https://www.sidorenko.io/blog/2014/11/04/yubikey-slash-openpgp-smartcards-for-newbies/

Transfer the publickey.txt to the systems you want to use smartcard on

Kód: [Vybrat]
# import
$ gpg --import < publickey.txt
# let gpg see the smartcard and generate secret stubs
$ gpg --card-status
# configure trust
$ gpg --edit-key <<key id here>>
...
gpg> trust
...
  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

Your decision? 5
...
gpg> quit

mhepp

Re:Yubikey, GnuPG a podepisování
« Odpověď #12 kdy: 10. 12. 2016, 21:47:22 »
Super, teď se mi povedlo podepsat soubor! Díky za rady! Bylo opravdu potřeba importovat veřejný klíč, pak to funguje.

Cítím se dítě, které se právě naučilo jezdit na kole...