• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

checks/H03-May-2022-697610

gl/H19-Oct-2018-10,7048,021

AUTHORSH A D30-Jun-201297 32

COPYINGH A D13-Jun-201217.6 KiB341281

ChangeLogH A D17-Nov-20177.3 KiB249153

INSTALLH A D19-Oct-201815.2 KiB366284

Makefile.amH A D05-Sep-2016614 2920

Makefile.inH A D19-Oct-201837.9 KiB1,1081,008

NEWSH A D19-Oct-20183.2 KiB11365

READMEH A D23-Jun-20189.8 KiB214172

aclocal.m4H A D19-Oct-201834.6 KiB976881

config.guessH A D19-Oct-201843.9 KiB1,5021,291

config.h.inH A D19-Oct-201817.9 KiB557431

config.subH A D19-Oct-201833.6 KiB1,7061,558

configureH A D19-Oct-2018282.7 KiB10,4858,608

configure.acH A D19-Oct-20181.5 KiB5744

depcompH A D19-Oct-201818.2 KiB631407

extract.cH A D24-Oct-20172.5 KiB10567

extract.hH A D30-Jun-2012927 254

install-shH A D19-Oct-201813.3 KiB521344

missingH A D19-Oct-201811.2 KiB377281

output.cH A D05-Sep-20167.2 KiB315249

output.hH A D05-Sep-20161.5 KiB4117

packets.cH A D30-Jun-20121.7 KiB7952

packets.hH A D30-Jun-20121.2 KiB4116

paperkey.1H A D04-Sep-20166.8 KiB168146

paperkey.cH A D05-Sep-20165.4 KiB217173

paperkey.specH A D19-Oct-20181.4 KiB4940

paperkey.spec.inH A D06-Sep-20161.4 KiB4940

parse.cH A D24-Oct-20179.9 KiB487382

parse.hH A D30-Jun-20121.1 KiB298

restore.cH A D30-Jun-20124.4 KiB218160

restore.hH A D30-Jun-2012949 275

README

1		  Paperkey - an OpenPGP key archiver
2		  ----------------------------------
3		  David Shaw <dshaw@jabberwocky.com>
4
5
6A reasonable way to achieve a long term backup of OpenPGP (GnuPG, PGP,
7etc) keys is to print them out on paper.  Paper and ink have amazingly
8long retention qualities - far longer than the magnetic or optical
9means that are generally used to back up computer data.
10
11
12Paper?  Seriously?
13------------------
14
15The goal with paper is not secure storage.  There are countless ways
16to store something securely.  A paper backup also isn't a replacement
17for the usual machine readable (tape, CD-R, DVD-R, etc) backups, but
18rather as an if-all-else-fails method of restoring a key.  Most of the
19storage media in use today do not have particularly good long-term
20(measured in years to decades) retention of data.  If and when the
21CD-R and/or tape cassette and/or USB key and/or hard drive the secret
22key is stored on becomes unusable, the paper copy can be used to
23restore the secret key.
24
25
26What paperkey does
27------------------
28
29Due to metadata and redundancy, OpenPGP secret keys are significantly
30larger than just the "secret bits".  In fact, the secret key contains
31a complete copy of the public key.  Since the public key generally
32doesn't need to be escrowed (most people have many copies of it on
33various keyservers, web pages, or similar), only archiving the secret
34parts can be a real advantage.
35
36Paperkey extracts just those secret bytes and prints them in a easily
37handled format.  To reconstruct, you re-enter those bytes (whether by
38hand or via OCR) and paperkey uses them to transform your existing
39public key into a secret key.
40
41For example, the regular DSA+Elgamal secret key I just tested comes
42out to 1281 bytes.  The secret parts of that key (plus some minor
43packet structure) come to only 149 bytes.  It's a lot easier to
44re-enter 149 bytes correctly.
45
46Different key algorithms will benefit to a different degree from this
47size reduction.  In general, DSA or Elgamal keys benefit the most,
48shrinking to around 10% of the original key size, and RSA keys benefit
49the least, only shrinking to about 50% of the original key size.  ECC
50keys are in between, shrinking to around 20-25% of the original, but
51of course, ECC keys are quite small to begin with, and 25% of a small
52number can compare well to 10% of a larger number.
53
54As with any backup or archiving system, it is prudent to verify you
55can restore the key from your paper copy before filing the paper away.
56
57
58Aren't CD-Rs supposed to last a long time?
59------------------------------------------
60
61They're certainly advertised to (and I've seen some pretty incredible
62claims of 100 years or more), but in practice it doesn't really work
63out that way.  The manufacturing of the media, the burn quality, the
64burner quality, the storage, etc, all have a significant impact on how
65long an optical disc will last.  Some tests show that you're lucky to
66get 10 years.
67
68In comparison, to claim that paper will last for 100 years is not even
69vaguely impressive.  High-quality paper with good ink regularly lasts
70many hundreds of years even under less than optimal conditions.
71
72Another bonus is that ink on paper is readable by humans.  Not all
73backup methods will be readable 50 years later, so even if you have
74the backup, you can't easily buy a drive to read it.  I doubt this
75will happen anytime soon with CD-R as there are just so many of them
76out there, but the storage industry is littered with old, now-dead
77methods of storing data.
78
79
80Security
81--------
82
83Note that paperkey does not change the security requirements of
84storing a secret key.  In fact, paperkey doesn't do any crypto at all,
85but just saves and restores the original secret key, whether it is
86encrypted or not.  If your key has a passphrase on it (i.e. is
87encrypted), the paper copy is similarly encrypted.  If your key has no
88passphrase, neither does the paper copy.  Whatever the passphrase (or
89lack thereof) was on the original secret key will be the same on the
90reconstructed key.
91
92
93Examples
94--------
95
96Take the secret key in key.gpg and generate a text file
97to-be-printed.txt that contains the secret data:
98
99  paperkey --secret-key my-secret-key.gpg --output to-be-printed.txt
100
101Take the secret key data in my-key-text-file.txt and combine it with
102my-public-key.gpg to reconstruct my-secret-key.gpg:
103
104  paperkey --pubring my-public-key.gpg --secrets my-key-text-file.txt --output my-secret-key.gpg
105
106If --output is not specified, the output goes to stdout.  If
107--secret-key is not specified, the data is read from stdin so you can
108do things like:
109
110  gpg --export-secret-key my-key | paperkey | lpr
111
112Some other useful options are:
113
114  --output-type      can be "base16" or "raw".  "base16" is human
115		     readable, and "raw" is useful if you want to pass
116		     the output to another program like a bar code or
117		     QR code generator (although note that scannable
118		     codes have some of the longevity disadvantages
119		     discussed above).
120
121  --input-type       same as --output-type, but for the restore side of
122		     things.  By default the input type is inferred
123		     automatically from the input data.
124
125  --output-width     sets the width of base16 output (i.e. given your font,
126  		     how many columns fit on the paper you're printing on).
127		     Defaults to 78.
128
129  --ignore-crc-error allows paperkey to continue when reconstructing
130		     even if it detects data corruption in the input.
131
132  --verbose (or -v)  be chatty about what is happening.  Repeat this
133		     multiple times for more verbosity.
134
135Full documentation for all options is in the man page.
136
137
138RPM
139---
140
141Paperkey ships with a RPM spec file.  You can build an RPM with the
142usual "rpmbuild -ta /path/to/the/paperkey/tarball.tar.gz".
143
144Paperkey is Copyright (C) 2007-2018 by David Shaw
145
146-----BEGIN PGP PUBLIC KEY BLOCK-----
147
148mQILBDxUyXkBEACgg6vxNPigg9FQz14CkPtR/dEq3sCjK1r4+2oyeoRno+pqZ6Z7
149ZfphgA/q5woweFAGOg17KD2WXegoQ5pXbFvP+w9j9zm3g59XzTRSzZgScelTibPn
150Ky6g8r8GDAY6IQraR6pxe4297/NznqvRvKpTt5g1XP5LyjVBsEv9HAYJE1vyy10q
151SQRtEz3QunUzfELNC4kiYNMZOnmgaFeW4APIIhWDtrrxqW3Ofjp1K4DAhqcnayrf
152vYbOtqh0sxJ246kvVc3Bc9pH6wDw/yub2deuPq6BZBLBJwrtu/20qD0nsZ9is/5j
1530aL1MZuVmr7xKYqeehyzJ1WdpJK52qng9natYedS+GefKDIw1Jq7ppQNWfVduTNI
154TFTF0JswggjQuPqKT8Td5GCywQWN/kGHbp6EdybiUXZ+9fp4eek0UB5M+srSwbkF
1554hQ0mBrqlsaoji4CuXjc0c+Zx1D0pGfqqBCmvEV1tLul3U8h0TzR4opUA8mLKegQ
156p5cjh/dHz7zTPDxVgSr3blJ9FxI1Z69th/+jJj3q6joo3uW/5y8qQCrzdSCzs+TD
157EWwucZtJIuIhTct8AMPY/Ayt+Pf9jXfI+xSQgz3r7Eu5o+rEu02/cthaOc4b3KYD
158tNkjLKszgiext1BYOq06R+Yyh2qgsg9azzkfudvvpwhCpJ7EOxcdaP3bxwAGKbQl
159RGF2aWQgTS4gU2hhdyA8ZHNoYXdAamFiYmVyd29ja3kuY29tPokCOQQTAQIAIwIb
160AwIeAQIXgAUCTwxJwAYLCQgHAwIGFQoJCAsCBRYCAwEAAAoJENtpjXGZJCVgYt0P
161/23rpCNUquNkW1D2BcJOafaPrY9ieJEvGeWUSTQTctKq5F0wigoXwOZAmBg2/I7F
162Paorzf46ZmtkXq2e+wM/DQWqdVkS0eBIY10esf9hf6+CN/vvbTZBvPUhkeyCZVTE
163LCBMLTdMLGNAtjeuOovtS3OH+qlS7tefP7+plMxT0eBD+oywfsg6ijG2San4YnFt
164o18on5a5OjhhguVmyn1SqjhtRcmAftjZZrRvLEnQ/YRPbgA0vFRnafYaGhL9S8S/
165JoroMfctnA2878GMhRljm+pCE0Ws+sK6FmlKvcTGWGOTxuPL3nV0ceXXEgjkXE3j
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
212=DSRI
213-----END PGP PUBLIC KEY BLOCK-----
214