GPG가 내 스마트 카드에서 키 스텁을 가져올 수 없는 이유는 무엇입니까?

GPG가 내 스마트 카드에서 키 스텁을 가져올 수 없는 이유는 무엇입니까?

최근에 Yubikey를 받았고 지침에 따라 거기에 키를 로드했습니다.여기. gpg는 카드를 성공적으로 읽고 쓰며 카드에서 키 지문을 볼 수 있습니다. 그러나 키 스텁을 얻기 위해 gpg --edit-cardthen을 사용하려고 하면 아무 일도 일어나지 않습니다. fetch오류는 없지만 내 키도 표시되지 않습니다.

확인해보니 journalctl -f다음으로부터 메시지가 와 있었습니다 dirmngr.

Apr 14 12:02:25 {snip} gpg-agent[1816]: card has S/N: D27{...snip...}0000
Apr 14 12:02:33 {snip} dirmngr[1823]: command 'KS_GET' failed: Server indicated a failure <Unspecified source>

man gpg키를 카드로 전송하는 방법(섹션 5.2.2)에 대한 지침을 제공하는 gnupg.org 문서로 전송되었지만 "일반적인 방법으로 파일에 서명, 암호 해독 및 암호화할 수 있습니다"라는 내용만 나와 있습니다. 나의 궁극적인 목표는 이를 사용하여 pass비밀번호를 안전하게 저장하는 것이지만, 일반적인 방법으로 사용하려고 하면 이 gpg: decryption failed: No secret key.

무엇을 다르게 해야 합니까?

저는 gnupg메인 저장소에서 Arch Linux 버전 2.2.15-1을 사용하고 있습니다.

참고로 내 gpg 세션의 전체 목록은 다음과 같습니다.

$ gpg --list-secret-keys
$ gpg --list-keys
$ gpg --edit-card

Reader ...........: 1050:0407:X:0
Application ID ...: D27{...snip...}0000
Version ..........: 2.1
Manufacturer .....: Yubico
Serial number ....: 0{...snip...}6
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 ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 0
Signature key ....: 8DD5 {...snip...} C8B3
      created ....: 2019-04-13 23:49:11
Encryption key....: B9B0 {...snip...} 9B22
      created ....: 2019-04-13 23:49:11
Authentication key: 6447 {...snip...} 21C0
      created ....: 2019-04-13 23:53:30
General key info..: [none]

gpg/card> fetch

gpg/card> quit
$ gpg --list-secret-keys
$ gpg --list-keys

답변1

GPG 스마트 카드 미니 작동 가이드

짧은 답변

키가 Yubikey 스마트 카드에 올바르게 복사된 것 같습니다. 그러나 로컬 키링에는 공개 키가 없습니다. gpg가 제대로 작동하려면 공개 키를 로컬에서 사용할 수 있어야 합니다.

공개 키를 가져오는 방법에는 여러 가지가 있습니다. 그러나 공개 키를 찾을 수 있는 URL을 저장하는 편리한 필드가 스마트 카드에 있습니다. 따라서 공개 키가 인터넷에서 공개적으로 액세스 가능한 위치에 있는 경우 메뉴 또는 gpg 명령줄 fetch의 옵션을 사용하여 공개 키를 검색하고 로컬 키링에 추가할 수 있습니다.gpg/card--fetch-keys URL

공개 키가 로컬 키링에 알려지면 스마트 카드에 저장된 개인 키는 설정된 사용자 비밀번호를 사용하여 키 잠금을 해제하여 정상적으로 작동해야 합니다.

미니 조작 가이드

이 튜토리얼에서는 비밀번호 없는 PGP 키 세트 생성, 스마트 카드에 키 로드, 인터넷에 공개 키 게시 및 카드의 기본 사용법을 다룹니다.

이 문서에 포함된 키는 테스트 및 데모 키일 뿐입니다. 비밀번호가 없으며 필요한 경우 복사하여 붙여넣어 로컬로 가져올 수 있습니다. 단, 본 테스트 키를 테스트 이외의 목적으로 사용하지 마십시오.

GPG 버전

gpg --version gpg(GnuPG) 2.2.12 libgcrypt 1.8.4

키 생성

사용할 수 있는 키를 생성해 보겠습니다.

$ cat << EOF | gpg --gen-key --batch -
> Key-Type: rsa
> Key-Length: 2048
> Key-Usage: sign
> Subkey-Type: rsa
> Subkey-Length: 2048
> Name-Real: demo card
> Name-Comment: DeleteMe
> Name-Email: [email protected]
> %no-protection
> %commit
> EOF

이것이 비밀열쇠다

gpg --armor --export-secret-key [email protected]

-----BEGIN PGP PRIVATE KEY BLOCK-----

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
NQSlYESEFuIGA3+WuBy2
=V4D1
-----END PGP PRIVATE KEY BLOCK-----

메인 목록

gpg --edit-key F1663A6A94793987

Secret key is available.

sec  rsa2048/F1663A6A94793987
     created: 2019-04-15  expires: never       usage: SC  
     trust: ultimate      validity: ultimate
ssb  rsa2048/B4559AAA0624A9CF
     created: 2019-04-15  expires: never       usage: SEA 
[ultimate] (1). demo card (DeleteMe) <[email protected]>

공개 키를 온라인 어딘가에 두세요.

gpg -a --export F1663A6A94793987

https://pastebin.com/raw/y8gCBFmH

카드에 키 및 URL 추가

gpg --edit-card

gpg/card> url
URL to retrieve public key: https://pastebin.com/raw/y8gCBFmH

gpg --edit-key F1663A6A94793987

gpg> keytocard
Really move the primary key? (y/N) y
Please select where to store the key:
   (1) Signature key
   (3) Authentication key
Your selection? 1

gpg> key 1

sec  rsa2048/F1663A6A94793987
     created: 2019-04-15  expires: never       usage: SC  
     trust: ultimate      validity: ultimate
ssb* rsa2048/B4559AAA0624A9CF
     created: 2019-04-15  expires: never       usage: SEA 
[ultimate] (1). demo card (DeleteMe) <[email protected]>

gpg> keytocard
Please select where to store the key:
   (1) Signature key
   (2) Encryption key
   (3) Authentication key
Your selection? 2

gpg> save

열쇠고리에서 열쇠 제거

gpg --delete-secret-keys F1663A6A94793987

sec  rsa2048/F1663A6A94793987 2019-04-15 demo card (DeleteMe) <[email protected]>

Delete this key from the keyring? (y/N) y
This is a secret key! - really delete? (y/N) y

gpg --delete-keys F1663A6A94793987

pub  rsa2048/F1663A6A94793987 2019-04-15 demo card (DeleteMe) <[email protected]>

Delete this key from the keyring? (y/N) y

OP와 유사한 상태

gpg --edit-card

Reader ...........: 04E6:xx:0
Application ID ...: D27600xxxx0190000
Version ..........: 2.1
Manufacturer .....: unknown
Serial number ....: 00000019
Name of cardholder: [not set]
Language prefs ...: [not set]
Sex ..............: unspecified
URL of public key : https://pastebin.com/raw/y8gCBFmH
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 0
Signature key ....: F44A 6EA6 5E82 1743 6E83  E2C2 F166 3A6A 9479 3987
      created ....: 2019-04-15 17:49:25
Encryption key....: EB75 66CA 07FF 9C4F 94ED  9246 B455 9AAA 0624 A9CF
      created ....: 2019-04-15 17:49:25
Authentication key: [none]
General key info..: [none]

카드에 있는 열쇠를 사용하세요

공개 키 검색

gpg/card> fetch
gpg: requesting key from 'https://pastebin.com/raw/y8gCBFmH'
gpg: key F1663A6A94793987: public key "demo card (DeleteMe) <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1

gpg/card> list

Reader ...........: 04E6:xx:0
Application ID ...: D27600xxxx0190000
Version ..........: 2.1
Manufacturer .....: unknown
Serial number ....: 00000019
Name of cardholder: [not set]
Language prefs ...: [not set]
Sex ..............: unspecified
URL of public key : https://pastebin.com/raw/y8gCBFmH
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 0
Signature key ....: F44A 6EA6 5E82 1743 6E83  E2C2 F166 3A6A 9479 3987
      created ....: 2019-04-15 17:49:25
Encryption key....: EB75 66CA 07FF 9C4F 94ED  9246 B455 9AAA 0624 A9CF
      created ....: 2019-04-15 17:49:25
Authentication key: [none]
General key info..: 
pub  rsa2048/F1663A6A94793987 2019-04-15 demo card (DeleteMe) <[email protected]>
sec>  rsa2048/F1663A6A94793987  created: 2019-04-15  expires: never     
                                card-no: 7615 00000019
ssb>  rsa2048/B4559AAA0624A9CF  created: 2019-04-15  expires: never     
                                card-no: 7615 00000019

곧 이용 가능

gpg --edit-key F1663A6A94793987

Secret key is available.

sec  rsa2048/F1663A6A94793987
     created: 2019-04-15  expires: never       usage: SC  
     card-no: 7615 00000019
     trust: unknown       validity: unknown
ssb  rsa2048/B4559AAA0624A9CF
     created: 2019-04-15  expires: never       usage: SEA 
     card-no: 7615 00000019
[ unknown] (1). demo card (DeleteMe) <[email protected]>

키 신뢰는 어떻게 되었나요?

GPG는 신뢰와 주요 자료를 별도로 저장합니다. 이 신뢰 설정을 사용하면신뢰의 웹. 따라서 특정 키를 로컬 키링으로 가져올 때 해당 키에 신뢰 수준이 할당되지 않습니다. 그러나 이는 대화식으로 쉽게 변경됩니다.

gpg --edit-key F1663A6A94793987

gpg> trust
sec  rsa2048/F1663A6A94793987
     created: 2019-04-15  expires: never       usage: SC  
     card-no: 7615 00000019
     trust: unknown       validity: unknown
ssb  rsa2048/B4559AAA0624A9CF
     created: 2019-04-15  expires: never       usage: SEA 
     card-no: 7615 00000019
[ unknown] (1). demo card (DeleteMe) <[email protected]>

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  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
Do you really want to set this key to ultimate trust? (y/N) y

이제 열쇠가 완전히 준비되었습니다

gpg --list-key F1663A6A94793987

pub   rsa2048 2019-04-15 [SC]
      F44A6EA65E8217436E83E2C2F1663A6A94793987
uid           [ultimate] demo card (DeleteMe) <[email protected]>
sub   rsa2048 2019-04-15 [SEA]

해 보자

gpg -ear F1663A6A94793987

Hello there!

-----BEGIN PGP MESSAGE-----

hQEMA7RVmqoGJKnPAQf/V5CAzRCQ8gmAczy5i66e6w93CRYDiJ/1fNfL6ey2lYx2
cu/I3I12455Z8YjnLk3q66LW0gkhaxVX1uhtBXgjglz2RX6wMAYSDMvVs4cfIgq4
VLbW8T2y8ThdXvpGfwtgBgfFV5M2QS46RipXeF5rOCOnGeI8IUuzAC2147/qjcHG
+/wWDaker7NfY8GSgJ8OXd6kTmpZ//1zOTYvJVsE80viByv2Hx42Zu0r6e3KqgeR
qQlNA/zevYYjm4S0tkmxYoDb42gTPClNiHkJa3IXYlwYPzLCSszBsaTfHZdHl7yx
8PshF7fmE/NOO0dhHq2cV+fqPq8uT/VlNcPm3TYNxtJIAfnuTuHcorOuQNh0koML
8WWTIlLbj9OfBsZVsy5cp5ggpSLrCdPYd1g7RzEwRxu8QrWNO+pj2VRTtEZMafXq
XsKGJIgxsbJQ
=nwdE
-----END PGP MESSAGE-----

gpg -d

Please unlock the card

Number: 7615 00000019
Holder: 
PIN: 
gpg: encrypted with 2048-bit RSA key, ID B4559AAA0624A9CF, created 2019-04-15
      "demo card (DeleteMe) <[email protected]>"
Hello there!

그리고 사용pass

pass init F1663A6A94793987

mkdir: created directory '/home/user/.password-store/'
Password store initialized for F1663A6A94793987

pass insert password1

Enter password for password1: <qwerty>
Retype password for password1: <qwerty>

pass show password1

Please unlock the card

Number: 7615 00000019
Holder: 
PIN: 
qwerty

사용 지침

지정된 비밀번호 저장소가 카드에 없는 키로 초기화되는 경우. 이후에 키가 스마트 카드로 이동되면 암호 스크립트가 키를 찾을 수 없습니다.

관련 정보