(2019-10-01 14:27:20 отредактировано yazero)

Gnupg openpgp rutoken (РЕШЕНА)

Есть идя подписывать пакеты  rpmsign --addsing *.rpm сгенерированным ключем  gpg --gen-key .
Но хранить данные ключи на устройстве rutoken  подписанным  самоподписным сертификатом , который храниться на токене. 

gpg --gen-key
gpg --export -a 'mykey' > KEY
rpm --impor KEY
rpmsign --addsing *.rpm   (или через .rpmmacros)

А может иду не тем путем .

p.s.  тут был
https://dev.rutoken.ru/pages/viewpage.a … Id=2228266

(2019-09-26 16:55:55 отредактировано yazero)

Re: Gnupg openpgp rutoken (РЕШЕНА)

rsa это механизм создания пару ключей pub/private

Но формат данных это не механизм.

на рутокен  rsa   в своем формате

на openpgp
rsa pgppublickey/pgpsecretkey


Даже если сгенерировать rsa на токене, то данная пара является не извлекаемой.


https://craftware.xyz/securitybricks/20 … h-pgp.html
Но как здесь происходит магия не понятно.  etoken тоже не входит в список поддерживаемых устройств openpgp

сам утилита opensc-tool  может работать с этими ключами.

$ gnupg-pkcs11-scd --daemon
$ gpg-agent --daemon
$ gpg-agent --server

gpg --card-edit не видит  ее.

gpg --card-edit

gpg: WARNING: server 'scdaemon' is older than us (0.9.2 < 2.2.12)
gpg: Note: Outdated servers may lack important security fixes.
gpg: Note: Use the command "gpgconf --kill all" to restart them.
Reader ...........: [none]
Application ID ...: D27600012401115031310E1ECC471111
Version ..........: 11.50
Manufacturer .....: unknown
Serial number ....: 0E1ECC47
Name of cardholder: [not set]
Language prefs ...: [not set]
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa48 rsa48 rsa48
Max. PIN lengths .: 0 0 0
PIN retry counter : 0 0 0
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

opensc-tool --list-drivers
Configured card drivers:
  cardos           Siemens CardOS
  flex             Schlumberger Multiflex/Cryptoflex
  cyberflex        Schlumberger Cyberflex
  gpk              Gemplus GPK
  gemsafeV1        Gemalto GemSafe V1 applet
  asepcos          Athena ASEPCOS
  starcos          STARCOS
  tcos             TCOS 3.0
  oberthur         Oberthur AuthentIC.v2/CosmopolIC.v4
  authentic        Oberthur AuthentIC v3.1
  iasecc           IAS-ECC
  belpic           Belpic cards
  incrypto34       Incard Incripto34
  acos5            ACS ACOS5 card
  akis             TUBITAK UEKAE AKIS
  entersafe        entersafe
  epass2003        epass2003
  rutoken          Rutoken driver
  rutoken_ecp      Rutoken ECP driver
  myeid            MyEID cards with PKCS#15 applet
  dnie             DNIe: Spanish eID card
  MaskTech         MaskTech Smart Card
  atrust-acos      A-Trust ACOS cards
  westcos          WESTCOS compatible cards
  muscle           MuscleApplet
  sc-hsm           SmartCard-HSM
  mcrd             MICARDO 2.1 / EstEID 1.0 - 3.5
  setcos           Setec cards
  PIV-II           Personal Identity Verification Card
  cac              Common Access Card (CAC)
  itacns           Italian CNS
  isoApplet        Javacard with IsoApplet
  gids             GIDS Smart Card
  openpgp          OpenPGP card
  jpki             JPKI(Japanese Individual Number Cards)
  coolkey          COOLKEY
  npa              German ID card (neuer Personalausweis, nPA)
  default          Default driver for unknown cards

Re: Gnupg openpgp rutoken (РЕШЕНА)

yazero пишет:

Есть идя подписывать пакеты  rpmsign --addsing *.rpm сгенерированным ключем  gpg --gen-key .
Но хранить данные ключи на устройстве rutoken  подписанным  самоподписным сертификатом , который храниться на токене.

Здравствуйте. Почему именно gpg? Чем не устраивает OpenSSL?

Re: Gnupg openpgp rutoken (РЕШЕНА)

Я не нашел что бы с помощью  openssl  можно было подписать пакеты rpmsign * ,  или  вы про шифрование ?
Еще рассматривал вариант использовать решение https://www.altlinux.org/GnuPG-GOST , купив токены с ключами,
но нужно понять какие в этом случае нужны ключи.

Re: Gnupg openpgp rutoken (РЕШЕНА)

Я тоже пока не могу найти. Если эта штука работает только с gpg, то нужен специальный токен или карта.
Такие токены или карты должны поддерживать спецификацию OpenPGP Card. Это как бы совсем отдельная история.
Существовал еще проект, позволявший использовать PKCS#11 токены или карты с gpg. Что с ним случилось, я лично не знаю. Страничка проекта http://alon.barlev.googlepages.com/gnupg-pkcs11 нынче в 404.
Видимо проект переехал сюда: https://github.com/alonbl/gnupg-pkcs11-scd. Нужно будет сконфигурировать под нашу библиотеку PKCS#11 и попробовать.
Из токенов тут лучше всего наверное подойдет Рутокен ЭЦП PKI, но Рутокен ЭЦП 2.0 тоже можно использовать.

Есть еще такое:
http://gnupg-pkcs11.sourceforge.net/

Re: Gnupg openpgp rutoken (РЕШЕНА)

всё поставил уже поставил, собрал, сконфигурил(без патчей).   
но на данный момент   сертификаты не видны в gpg --list-keys

хотя  видно  что сертификаты сгенеренные  на ключе есть.  но походу не те что нужно
gpg-agent --server gpg-connect-agent
OK Pleased to meet you
SCD LEAR
gnupg-pkcs11-scd[4341.1626187584]: version: 0.9.2
gnupg-pkcs11-scd[4341.1626187584]: config: debug=1, verbose=0
gnupg-pkcs11-scd[4341.1626187584]: config: pin_cache=-1
gnupg-pkcs11-scd[4341.1626187584]: config: provider: name=p1, library=/usr/lib/librtpkcs11ecp.so, allow_protected=0, cert_is_private=0, private_mask=00000000
gnupg-pkcs11-scd[4341.1626187584]: run_mode: 2
gnupg-pkcs11-scd[4341.1626187584]: crypto: openssl
gnupg-pkcs11-scd[4341.1626187584]: Listening to socket '/tmp/gnupg-pkcs11-scd.37hLcX/agent.S'
gnupg-pkcs11-scd[4341.1626187584]: accepting connection
gnupg-pkcs11-scd[4341]: chan_0 -> OK PKCS#11 smart-card server for GnuPG ready
gnupg-pkcs11-scd[4341.1626187584]: processing connection
gnupg-pkcs11-scd[4341]: chan_0 <- GETINFO socket_name
gnupg-pkcs11-scd[4341]: chan_0 -> D /tmp/gnupg-pkcs11-scd.37hLcX/agent.S
gnupg-pkcs11-scd[4341]: chan_0 -> OK
gnupg-pkcs11-scd[4341]: chan_0 <- LEARN
gnupg-pkcs11-scd[4341]: chan_0 -> S SERIALNO D27600012401115031310E1ECC471111
S SERIALNO D27600012401115031310E1ECC471111
gnupg-pkcs11-scd[4341]: chan_0 -> S APPTYPE PKCS11
S APPTYPE PKCS11
gnupg-pkcs11-scd[4341]: chan_0 -> S KEY-FRIEDNLY A1C2AB193A1E1EC094CCA7972001D5FD637E0F32 /C=RU/ST=alexander vozny/L=saint peterburg/O=russian post/OU=it/CN=post.ru/emailAddress=pochta@russianpost.ru on mytoken3
S KEY-FRIEDNLY A1C2AB193A1E1EC094CCA7972001D5FD637E0F32 /C=RU/ST=alexander/L=saint peterburg/O= post/OU=it/CN=post.ru/emailAddress=pochta@post.ru on mytoken3
gnupg-pkcs11-scd[4341]: chan_0 -> S CERTINFO 101 Aktiv\x20Co\x2E/Rutoken\x20ECP/333d7d35/mytoken3/01
S CERTINFO 101 Aktiv\x20Co\x2E/Rutoken\x20ECP/333d7d35/mytoken3/01
gnupg-pkcs11-scd[4341]: chan_0 -> S KEYPAIRINFO A1C2AB193A1E1EC094CCA7972001D5FD637E0F32 Aktiv\x20Co\x2E/Rutoken\x20ECP/333d7d35/mytoken3/01
S KEYPAIRINFO A1C2AB193A1E1EC094CCA7972001D5FD637E0F32 Aktiv\x20Co\x2E/Rutoken\x20ECP/333d7d35/mytoken3/01
gnupg-pkcs11-scd[4341]: chan_0 -> OK
OK

Re: Gnupg openpgp rutoken (РЕШЕНА)

yazero пишет:

всё поставил уже поставил, собрал, сконфигурил(без патчей).   
но на данный момент   сертификаты не видны в gpg --list-keys

хотя  видно  что сертификаты сгенеренные  на ключе есть.  но походу не те что нужно

А чем генерили ключи и сертификаты?

Re: Gnupg openpgp rutoken (РЕШЕНА)

на нем
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --login --keypairgen --key-type RSA:2048 --id 1 --label "john@snow.com"

записать свой сгенерированный через gpg --gen-key не получилось

Re: Gnupg openpgp rutoken (РЕШЕНА)

вчера виртуалку замучил что перестала запускаться.

сегодня все поставил    такое второй раз пока не получилось.
сейчас вот такой вывод:

vagrant# gpg-agent --server --debug  gpg-connect-agent
gpg-agent[5464]: reading options from '/root/.gnupg/gpg-agent.conf'
gpg-agent[5464]: unknown debug flag 'gpg-connect-agent' ignored
OK Pleased to meet you
SCD LEARN
gnupg-pkcs11-scd[5465.3976816448]: Listening to socket '/tmp/gnupg-pkcs11-scd.4EtTdI/agent.S'
gnupg-pkcs11-scd[5465.3976816448]: accepting connection
gnupg-pkcs11-scd[5465]: chan_0 -> OK PKCS#11 smart-card server for GnuPG ready
gnupg-pkcs11-scd[5465.3976816448]: processing connection
gnupg-pkcs11-scd[5465]: chan_0 <- GETINFO socket_name
gnupg-pkcs11-scd[5465]: chan_0 -> D /tmp/gnupg-pkcs11-scd.4EtTdI/agent.S
gnupg-pkcs11-scd[5465]: chan_0 -> OK
gnupg-pkcs11-scd[5465]: chan_0 <- LEARN
gnupg-pkcs11-scd[5465]: chan_0 -> S SERIALNO D2760001240111503131AFE17C721111
S SERIALNO D2760001240111503131AFE17C721111
gnupg-pkcs11-scd[5465]: chan_0 -> S APPTYPE PKCS11
S APPTYPE PKCS11
gnupg-pkcs11-scd[5465]: chan_0 -> ERR 36 Bad certificate <Unspecified source>
ERR 36 Bad certificate <Unspecified source>

Re: Gnupg openpgp rutoken (РЕШЕНА)

openssl>engine dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:libtoken.so

openssl>req -engine pkcs11 -new -key slot_0-id_01 -keyform engine -x509 -out my.pem -text

#pkcs11-tool --module /usr/lib/libtoken.so --login --write-object my.der --type cert --id 01 --label "john@snow.com"



после этого-го

gpg-agent --server
SCD LEARN

gnupg-pkcs11-scd[1093]: chan_0 -> S KEY-FRIEDNLY AB628AB5CFE5DB16EEC410B076C1F308B6082745 /C=RU/ST=saint peterburg/L=saint peterburg/O=pochta/OU=it/CN=russianpost.ru/emailAddress=yazero@yandex.ru on rutoken_test
gpg-agent[1092]: DBG: chan_5 <- S KEY-FRIEDNLY AB628AB5CFE5DB16EEC410B076C1F308B6082745 /C=RU/ST=saint peterburg/L=saint peterburg/O=pochta/OU=it/CN=russianpost.ru/emailAddress=yazero@yandex.ru on rutoken_test
gpg-agent[1092]: DBG: chan_3 -> S KEY-FRIEDNLY AB628AB5CFE5DB16EEC410B076C1F308B6082745 /C=RU/ST=saint peterburg/L=saint peterburg/O=pochta/OU=it/CN=russianpost.ru/emailAddress=yazero@yandex.ru on rutoken_test
S KEY-FRIEDNLY AB628AB5CFE5DB16EEC410B076C1F308B6082745 /C=RU/ST=saint peterburg/L=saint peterburg/O=pochta/OU=it/CN=russianpost.ru/emailAddress=yazero@yandex.ru on rutoken_test
gnupg-pkcs11-scd[1093]: chan_0 -> S CERTINFO 101 Aktiv\x20Co\x2E/Rutoken\x20ECP/333d7d35/rutoken_test/01
gpg-agent[1092]: DBG: chan_5 <- S CERTINFO 101 Aktiv\x20Co\x2E/Rutoken\x20ECP/333d7d35/rutoken_test/01
gpg-agent[1092]: DBG: chan_3 -> S CERTINFO 101 Aktiv\x20Co\x2E/Rutoken\x20ECP/333d7d35/rutoken_test/01
S CERTINFO 101 Aktiv\x20Co\x2E/Rutoken\x20ECP/333d7d35/rutoken_test/01
gnupg-pkcs11-scd[1093]: chan_0 -> S KEYPAIRINFO AB628AB5CFE5DB16EEC410B076C1F308B6082745 Aktiv\x20Co\x2E/Rutoken\x20ECP/333d7d35/rutoken_test/01
gpg-agent[1092]: DBG: chan_5 <- S KEYPAIRINFO AB628AB5CFE5DB16EEC410B076C1F308B6082745 Aktiv\x20Co\x2E/Rutoken\x20ECP/333d7d35/rutoken_test/01
gpg-agent[1092]: DBG: chan_3 -> S KEYPAIRINFO AB628AB5CFE5DB16EEC410B076C1F308B6082745 Aktiv\x20Co\x2E/Rutoken\x20ECP/333d7d35/rutoken_test/01
S KEYPAIRINFO AB628AB5CFE5DB16EEC410B076C1F308B6082745 Aktiv\x20Co\x2E/Rutoken\x20ECP/333d7d35/rutoken_test/01

выполняю
#gpg2 --card-edit

в папке  появляется файл
/root/private-keys-v1.d/AB628AB5CFE5DB16EE~1F308B6082745.key

паблик он не видит. пробовал удалить  как тут написано
pkcs11-tool --module /usr/lib/libeToken.so --login --delete-object --type pubkey --id 1
https://craftware.xyz/securitybricks/20 … h-pgp.html

пробовал удалить все ключи с хоста. как тут доке написано
https://github.com/alonbl/gnupg-pkcs11- … /ChangeLog

ACTION REQUIRED
   in order to assign new card serial number to existing keys.
   backup your ~/.gnupg.
   delete all PKCS#11 secret keys using:
       gpg --delete-secret-keys $KEY then
   Then refresh keys using:
       gpg --card-edit
   In <gnupg-2.1.19 the keys should be re-generated using:
       admin
       generate
   Do not replace keys!
   gpg will learn the private keys of the new card and attach to
   the existing public keys.



пока застрял

Re: Gnupg openpgp rutoken (РЕШЕНА)

не понятна  фраза

   gpg will learn the private keys of the new card and attach to
   the existing public keys.

   gpg изучит закрытые ключи новой карты и прикрепит к
   существующие открытые ключи.

Re: Gnupg openpgp rutoken (РЕШЕНА)

может нужно что то доделать
пока читаю  https://dev.rutoken.ru/pages/viewpage.a … d=18055179

Re: Gnupg openpgp rutoken (РЕШЕНА)

yazero, а как решили вопрос?