L  i  n  u  x    P  a  r  k
при поддержке ВебКлуба
Назад Оглавление Вперед

Глава 13 Программы обеспечения безопасности (Управление и ограничения) - GnuPG

В этой главе
Linux GnuPG
Команды
Установка поддержки квот на вашей Linux системе.
Создание ядра с поддержкой квот
Модификация файла ⌠/etc/fstab■
Создание файлов "quota.user" и "quota.group"
Назначение квот для Пользователей и групп
Команды

Linux GnuPG

Краткий обзор.

Шифрование данных это бесценная возможность, которая сильно увеличивает конфиденциальность вашей работы. Утилиты подобные GnuPG делаю намного больше, чем просто шифруют почтовые сообщения. Они могут быть использованы для всех видов шифрования данных и их использование может быть ограничено только вашей фантазией. RPM пакет GnuPG уже может быть инсталлирован на вашем компьютере, но эта версия не является последней и поэтому мы рекомендуем инсталлировать последний релиз соответствующий вашему серверу и архитектуре CPU.

Согласно официальному README файлу GnuPG:

GnuPG √ это GNU утилита для безопасной передачи информации и хранения данных. Она может быть использована для шифрования данных и создания цифровых сигнатур. GnuPG включает продвинутый менеджер ключей и совместима с OpenPGP Internet стандартом, описанном в RFC2440. Так как GnuPG не использует каких-либо патентованных алгоритмов, она не может быть совместима с PGP2. PGP 2.x использует только IDEA (запатентован) и RSA (который запатентован в США до 20 сентября 2000).

Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам ⌠/var/tmp■ (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем ⌠root■.
GnuPG версии 1.0.1

Пакеты.
Домашняя страница GnuPG: http://www.gnupg.org/
Вы должны скачать: gnupg-1.0.1.tar.gz

Тарболы.
Хорошей идеей будет создать список файлов установленных в вашей системе до инсталляции GnuPG и после, в результате, с помощью утилиты diff вы сможете узнать какие файлы были установлены. Например,

До инсталляции:
find /* > GnuPG1

После инсталляции:
find /* > GnuPG2

Для получения списка установленных файлов:
diff GnuPG1 GnuPG2 > GnuPG

Раскройте тарбол:

[root@deep /]# cp gnupg-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf gnupg-version.tar.gz

Компиляция и оптимизация.

Переместитесь в новый каталог GnuPG и выполните следующие команды:

CC="egcs" \
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions" \
./configure \
--prefix=/usr \
--enable-shared

[root@deep gnupg-1.0.1]# make
[root@deep gnupg-1.0.1]# make check
[root@deep gnupg-1.0.1]# make install
[root@deep gnupg-1.0.1]# strip /usr/bin/gpg

команда make компилирует исходные коды в исполняемые двоичные файлы;
команда make check запускает все тесты, входящие в пакет;
команда make install инсталлирует исполняемые и сопутствующие им файлы в определенный каталог;
strip будет уменьшать размер, увеличивая производительность программы.

Очистка после работы.
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf gnupg-version/ gnupg-version.tar.gz

Команда ⌠rm■, использованная выше, будет удалять все исходные коды, которые мы использовали при компиляции и инсталляции GnuPG. Она также удалит .tar.gz архив.

Команды.

Ниже приведены команды из тех, что мы часто используем в регулярной работе, но из существует много больше. Читайте страницы руководства (man) для получения большей информации.

Создание ключа.

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

Шаг 1.

Для создания новой пары ключей используйте следующую команду:

[root@deep /]# gpg --gen-key
gpg (GnuPG) 1.0.1; Copyright (C) 1999 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
gpg: /root/.gnupg: directory created
gpg: /root/.gnupg/options: new options file created
gpg: you have to start GnuPG again, so it can read the new options file
This asks some questions and then starts key generation.

Шаг 2

Мы вновь запускаем GnuPG следующей командой:

[root@deep /]# gpg --gen-key
gpg (GnuPG) 1.0.1; Copyright (C) 1999 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
gpg: /root/.gnupg/secring.gpg: keyring created
gpg: /root/.gnupg/pubring.gpg: keyring created
Please select what kind of key you want:
   (1) DSA and ElGamal (default)
   (2) DSA (sign only)
   (4) ElGamal (sign and encrypt)
Your selection? 1
DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
     minimum keysize is 768 bits
     default keysize is 1024 bits
  highest suggested keysize is 2048 bits
What keysize do you want? (1024) 2048
Do you really need such a large keysize? y
Requested keysize is 2048 bits
Please specify how long the key should be valid.
     0 = key does not expire
    <n> = key expires in n days
    <n>w = key expires in n weeks
    <n>m = key expires in n months
    <n>y = key expires in n years
Key is valid for? (0) 0
correct (y/n)? Y

You need a User-ID to identify your key; the software constructs the user id
from Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Gerhard Mourani
Email address: gmourani@videotron.ca
Comment: [Press Enter]
You selected this USER-ID:
    "Gerhard Mourani <gmourani@videotron.ca>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

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.
+++++..+++++++++++++++..+++++.++++++++++++++++++++++++++++++++++++++++..+++++++
+++.+++++++++++++++++++++++++.+++++++++++++++...+++++++++++++++++++++++++.++++
+
..+++++>+++++...+++++++++++++++>+++++.......>+++++.......<+++++................
..........+++++^^^^
public and secret key created and signed.

Новая пара ключей (общедоступный и личный) успешно созданы в домашнем каталоге пользователя root (~/root).

Импортирование ключей.

Как только мы создали нашу пару ключей, мы можем начать добавлять в нашу публичную базу ключей все ключи, которые мы получили от третьих лиц, чтобы в будущем использовать их для шифрования и опознания связи.

Для импортирования публичных ключей в базу данных ключей используйте команду:

[root@deep /]# gpg --import <file>

Например:

[root@deep /]# gpg --import redhat2.asc
gpg: key DB42A60E: public key imported
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: Total number processed: 1
gpg: imported: 1

Вышеприведенная команда будет добавлять все новые ключи в базу данных и будет обновлять все уже существующие ключи. Важно заметить, что GnuPG не импортирует не самоподписанные (self-signed) ключи. В вышеприведенном примере мы импортируем файл ⌠redhat.asc■, содержащий публичный ключ компании Red Hat Linux, взятый с Интернет сайта Red Hat.

Подписание ключей.

Когда вы импортировали ключи в свою базу данных публичных ключей и вы точно уверенны, что третье лицо, чей ключ вы положили, действительно тот за кого себя выдает, вы можете подписать его/ее ключ. Подписание ключа удостоверяет, что вы знаете его владельца.

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

[root@deep /]# gpg --sign-key <UID>

Например:

[root@deep /]# gpg --sign-key RedHat

pub 1024D/DB42A60E created: 1999-09-23 expires: never trust: -/q
sub 2048g/961630A2 created: 1999-09-23 expires: never
(1) Red Hat, Inc <security@redhat.com>

pub 1024D/DB42A60E created: 1999-09-23 expires: never trust: -/q
Fingerprint: CA20 8686 2BD6 9DFC 65F6 ECC4 2191 80CD DB42 A60E

Red Hat, Inc <security@redhat.com>

Are you really sure that you want to sign this key
with your key: "Gerhard Mourani <gmourani@videotron.ca>"

Really sign? y

You need a passphrase to unlock the secret key for
user: "Gerhard Mourani <gmourani@videotron.ca>"
1024-bit DSA key, ID E92D6C97, created 1999-12-30

Enter passphrase:

ЗАМЕЧАНИЕ. Вы должны подписывать ключ только когда абсолютно уверенны, что ключ действительно настоящий! Вы никогда не должны подписывать ключ, базирующийся на любых предположении.

Шифрование и дешифрование

После инсталляции, импортирования, подписания и конфигурирования мы можем начать шифровать и расшифровывать нашу работу.

Для шифрования и подписания данных для пользователя RedHat, ключ которого мы добавили выше, используйте следующую команду:

[root@deep /]# gpg -sear RedHat <file>

Например:

[root@deep /]# gpg -sear RedHat message-to-RedHat.txt
You need a passphrase to unlock the secret key for
user: "Gerhard Mourani (Open Network Architecture) <gmourani@videotron.ca>"
1024-bit DSA key, ID BBB4BA9B, created 1999-10-26
Enter passphrase:

Аргументы, которые использовались обозначают следующее, ⌠s■ √ подписание (уменьшение риска что кто-то попытается представиться вами, очень полезно подписывать все, что вы шифруете), ⌠e■ - шифрование, ⌠a■ √ создание ASCII защищенного вывода (⌠.asc■ готовые для отправки по почте), ⌠r■ √ шифрование имени идентификатора пользователя и <file> это сообщение, которое вы хотите зашифровать.

Для расшифровки данных используйте следующую команду:

[root@deep /]# gpg -d <file>

Например:

[root@deep /]# gpg -d message-to-Gerhard.asc
You need a passphrase to unlock the secret key for
user: "Gerhard Mourani (Open Network Architecture) <gmourani@videotron.ca>"
2048-bit ELG-E key, ID 71D4CC44, created 1999-10-26 (main key ID BBB4BA9B)
Enter passphrase:

Где ⌠-d■ означает расшифровку и <file> сообщение, которое вы хотите расшифровать. Важно, чтобы публичный ключ отправителя сообщения, которое мы хотим расшифровать, был в нашей базе ключей или ничего работать не будет.

Экспортирование вашего публичного ключа.

Вы можете расширить ваши горизонты экспортируя и распространяя свой публичный ключ. Это можно сделать публикуя его на вашей домашней странице, через доступные сервера ключей в Интернет или другими способами. GnuPG имеет несколько полезных опций, чтобы помочь вам публиковать ваш публичный ключ.

∙ Для извлечения вашего публичного ключа в ASCII защищенный вывод используйте команду:

[root@deep /]# gpg --export --armor > Public-key.asc

где ⌠--export■ для извлечения вашего публичного ключа из зашифрованного файла, ⌠--armor■ создать ASCII защищенный вывод, который вы можете отправлять, публиковать или выкладывать на веб-странице и ⌠> Public-key.asc■ говорит, что результат надо поместить в файл с именем Public-key.asc.

Проверка signature

Когда вы извлекли публичный ключ и экспортировали его, каждый кто знает или получит его может захотеть убедиться, что полученные от вас данные действительно от вас.

∙ Для проверки сигнатуры шифрованных данных используйте команду:

[root@deep /]# gpg --verify <Data>

Опция ⌠--verify■ будет проверять сигнатуру, а <Data> - зашифрованные данные/файл, который вы хотите проверить.

Некоторые области применения GnuPG

GnuPG может быть использован:

  1. Отправки зашифрованных почтовых сообщений.
  2. Шифрование резервных копий файлов перед отправкой через сеть.
  3. Шифрование личных чувствительных фалов (например, файл содержащий все ваши пароли).

Инсталлированные файлы

> /usr/bin/gpg
> /usr/lib/gnupg
> /usr/lib/gnupg/rndunix
> /usr/lib/gnupg/rndegd
> /usr/lib/gnupg/tiger
> /usr/man/man1/gpg.1
> /usr/share/gnupg
> /usr/share/gnupg/options.skel

Назад Оглавление Вперед