Hot answers tagged

161

I like to store mine on paper. Using a JavaScript (read: offline) QR code generator, I create an image of my private key in ASCII armoured form, then print this off. Note alongside it the key ID and store it in a physically secure location. Here's some that should work for you no matter what operating system you use, as long as you have a browser that ...


107

Option 1 is more secure. In option 2, we can guess each word seperately. When we guess "amazing", we get confirmation that this word is correct and we can continue to the second word. In option 1, we have to guess all four words at the same time. You may think that one GPG offers some security, and four GPGs offer four times that security, but it doesn't ...


75

In general, one key per identity should be fine. One key can include: Several UIDs (for separate mail addresses, ...) Several subkeys (for different devices, so you can put some subkey on your mobile; if it gets lost, revoke only this) Advantages Less hassle when signing keys, interacting with keyservers, cross-signing your keys Less hassle maintaining ...


67

Yes, it's a coincidence that the first bytes appear to you as these symbols. They are part of the OpenPGP message format specification (RFC 4880) and vary depending on the packet properties. Let's create a file containing only those bytes and try to read it as a GPG message: $ echo "\x85\x02\x0c\x03" > foo.gpg && gpg --list-packets foo.gpg # off=0 ctb=85 ...


61

TL;DR: private keys are called private for a reason. You can secure private keys by not transmitting them at all. If you have shell access to the server they are used at, you simply generate them in situ. If the target device is too weak/underpowered to generate the keys, it is also too weak to use asymmetric encryption (this includes entropy sources). Of ...


59

Why not use a commonly used application to do it? VeraCrypt is a good choice as it replaced the respected TrueCrypt application and allows you to create an encryption container that you mount as a drive.


52

On the days when my paranoia is like a ripe tomato, begging me to pick it, I split the private key (naturally it is already passphrase-protected) in half, then make a 3rd string by XOR-ing them together. Then I use simple password encryption (gpg --symmetric) on each string, and put each on a remote server on a different continent. Ideally, each remote ...


49

Generally speaking, no, encrypting the same file with the same key will not produce the same file, for three reasons: The OpenPGP format (which GnuPG implements) uses hybrid encryption: a random, symmetric key is encrypted with the recipient's public key (of type RSA or ElGamal), and that symmetric key is itself used to encrypt the message body with a ...


49

How the Fingerprint and Long and Short Key IDs are Related Each OpenPGP key has a fingerprint attached, calculated mainly from its public key packet which also contains the creation time. The calculation is defined in RFC 4880, OpenPGP, 12.2. Key IDs and Fingerprints. There are short and long key IDs, which resemble the lower 32 respective 64 bits of the ...


41

I find some of your comments curious. Particularly, I'm trying to stay away from methods that are reliant on an application, and do it manually - as I'd feel more in 'control'. and I don't need to solution to be incredibly secure, prioritising on convenience for this use case. do seem somewhat at odds with each other. First, you really should spend ...


39

There are three main reasons why you may want to have separate keys: Not all key types can be used for both encryption and signature. OpenPGP (the format that GnuPG implements) primarily supports RSA, ElGamal and DSA; ElGamal is encrypt-only, while DSA is sign-only. RSA can do both; however, there was a time when RSA was still patented, and since that time ...


37

since it's known that the NSA infiltrated RSA and made their key generation algorithm weaker If you know that, then you know wrong. You are confusing two things which have no relation whatsoever: RSA, the asymmetric cryptographic algorithm. Dual_EC_DRBG, a PRNG algorithm of poor quality and amenable to backdooring. RSA can be used for asymmetric ...


36

It can actually be done. The instructions at atom.smasher.org/gpg/gpg-migrate.txt are now out of date. Try this. As always, make backups, because it's really easy to mess it up. So these are your 'old' keys: $ gpg -K ---------------------------------- sec 2048R/712A2BBD 2013-01-29 uid Test Key 1 ssb 2048R/...


35

I figured out what the problem and solution was so I give an answer with details should anyone run into the same problem, it may be helpful. The problem is somewhat ambiguous, no really informative error message is given. It turned out that the encryption sub-key was expired. Strangely, gpg --list-keys did NOT show the expired sub-key!! Once the sub-key ...


34

Does it store the secret key somewhere and uses it (I also stored my secret key in the GnuPG key chain, does it uses that)? GnuPG only uses keys from your key chain, so it must be in there to use it. How can I force the system to ask the passphrase every time? Old versions of GnuPG uses the gpg-agent, which caches the passphrase for a given time. Use ...


32

Use the -R (or --hidden-recipient) flag in gpg to do this. More details in this answer.


29

This doesn't add security, but makes it easier to guess the passphrase one word at a time (N⁴ vs. N+N+N+N, where N is the symbol count of the word list). Even when you encrypt a file or a message to multiple recipients using PGP, the payload is encrypted only once using symmetric encryption, and then the key for that is encrypted separately for every ...


28

This is not what I currently use, but I am thinking about it: Encrypt the private key with very long symmetric encryption key Use Shamir's Secret Sharing to split the symmetric encryption key to 7 pieces (like Voldemort), require at least 5 shares to merge successfully. Figure out where to put 7 secret backups, some ideas: media card in a safe at home ...


28

Let's try... First, I create a 500 MBytes file full of random bytes: dd if=/dev/urandom of=/tmp/foo bs=1000000 count=500 then I encrypt it using GnuPG, measuring the time taken by that process ("keyID" is the UID of the public key I am using): time gpg -r "keyID" --cipher-algo AES256 --compress-algo none -o /tmp/bar --encrypt /tmp/foo Total time on my ...


26

Considering that your public key is only usable by a computer1; you can remove clutter from your business card by having all electronic data accessible online and referred to by a QR code. The link could refer to a vCard file stored on, say, a public Dropbox. As the vCard format can store any business or contact information including OpenPGP keys. ...


25

GitHub itself is signing commits made through the online editor using the key 0x4AEE18F83AFDEB23: From: https://help.github.com/articles/about-gpg/ GitHub will automatically sign commits you make using the GitHub web interface. These commits will have a verified status on GitHub. You can verify the signature locally using the public key available at https:/...


24

GPG encrypts the file once with a symmetric key, then places a header identifying the target keypair and an encrypted version of the symmetric key. The intricate details of that are defined in section 5.1 of RFC 2440. When encrypted to multiple recipients, this header is placed multiple times providing a uniquely encrypted version of the same symmetric key ...


24

TL;DR: For GnuPG 1.0 and 2.0, default is Cast5, for GnuPG 2.1 it is AES-128. Recipient's Preferences Per default, GnuPG will read the recipient's algorithm preferences and take the first algorithm in that list it supports (in other words, it takes the most-preferred supported algorithm the recipient asks for). Safe Algorithms If no preferences are given (...


24

GnuPG does not support encrypting to a recipient specified by a key file. The key must be imported in advance, and the recipient defined with either his mail address or key ID. I'd recommend to use a cleaner approach as expected by GnuPG and hard-code either the key's fingerprint, or a user ID given by that key and import it as usual. If you really do not ...


24

Theoretically, there's no limit on the number of times you can encrypt a file. The output of an encryption process is again a file, which you can again pass it on to a different algorithm and get an output. The thing is, at decryption side, it will have to be decrypted in LIFO (last in, first out) style, with the proper passwords. For example, if your file ...


21

There is no contradiction. Linus himself said in that same talk: If I have those 20 bytes, I can download a git repository from a completely untrusted source and I can guarantee that they did not do anything bad to it. I'd interpret the "Git uses SHA-1 not for security" as "SHA-1 hasn't been added to git for security reasons, but for reliability ...


21

GPG can allow you to send these securely without having to send a passphrase. If the destination has their own GPG key, you can encrypt the file so that only they can open it. For example, gpg -e -r E9053BDA thefile.zip will allow only me to open thefile.zip with my GPG key without either of us ever communicating a passphrase. Alternatively gpg-zip -e -r ...


21

What's your threat model? If your threat is that you are protecting from physical theft, then encrypting the key (using passphrase) or full disk encryption would suffice. If your threat is a malicious program running under your user account, then you want to run potentially malicious programs in a sandbox, or just not run it at all. If your threat is a ...


20

GnuPG encryption is not deterministic and thus will return different output for each run. Encrypting, then decrypting is deterministic of course and will always return the same contents. Explanation: GnuPG uses asymmetric encryption, which is slow when encrypting huge amounts of data. For this reason, it uses your private key to encrypt a random block ...


19

OpenPGP User IDs User IDs in OpenPGP are used to connect keys to entities like names and e-mail addresses. These are used to search for keys on key servers, and matching them to users/e-mail addresses. Be aware user IDs are not checked by key servers, make sure to verify them on your own! OpenPGP Key IDs OpenPGP key IDs (and fingerprints) are used to ...


Only top voted, non community-wiki answers of a minimum length are eligible