суббота, 16 февраля 2019 г.

Шифрование файлов backup с использованием gpg и открытого публичного ключа

Использование PGP/GPG, руководство для нетерпеливых
gpg - шифрование для всех платформ (pgp gnupg crypt)

$ sudo apt-get install rng-tools
$ gpg --gen-key
gpg (GnuPG) 1.4.20; Copyright (C) 2015 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.

gpg: создана таблица ключей `/home/user/.gnupg/secring.gpg'
Выберите тип ключа:
   (1) RSA и RSA (по умолчанию)
   (2) DSA и Elgamal
   (3) DSA (только для подписи)
   (4) RSA (только для подписи)
Ваш выбор?
длина ключей RSA может быть от 1024 до 4096 бит.
Какой размер ключа Вам необходим? (2048) 4096
Запрошенный размер ключа - 4096 бит
Выберите срок действия ключа.
         0 = без ограничения срока действия
      <n>  = срок действия - n дней
      <n>w = срок действия - n недель
      <n>m = срок действия - n месяцев
      <n>y = срок действия - n лет
Срок действия ключа? (0)
Срок действия ключа не ограничен
Все верно? (y/N) y

Для идентификации Вашего ключа необходим ID пользователя. Программа создаст его
из Вашего имени, комментария и адреса электронной почты в виде:
    "Baba Yaga (pensioner) <yaga@deepforest.ru>"

Ваше настоящее имя: Baba Yaga
Адрес электронной почты: yaga@deepforest.ru
Комментарий: pensioner
Вы выбрали следующий ID пользователя:
    "Baba Yaga (pensioner) <yaga@deepforest.ru>"

Сменить (N)Имя, (C)Комментарий, (E)адрес или (O)Принять/(Q)Выход? O
Для защиты закрытого ключа необходима фраза-пароль.

gpg: gpg-agent в данном сеансе недоступен
Необходимо сгенерировать много случайных чисел. Желательно, чтобы Вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел больше возможностей получить достаточное количество энтропии.
+++++
.......+++++
Необходимо сгенерировать много случайных чисел. Желательно, чтобы Вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел больше возможностей получить достаточное количество энтропии.
...............+++++
.............+++++
gpg: ключ 143CDE64 помечен как абсолютно доверенный.
открытый и закрытый ключи созданы и подписаны.

gpg: проверка таблицы доверия
gpg: требуется 3 с ограниченным доверием, 1 с полным, модель доверия PGP
gpg: глубина: 0  верных:   1  подписанных:   0  доверие: 0-, 0q, 0n, 0m, 0f, 1u
pub   4096R/143CDE64 2019-02-16
      Отпечаток ключа = C49F 6608 EAA5 3892 4AF4  D507 751E 6073 143C DE64
uid                  Baba Yaga (pensioner) <yaga@deepforest.ru>
sub   4096R/2DDA812D 2019-02-16

$ gpg --list-keys
/home/user/.gnupg/pubring.gpg
-----------------------------
pub   4096R/143CDE64 2019-02-16
uid                  Baba Yaga (pensioner) <yaga@deepforest.ru>
sub   4096R/2DDA812D 2019-02-16

Сделаем холодный backup кластера main:

$ sudo systemctl stop postgresql
$ sudo su - postgres
$ cd /var/lib/postgresql/10/main
$ tar cvzf /var/lib/postgresql/base-$(date +%Y-%m-%d_%H-%M-%S).tar.gz .
$ exit
$ sudo ls /var/lib/postgresql
10  base-2019-02-16_20-04-34.tar.gz
$ sudo systemctl start postgresql
$ cp  /var/lib/postgresql/base-2019-02-16_20-04-34.tar.gz ~/base-2019-02-16_20-04-34.tar.gz
$ cd ~

Зашифровать:
$ gpg -e -r yaga@deepforest.ru ~/base-2019-02-16_20-04-34.tar.gz
$ ls
base-2019-02-16_20-04-34.tar.gz      base-2019-02-16_20-04-34.tar.gz.gpg
$ rm  base-2019-02-16_20-04-34.tar.gz
$ ls
base-2019-02-16_20-04-34.tar.gz.gpg

Расшифровать: 
$ gpg -d -o base-2019-02-16_20-04-34.tar.gz base-2019-02-16_20-04-34.tar.gz.gpg

Необходима фраза-пароль для доступа к закрытому ключу пользователя: "Baba Yaga (pensioner) <yaga@deepforest.ru>"
4096-битный ключ RSA, ID 2DDA812D, создан 2019-02-16 (ID главного ключа 143CDE64)

gpg: gpg-agent в данном сеансе недоступен
gpg: зашифровано 4096-битным ключом RSA с ID 2DDA812D, созданным 2019-02-16
      "Baba Yaga (pensioner) <yaga@deepforest.ru>"

$ ls
base-2019-02-16_20-04-34.tar.gz  base-2019-02-16_20-04-34.tar.gz.gpg

Экспорт открытого ключа:
$ gpg --armor --output pubkey.txt --export 143CDE64

Экспорт закрытого ключа:
$ gpg --armor --output privkey.txt --export-secret-keys 143CDE64

На другом компьютере:
$ gpg --list-keys
gpg: создан каталог `/home/user/.gnupg'
gpg: создан новый файл настроек `/home/user/.gnupg/gpg.conf'
gpg: ВНИМАНИЕ: параметры в `/home/user/.gnupg/gpg.conf' при этом запуске еще не действуют
gpg: создана таблица ключей `/home/user/.gnupg/pubring.gpg'
gpg: /home/user/.gnupg/trustdb.gpg: создана таблица доверия


$ ls
base-2019-02-16_20-04-34.tar.gz.gpg  privkey.txt  pubkey.txt

Импорт открытого ключа:
$ gpg --import pubkey.txt
gpg: создана таблица ключей `/home/user/.gnupg/secring.gpg'
gpg: ключ 143CDE64: импортирован открытый ключ "Baba Yaga (pensioner) <yaga@deepforest.ru>"
gpg: Всего обработано: 1
gpg:               импортировано: 1  (RSA: 1)
 
Импорт закрытого ключа:
$ gpg --allow-secret-key-import --import privkey.txt
gpg: ключ 143CDE64: импортирован закрытый ключ
gpg: ключ 143CDE64: "Baba Yaga (pensioner) <yaga@deepforest.ru>" не изменен
gpg: Всего обработано: 1
gpg:              неизмененных: 1
gpg:       считано закрытых ключей: 1
gpg:   импортировано закрытых ключей: 1




Расшифровать (на другом компьютере):  
$ gpg -d -o base-2019-02-16_20-04-34.tar.gz base-2019-02-16_20-04-34.tar.gz.gpg

Необходима фраза-пароль для доступа к закрытому ключу пользователя: "Baba Yaga (pensioner) <yaga@deepforest.ru>"
4096-битный ключ RSA, ID 2DDA812D, создан 2019-02-16 (ID главного ключа 143CDE64)

gpg: зашифровано 4096-битным ключом RSA с ID 2DDA812D, созданным 2019-02-16
      "Baba Yaga (pensioner) <yaga@deepforest.ru>"

 $ ls
base-2019-02-16_20-04-34.tar.gz  base-2019-02-16_20-04-34.tar.gz.gpg  privkey.txt  pubkey.txt

Экспорт открытого ключа на keyserver:
$ gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --send-keys 143CDE64
gpg: отправляю ключ 143CDE64 на сервер hkp p80.pool.sks-keyservers.net


Импорт открытого ключа на keyserver:
(еще вариант)
$ gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --search-keys yaga@deepforest.ru
gpg: создан каталог `/home/user/.gnupg'
gpg: создан новый файл настроек `/home/user/.gnupg/gpg.conf'
gpg: ВНИМАНИЕ: параметры в `/home/user/.gnupg/gpg.conf' при этом запуске еще не действуют
gpg: создана таблица ключей `/home/user/.gnupg/secring.gpg'
gpg: создана таблица ключей `/home/user/.gnupg/pubring.gpg'
gpg: поиск "yaga@deepforest.ru" на сервере hkp p80.pool.sks-keyservers.net
(1)     Alexey <yaga@deepforest.ru>
          4096 bit RSA key 9A9358F0, создан: 2009-09-27, годен до: 2019-09-25
Keys 1-1 of 1 for "yaga@deepforest.ru".  Введите числа, N) Следующий или Q) Выход> N
Введите числа, N) Следующий или Q) Выход> Q

Ценность данного метода в том что на компьютере шифрующем backup
достаточно только публичного ключа:

$ cp  /var/lib/postgresql/base-2019-02-16_20-04-34.tar.gz ~/base-2019-02-16_20-04-34.tar.gz


user@u1604:~$ gpg --import pubkey.txt
gpg: создан каталог `/home/user/.gnupg'
gpg: создан новый файл настроек `/home/user/.gnupg/gpg.conf'
gpg: ВНИМАНИЕ: параметры в `/home/user/.gnupg/gpg.conf' при этом запуске еще не действуют
gpg: создана таблица ключей `/home/user/.gnupg/secring.gpg'
gpg: создана таблица ключей `/home/user/.gnupg/pubring.gpg'
gpg: /home/user/.gnupg/trustdb.gpg: создана таблица доверия
gpg: ключ 143CDE64: импортирован открытый ключ "Baba Yaga (pensioner) <yaga@deepforest.ru>"
gpg: Всего обработано: 1
gpg:               импортировано: 1  (RSA: 1)



$ gpg --edit-key 143CDE64
gpg (GnuPG) 1.4.20; Copyright (C) 2015 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.


pub  4096R/143CDE64  создан: 2019-02-16  годен до: никогда       применимость: SC
                     доверие: неизвестной действительность: неизвестной
sub  4096R/2DDA812D  создан: 2019-02-16  годен до: никогда       применимость: E
[неизвестно] (1). Baba Yaga (pensioner) <yaga@deepforest.ru>

gpg> trust Enter;
pub  4096R/143CDE64  создан: 2019-02-16  годен до: никогда       применимость: SC
                     доверие: неизвестной действительность: неизвестной
sub  4096R/2DDA812D  создан: 2019-02-16  годен до: никогда       применимость: E
[неизвестно] (1). Baba Yaga (pensioner) <yaga@deepforest.ru>

Укажите, насколько Вы доверяете данному пользователю в вопросах проверки
достоверности ключей других пользователей (проверяет паспорт,
сверяет отпечатки ключей из разных источников и т.п.)

  1 = Не знаю или не буду отвечать
  2 = НЕ доверяю
  3 = Доверяю ограниченно
  4 = Полностью доверяю
  5 = Абсолютно доверяю
  m = вернуться в главное меню

Ваше решение? 5
Вы действительно хотите сделать этот ключ абсолютно доверенным? (y/N) y

pub  4096R/143CDE64  создан: 2019-02-16  годен до: никогда       применимость: SC
                     доверие: абсолютное действительность: неизвестной
sub  4096R/2DDA812D  создан: 2019-02-16  годен до: никогда       применимость: E
[неизвестно] (1). Baba Yaga (pensioner) <yaga@deepforest.ru>
Учтите, что показанная действительность ключа может быть неверной,
пока Вы не перезапустите программу.

gpg> q



$ gpg -e -r yaga@deepforest.ru ~/base-2019-02-16_20-04-34.tar.gz


Если не указать что ключ абсолютно доверенный, будет запрашиваться разрешние использовать данный ключ:

user@u1604:~$ cp  /var/lib/postgresql/base-2019-02-16_20-04-34.tar.gz ~/base-2019-02-16_20-04-34.tar.gz
user@u1604:~$  gpg -e -r yaga@deepforest.ru ~/base-2019-02-16_20-04-34.tar.gz
gpg: 2DDA812D: Нет свидетельств того, что данный ключ принадлежит названному пользователю

pub  4096R/2DDA812D 2019-02-16 Baba Yaga (pensioner) <yaga@deepforest.ru>
 Отпечаток главного ключа: C49F 6608 EAA5 3892 4AF4  D507 751E 6073 143C DE64
      Отпечаток подключа: 4E87 7991 A302 251D E8CA  46C4 0CA5 E218 2DDA 812D

НЕТ уверенности в том, что ключ принадлежит человеку, указанному
в ID пользователя ключа. Если Вы ТОЧНО знаете, что делаете,
можете ответить на следующий вопрос утвердительно.

Все равно использовать данный ключ? (y/N) y

========================================================
Можно указать  --cipher-algo AES256
$ gpg -e -r yaga@deepforest.ru --cipher-algo AES256 ~/base-2019-02-16_20-04-34.tar.gz

Под windows
https://gpg4win.org/get-gpg4win.html

D:\gpg>gpg --full-generate-key
gpg (GnuPG) 2.2.11; Copyright (C) 2018 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.

Выберите тип ключа:
   (1) RSA и RSA (по умолчанию)
   (2) DSA и Elgamal
   (3) DSA (только для подписи)
   (4) RSA (только для подписи)
Ваш выбор? 1
длина ключей RSA может быть от 1024 до 4096.
Какой размер ключа Вам необходим? (2048) 4096
Запрошенный размер ключа - 4096 бит
Выберите срок действия ключа.
         0 = не ограничен
      <n>  = срок действия ключа - n дней
      <n>w = срок действия ключа - n недель
      <n>m = срок действия ключа - n месяцев
      <n>y = срок действия ключа - n лет
Срок действия ключа? (0) 0
Срок действия ключа не ограничен
Все верно? (y/N) y

GnuPG должен составить идентификатор пользователя для идентификации ключа.

Ваше полное имя: backup
Адрес электронной почты: mail@backup.com
Примечание:
Вы выбрали следующий идентификатор пользователя:
    "backup <mail@backup.com>"

Сменить (N)Имя, (C)Примечание, (E)Адрес; (O)Принять/(Q)Выход? O

Срок действия ключа не ограничен
Все верно? (y/N) y

GnuPG должен составить идентификатор пользователя для идентификации ключа.

Ваше полное имя: backup
Адрес электронной почты: mail@backup.com
Примечание:
Вы выбрали следующий идентификатор пользователя:
    "backup <mail@backup.com>"

Сменить (N)Имя, (C)Примечание, (E)Адрес; (O)Принять/(Q)Выход? O
Необходимо получить много случайных чисел. Желательно, чтобы Вы
в процессе генерации выполняли какие-то другие действия (печать
на клавиатуре, движения мыши, обращения к дискам); это даст генератору
случайных чисел больше возможностей получить достаточное количество энтропии.
Необходимо получить много случайных чисел. Желательно, чтобы Вы
в процессе генерации выполняли какие-то другие действия (печать
на клавиатуре, движения мыши, обращения к дискам); это даст генератору
случайных чисел больше возможностей получить достаточное количество энтропии.





gpg: ключ 521D03509BD0BCD3 помечен как абсолютно доверенный
gpg: создан каталог 'C:/Users/user/AppData/Roaming/gnupg/openpgp-revocs.d'
gpg: сертификат отзыва записан в 'C:/Users/user/AppData/Roaming/gnupg/openpgp-revocs.d\D0E6CABDFADC212A08C1EF95521D03509BD0BCD3.rev'.
открытый и секретный ключи созданы и подписаны.

pub   rsa4096 2019-02-17 [SC]
      D0E6CABDFADC212A08C1EF95521D03509BD0BCD3
uid                      backup <mail@backup.com>
sub   rsa4096 2019-02-17 [E]

D:\gpg>gpg --list-keys
gpg: проверка таблицы доверия
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: глубина: 0  достоверных:   1  подписанных:   0  доверие: 0-, 0q, 0n, 0m, 0f, 1u
C:/Users/user/AppData/Roaming/gnupg/pubring.kbx
-----------------------------------------------
pub   rsa4096 2019-02-17 [SC]
      D0E6CABDFADC212A08C1EF95521D03509BD0BCD3
uid         [  абсолютно ] backup <mail@backup.com>
sub   rsa4096 2019-02-17 [E]


Экспорт открытого ключа:
D:\gpg>gpg --armor --output pubkey.txt --export D0E6CABDFADC212A08C1EF95521D03509BD0BCD3

Экспорт закрытого ключа:
D:\gpg>gpg --armor --output privkey.txt --export-secret-keys D0E6CABDFADC212A08C1EF95521D03509BD0BCD3



Зашифровать:
 D:\gpg>gpg -e -r mail@backup.com --cipher-algo AES256 u16045.ova

Расшифровать:
D:\gpg>gpg -d -o u16045.ova u16045.ova.gpg

Удаление ключей:

D:\gpg>dir "C:/Users/user/AppData/Roaming/gnupg/"
 Том в устройстве C не имеет метки.
 Серийный номер тома: 3831-2ECE

 Содержимое папки C:\Users\user\AppData\Roaming\gnupg

17.02.2019  11:43    <DIR>          .
17.02.2019  11:43    <DIR>          ..
17.02.2019  11:15                 0 gnupg_spawn_agent_sentinel.lock
17.02.2019  11:18    <DIR>          openpgp-revocs.d
17.02.2019  11:15    <DIR>          private-keys-v1.d
17.02.2019  11:18             1 454 pubring.kbx
17.02.2019  11:11                 0 pubring.kbx.lock
17.02.2019  11:11                32 pubring.kb_
17.02.2019  11:43               600 random_seed
17.02.2019  11:15                22 S.gpg-agent
17.02.2019  11:15                22 S.gpg-agent.browser
17.02.2019  11:15                22 S.gpg-agent.extra
17.02.2019  11:15                22 S.gpg-agent.ssh
17.02.2019  11:31             1 280 trustdb.gpg
17.02.2019  11:18                 0 trustdb.gpg.lock
              11 файлов          3 454 байт
               4 папок  24 381 022 208 байт свободно


D:\gpg>rd /s/q "C:/Users/user/AppData/Roaming/gnupg/"

D:\gpg>gpg --list-keys
gpg: создан щит с ключами 'C:/Users/user/AppData/Roaming/gnupg/pubring.kbx'
gpg: C:/Users/user/AppData/Roaming/gnupg/trustdb.gpg: создана таблица доверия


D:\gpg>gpg --import pubkey.txt
gpg: ключ 521D03509BD0BCD3: импортирован открытый ключ "backup <mail@backup.com>"
gpg: Всего обработано: 1
gpg:                  импортировано: 1

D:\gpg>gpg --edit-key mail@backup.com
gpg (GnuPG) 2.2.11; Copyright (C) 2018 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.


pub  rsa4096/521D03509BD0BCD3
          создан: 2019-02-17     годен до: никогда     назначение: SC
     доверие: неизвестно    достоверность: неизвестно
sub  rsa4096/3EDC3F004452E03E
          создан: 2019-02-17     годен до: никогда     назначение: E
[ неизвестно ] (1). backup <mail@backup.com>

gpg> trust Enter:
pub  rsa4096/521D03509BD0BCD3
          создан: 2019-02-17     годен до: никогда     назначение: SC
     доверие: неизвестно    достоверность: неизвестно
sub  rsa4096/3EDC3F004452E03E
          создан: 2019-02-17     годен до: никогда     назначение: E
[ неизвестно ] (1). backup <mail@backup.com>

Укажите, насколько Вы доверяете данному пользователю в вопросах проверки
достоверности ключей других пользователей (проверяет паспорт,
сверяет отпечатки ключей из разных источников и т.п.)

 1 = Не знаю или не буду отвечать
 2 = НЕ доверяю
 3 = Доверяю ограниченно
 4 = Полностью доверяю
 5 = Абсолютно доверяю
 m = вернуться в главное меню

Ваше решение? 5
Вы действительно хотите сделать этот ключ абсолютно доверенным? (y/N) y

pub  rsa4096/521D03509BD0BCD3
          создан: 2019-02-17     годен до: никогда     назначение: SC
     доверие: абсолютное    достоверность: неизвестно
sub  rsa4096/3EDC3F004452E03E
          создан: 2019-02-17     годен до: никогда     назначение: E
[ неизвестно ] (1). backup <mail@backup.com>
Учтите, что показанная достоверность ключа может быть неверной,
пока Вы не перезапустите программу.

gpg> q


Комментариев нет:

Отправить комментарий