What's the most popular way to encrypt individual files or folders?
-
Question is a bit unclear. Do you want to manually encrypt and decrypt files, or on the fly?– psusiFeb 23, 2011 at 19:15
-
4Instead of 'most popular' , fitting a solution to your requirements might be helpful (as per psusi's question). Are you looking for a combination of easy, reliable, native, secure, fast, open source? All or some of these?– belacquaFeb 23, 2011 at 19:23
-
7I'd like to add the remark that contrary to what some answers claim, TrueCrypt is not considered Free Software or Open Source by Debian/Ubuntu/Fedora/Red Hat/Arch Linux/OpenSuse/Gentoo/etc.– JanCFeb 23, 2011 at 22:02
7 Answers
GnuPG (GPG) can use asymmetric and symmetric encryption. Asymmetric crypto involves a two keys, a public key for encryption and a private key for decryption. See djeikyb answer on this page for asymmetric key usage.
For symmetric encryption, the encryption and decryption keys are equal. It is important to realize that most people are very bad at choosing strong passwords. Thus, an encryption scheme using passwords should use a key-derivation function that takes more resources (time, memory) to slow down brute-force attacks.
For a description of GnuPG's KDF, see this Crypto Stack Exchange post. Example usage of symmetric encryption:
gpg --symmetric < unencrypted_file > encrypted_file
Decryption:
gpg --decrypt < encrypted_file > decrypted_file
Note that gpg
caches the symkey by default (documented behavior). In order to avoid that, use --no-symkey-cache
option as described in a related answer.
old answer for users who are able to chose good keys, see note below
For single files, openssl
is very useful, especially when sending the file over an unsecured channel (e.g. e-mail). It's free (in money and in freedom), unlike Truecrypt, which is only free in money.
NOTE: the password that you enter here will be processed by one MD5 iteration 1. If you chose a password "123456", then you will have very little security.
Encrypt:
openssl aes-256-cbc -salt -in unencrypted_file -out encrypted_file
You'll be asked for a password, which you have to input twice.
Decrypt:
openssl aes-256-cbc -d -in encrypted_file -out unencrypted_file
Manual page for the enc program.
1 openssl enc
uses the digest function defined by the -md
option (default md5) and invokes function EVP_BytesToKey()
with an iteration count of 1. This can be found in the openssl source at apps/enc.c
.
-
-
@Assaf Lavie: OpenSSL does not support keyfiles if you meant that, although it can read a password from the first line of a file. Read the manual page on openssl, section Pass phrase arguments. Mar 2, 2011 at 14:32
-
additionally you can use the "-a" flag which allows you to copy the crypted text, like so: "openssl aes-256-cbc -a -salt -in unencrypted_file -out encrypted_file "– v2rFeb 24, 2012 at 17:06
-
@v2r To add for further readers:
-a
base64-encodes the input (alias of-base64
), to decrypt it you also need to add the-a
option. Feb 24, 2012 at 17:14 -
1
I use Seahorse for this. It's a Gnome front-end for GnuPG and integrates well with nautilus:
To get nautilus integration, install the package seahorse-nautilus
from the Software Center: seahorse-nautilus
-
3
-
3
-
1
- EncFS system tray applet for GNOME cryptkeeper
TrueCrypt: discontinued, unsecure source-available freeware Disk Encryption Software.
-
2+1, encfs - with or without a GUI - is very useful and enough for most purposes.– loevborgFeb 23, 2011 at 18:58
-
3Cryptkeeper is awesome - simple, powerful and a breeze to set up with Dropbox (askubuntu.com/questions/19613/…).– ScaineFeb 23, 2011 at 20:27
-
TrueCrypt is not packaged in Ubuntu (or any other major distributions) for licensing concerns.– MagicFabOct 1, 2013 at 23:08
-
2
-
4
A cli method would be GnuPG, and maybe tar. This is a short guide for reference, you really should read the documentation.
First run gpg --gen-key
. Follow the prompts to generate your public/private key pair. Now you can encrypt files: gpg -e foo.txt
. This will create a file called foo.txt.gpg
. GnuPG does not delete the original unencrypted file, it's up to you whether you want it hanging around. To decrypt foo.txt.gpg, run gpg foo.txt.gpg
. Decrypting will prompt you before overwriting existing files.
If you need to encrypt a directory, tar it first:
tar -cf foo.tar foo/
gpg -e foo.tar
You can rename the encrypted file whatever you want. When decrypted, the original file name is preserved.
-
2The advantages of this method are: First it does not require installation of additional packages; Second it does not require root access. I would add compression to the tar command (xz or gz).– PantherDec 20, 2013 at 2:20
-
Fwiw, a modern tool would be age. cf tptacek's "the problem with pgp". Haven't got time now for a proper amendment.– djeikybDec 19, 2023 at 8:22
There's also eCryptfs, which Ubuntu uses to encrypt Home Directories.
You can select home directory encryption at installation, or you can setup a single directory, $HOME/Private
by default, using the ecryptfs-setup-private utility. This folder can be configured to automatically mount at login and unmount at logout. Every single file and folder within $HOME/Private
, recursively, will be encrypted.
You may also use "Academic Signature" to use elliptic curve cryptography with a wxWidgets GUI. It is open source but not in the repositories. It mainly does ECC asymmetric encryption, signatures and timestamps. But the tool also has a Menu entry for invoking Gnupg(RSA) and direct access to symmetric en-/decryption of files offering AES and other algorithms. Its homepage is here: https://www.academic-signature.org
I use it a lot for protecting files in transit and for digitally signing academic documents(transcripts, letters of recommendation, grade lists etc.)
I've taken some of the other suggestions and created a simple shell script wrapper (for the lazy)
https://github.com/orionM/ssl-crypt-tools
enjoy
-
1hmm, bash script using
openssl aes-256-cbc ...
You know instead of usingif [ $? -ne 0 ] ; then... fi
you can just use||
? And there are some people who think OpenSSL "* has had several major security flaws in the last year [Heartbleed] while the Snowden documents show that GPG is one of the few programs that might stump the NSA when used properly. The OpenSSL code is also a complete cesspool and has terrible test coverage. (Disclosure: [he] work[s] on a "OpenSSL sucks; let's fix it" project.) – jbarlow*"– Xen2050Mar 16, 2016 at 11:18