version 1.1.5
[gnuk/gnuk.git] / doc / gnuk-keytocard.rst
1 ================================
2 Key import from PC to Gnuk Token
3 ================================
4
5 This document describes how I put my **keys on PC** to the Token,
6 and remove secret keys from PC.
7
8 Note that there is **no ways** to export keys from the Gnuk Token,
9 so please be careful.
10
11
12 If you want to import same keys to multiple Tokens,
13 please copy ``.gnupg`` directory beforehand.
14
15 In my case, I do something like following:  ::
16
17   $ cp -a .gnupg tmp/gnuk-testing-dir
18
19 See `another document`_ to import keys to the Token from copied directory.
20
21 .. _another document: gnuk-keytocard-noremoval
22
23 After personalization, I put my keys into the Token.
24
25 Here is the session log.
26
27 I invoke GnuPG with my key (4ca7babe).  ::
28
29   $ gpg --edit-key 4ca7babe 
30   gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.
31   This is free software: you are free to change and redistribute it.
32   There is NO WARRANTY, to the extent permitted by law.
33   
34   Secret key is available.
35   
36   pub  2048R/4CA7BABE  created: 2010-10-15  expires: never       usage: SC  
37                        trust: ultimate      validity: ultimate
38   sub  2048R/084239CF  created: 2010-10-15  expires: never       usage: E   
39   sub  2048R/5BB065DC  created: 2010-10-22  expires: never       usage: A   
40   [ultimate] (1). NIIBE Yutaka <gniibe@fsij.org>
41
42
43 Then, GnuPG enters its own command interaction mode.  The prompt is ``gpg>``.
44 To enable ``keytocard`` command, I type ``toggle`` command.  ::
45
46   gpg> toggle
47   
48   sec  2048R/4CA7BABE  created: 2010-10-15  expires: never     
49   ssb  2048R/084239CF  created: 2010-10-15  expires: never     
50   ssb  2048R/5BB065DC  created: 2010-10-22  expires: never     
51   (1)  NIIBE Yutaka <gniibe@fsij.org>
52
53 Firstly, I import my primary key into Gnuk Token.
54 I type ``keytocard`` command, answer ``y`` to confirm keyimport,
55 and type ``1`` to say it's signature key. ::
56
57   gpg> keytocard
58   Really move the primary key? (y/N) y
59   Signature key ....: [none]
60   Encryption key....: [none]
61   Authentication key: [none]
62   
63   Please select where to store the key:
64      (1) Signature key
65      (3) Authentication key
66   Your selection? 1
67
68 Then, GnuPG asks two passwords.  One is the passphrase of **keys on PC**
69 and another is the password of **Gnuk Token**.  Note that the password of
70 the token and the password of the keys on PC are different things,
71 although they can be same.
72
73 Here, I assume that Gnuk Token's admin password of factory setting (12345678).
74
75 I enter these passwords. ::
76
77   You need a passphrase to unlock the secret key for
78   user: "NIIBE Yutaka <gniibe@fsij.org>"
79   2048-bit RSA key, ID 4CA7BABE, created 2010-10-15
80   <PASSWORD-KEY-4CA7BABE>
81   gpg: writing new key
82   gpg: 3 Admin PIN attempts remaining before card is permanently locked
83   
84   Please enter the Admin PIN
85   Enter Admin PIN: 12345678
86   
87   sec  2048R/4CA7BABE  created: 2010-10-15  expires: never     
88                        card-no: F517 00000001
89   ssb  2048R/084239CF  created: 2010-10-15  expires: never     
90   ssb  2048R/5BB065DC  created: 2010-10-22  expires: never     
91   (1)  NIIBE Yutaka <gniibe@fsij.org>
92
93 The primary key is now on the Token and GnuPG says its card-no (F517 00000001),
94 where F517 is the vendor ID of FSIJ.
95
96 Secondly, I import my subkey of encryption.  I select key number '1'. ::
97
98   gpg> key 1
99   
100   sec  2048R/4CA7BABE  created: 2010-10-15  expires: never     
101                        card-no: F517 00000001
102   ssb* 2048R/084239CF  created: 2010-10-15  expires: never     
103   ssb  2048R/5BB065DC  created: 2010-10-22  expires: never     
104   (1)  NIIBE Yutaka <gniibe@fsij.org>
105
106 You can see that the subkey is marked by '*'.
107 I type ``keytocard`` command to import this subkey to Gnuk Token.
108 I select ``2`` as it's encryption key. ::
109
110   gpg> keytocard
111   Signature key ....: [none]
112   Encryption key....: [none]
113   Authentication key: [none]
114   
115   Please select where to store the key:
116      (2) Encryption key
117   Your selection? 2
118
119 Then, GnuPG asks the passphrase of **keys on PC** again.  I enter. ::
120
121   You need a passphrase to unlock the secret key for
122   user: "NIIBE Yutaka <gniibe@fsij.org>"
123   2048-bit RSA key, ID 084239CF, created 2010-10-15
124   <PASSWORD-KEY-4CA7BABE>
125   gpg: writing new key
126   
127   sec  2048R/4CA7BABE  created: 2010-10-15  expires: never     
128                        card-no: F517 00000001
129   ssb* 2048R/084239CF  created: 2010-10-15  expires: never     
130                        card-no: F517 00000001
131   ssb  2048R/5BB065DC  created: 2010-10-22  expires: never     
132   (1)  NIIBE Yutaka <gniibe@fsij.org>
133
134 The sub key is now on the Token and GnuPG says its card-no for it.
135   
136 I type ``key 1`` to deselect key number '1'. ::
137
138   gpg> key 1
139   
140   sec  2048R/4CA7BABE  created: 2010-10-15  expires: never     
141                        card-no: F517 00000001
142   ssb  2048R/084239CF  created: 2010-10-15  expires: never     
143                        card-no: F517 00000001
144   ssb  2048R/5BB065DC  created: 2010-10-22  expires: never     
145   (1)  NIIBE Yutaka <gniibe@fsij.org>
146
147 Thirdly, I select sub key of authentication which has key number '2'. ::
148
149   gpg> key 2
150   
151   sec  2048R/4CA7BABE  created: 2010-10-15  expires: never     
152                        card-no: F517 00000001
153   ssb  2048R/084239CF  created: 2010-10-15  expires: never     
154                        card-no: F517 00000001
155   ssb* 2048R/5BB065DC  created: 2010-10-22  expires: never     
156   (1)  NIIBE Yutaka <gniibe@fsij.org>
157
158 You can see that the subkey number '2' is marked by '*'.
159 I type ``keytocard`` command to import this subkey to Gnuk Token.
160 I select ``3`` as it's authentication key. ::
161
162   gpg> keytocard
163   Signature key ....: [none]
164   Encryption key....: [none]
165   Authentication key: [none]
166   
167   Please select where to store the key:
168      (3) Authentication key
169   Your selection? 3
170
171 Then, GnuPG asks the passphrase of **keys on PC** again.  I enter. ::
172
173   You need a passphrase to unlock the secret key for
174   user: "NIIBE Yutaka <gniibe@fsij.org>"
175   2048-bit RSA key, ID 5BB065DC, created 2010-10-22
176   <PASSWORD-KEY-4CA7BABE>
177   gpg: writing new key
178   
179   sec  2048R/4CA7BABE  created: 2010-10-15  expires: never     
180                        card-no: F517 00000001
181   ssb  2048R/084239CF  created: 2010-10-15  expires: never     
182                        card-no: F517 00000001
183   ssb* 2048R/5BB065DC  created: 2010-10-22  expires: never     
184                        card-no: F517 00000001
185   (1)  NIIBE Yutaka <gniibe@fsij.org>
186
187 The sub key is now on the Token and GnuPG says its card-no for it.
188
189 Lastly, I save changes of **keys on PC** and quit GnuPG. ::
190
191   gpg> save
192   $ 
193
194 All secret keys are imported to Gnuk Token now.
195 On PC, only references (card-no) to the Token remain
196 and secrets have been removed.