Я ищу утилиту для шифрования определенных каталогов в Linux. Я не ищу каких-либо услуг полного шифрования диска, а просто хочу зашифровать несколько каталогов для хранения файлов в облаке. Получив их, мне нужно будет их расшифровать, прежде чем они станут доступны. Собираемся сделать это для пары каталогов (размером несколько сотен ГБ). Любые идеи? Желательно на основе CLI.
Для этой задачи я использую только GnuPG. Папки сначала упаковываются в архив TAR-GZ:
tar czf files.tar.gz /path/to/my/files
Если это еще не сделано, вам нужно сначала создать пару закрытых / открытых ключей GPG:
gpg --gen-key
Следуй инструкциям. Значений по умолчанию должно хватить для первого теста. Появится что-то вроде этого:
gpg (GnuPG) 2.0.18; Copyright (C) 2011 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct? (y/N) y GnuPG needs to construct a user ID to identify your key. Real name: File Encryption Key Email address: admin@company.org Comment: File Encryption Key You selected this USER-ID: "File Encryption Key (File Encryption Key) " Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
Вам будет предложено ввести кодовую фразу для ключа. Настоятельно рекомендуется использовать более сильный. В любом случае он не нужен для шифрования файлов, поэтому не беспокойтесь о пакетном использовании позже.
Если все будет сделано, на вашем экране появится что-то вроде этого:
We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. gpg: key FE53C811 marked as ultimately trusted public and secret key created and signed. gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u pub *****/******** 2013-03-19 Key fingerprint = **** **** **** **** **** **** **** **** **** **** uid File Encryption Key (File Encryption Key) sub *****/******** 2013-03-19
Теперь ваша очередь может захотеть экспортировать файл открытых ключей для импорта на другие машины:
gpg --armor --output file-enc-pubkey.txt --export 'File Encryption Key'
В File Encryption Key
это имя, которое я ввел во время процедуры генерации ключа.
Теперь я использую GnuPG для только что созданного архива:
gpg --encrypt --recipient 'File Encryption Key' files.tar.gz
Теперь у вас есть files.tar.gz.gpg
файл, который зашифрован.
Вы можете расшифровать его с помощью следующей команды (вам будет предложено ввести кодовую фразу):
gpg --output files.tar.gz --decrypt files.tar.gz.gpg
В этом вся магия.
Убедитесь, что вы сделали резервную копию своего ключа! И никогда не забывайте свой пароль! Если не создать резервную копию или не забыть, у вас будут гигабайты мусора!
Сделайте резервную копию вашего закрытого ключа с помощью этой команды:
gpg --armor --output file-enc-privkey.asc --export-secret-keys 'File Encryption Key'
Преимущества
Со своей стороны я в основном использую два метода:
tar cvf backup.tar /path/to/folder
Вы можете убрать переключатель [v] из команды tar, чтобы выключить подробный режим.
openssl aes-128-cbc -salt -in backup.tar -out backup.tar.aes -k yourpassword
Вы можете изменить aes-128-cbc на любой другой метод шифрования, поддерживаемый openssl (openssl --help).
openssl aes-128-cbc -d -salt -in backup.tar.aes -out backup.restored.tar
Он запросит пароль.
zip -r -0 -e backup.zip /path/to/folder
Он запросит пароль.
Одно из преимуществ этого: он будет лучше работать с системой на базе Windows.
Если вы не хотите шифровать файлы с помощью пары открытого / закрытого ключей и вместо этого использовать только симметричное шифрование с парольной фразой, используйте следующую команду:
gpg --symmetric --cipher-algo aes256 files.tar.gz
Вам будет предложено ввести пароль. После этого зашифрованный файл с именем files.tar.gz.gpg
создано.
Для расшифровки используйте команду
gpg --decrypt files.tar.gz.gpg > files.tar.gz
Вы можете использовать truecrypt очень простое и красивое решение. У него есть пакет только для консольного использования. Его очень просто изучить и использовать. http://www.truecrypt.org
Для этой цели я бы предложил шифрование FUSE (например, Encfs) - для меньших данных я бы использовал gpg.
Это fs, реализованное в пространстве пользователя, поэтому вам не нужны какие-либо особые привилегии.
Есть несколько файловых систем Linux, предназначенных для шифрования данных. Вы уже думали о ЛЮКС например.?
Очень простой способ зашифровать один файл:
gpg -c filename.ext
Вам дважды будет предложено ввести кодовую фразу, и gpg создаст filename.ext.gpg
. Загрузите зашифрованный файл в облачный сервис. Для восстановления файла используйте:
gpg filename.ext.gpg
Которая воссоздаст filename.ext
. Обратите внимание, что незашифрованный файлы не являются безопасными, и соответствующие данные останутся на вашем носителе даже после удаления. Только контейнер gpg безопасен. EncFS - более практичная альтернатива облачному шифрованию на уровне файлов.