Для защиты информации существует множество различных СЗИ (средства защиты информации), одной из подсистем защиты являются криптографические средства. Сетевые технологии VPN, загрузчики операционных систем с функцией шифрования, электронно цифровая подпись, программы шифрования локальных файлов на устройстве. Всех их объединяет использование различных криптосистем основанных на математических алгоритмах.
Криптосистема – модель, содержащая набор криптографических алгоритмов, имеющая возможность проводить двустороннее преобразование с целью сохранения конфиденциальности, целостности и доступности данных.
Рассмотрим один из стандартов криптосистемы OpenPGP!
Для чего нужен PGP?
PGP или же Pretty Good Privacy представляет собой реализацию криптосистемы OpenPGP в виде программы, которая содержит набор криптографических алгоритмов. Распространяется по коммерческой лицензии и доступна для покупки, в качестве свободной альтернативы используется GPG или же GNU Privacy Guard! В его основе лежит та же криптосистема, для установки пакетов пропишем команды:
Рассмотрим работу утилиты на примере облачного сервера от Serverspace, для этого перейдем к созданию сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать.
Потребуется некоторое время для развертывания серверных мощностей. После чего вы можете подключиться любым из удобных способов. Вернемся к нашему терминалу с уже установленной утилитой, для того чтобы ознакомиться с синтаксисом напишем команду:
Как видим вывод опций довольно обширный. Поэтому заострим внимание на основных опциях и функциях команды, которые могут понадобиться в ходе выполнения базовых действий.
Создание ключей gpg
Для безопасного и эффективного управления ключами используется механизм keyring или дословно связка ключей. Представляет собой базу данных, в которой хранятся открытые, закрытые, доверенные ключи. Данный механизм централизации позволяет контролировать доступ к ключам на основе пароля, который задает пользователь. Поэтому вся конфиденциальность процессов зависит от сложности пароля, который задает пользователь. Желательно выбирать
В GPG (GNU Privacy Guard) каждый ключ может иметь несколько компонентов, определяющих его функции. Эти компоненты представлены в скобках в выводе команды gpg –list-keys или gpg –list-secret-keys.
Но с начала мы не увидим не одного ключа, так как база пуста, создадим ключи! Существует два способа шифрования информации: с использованием симметричного и асимметричного алгоритмов, которые создают разные пары ключей! Для создания ключей по ассиметричному алгоритму необходимо прописать команду:
Данная комбинация опций –full-generate-key –expert позволит открыть полный список настроек, при создании ключа. На скриншоте изображены алгоритмы шифрования и электронной подписи, выберите подходящий под ваши задачи.
Обратите внимание! Опции 3,4 и 10 предназначены только для электронной цифровой подписи! Обратите внимание, что вы выбираете пару алгоритмов, где первый алгоритм для шифрования, а второй для подписи.
Выберем по умолчанию набор из RSA-ключей и продолжим их конфигурацию:
Теперь выберем длину ключа, от размера которого зависит криптостойкость или же показатель, того что длина ключа не позволит с использованием текущих технологий быстро перебрать его значение и расшифровать данные. Соответственно, чем длиннее ключ, тем вероятность раскрытия конфиденциальности данных ниже! Минимальным порогом считается 2048 символов, что мы и укажем, однако можно и больше до 3072. Затем необходимо выбрать срок действия ключа, отсчет пойдет от даты его создания, для теста укажем бессрочное действие, прописав 0.
Для того, чтобы идентифицировать ключ, необходимо указать перечисленные параметры для пользователя. Если вы создаете ключ для пользователя, чтобы он мог читать шифрованные для него сообщения, то укажите его данные. Затем необходимо подтвердить или внести изменения в конфигурацию, создаваемого ключа. Выберем O, для того чтобы продолжить.
В момент создания ключа вы можете водить мышкой, вводить случайные значения, для того чтобы генератор псевдослучайной последовательности сгенерировал ключ с большей энтропией или хаотичностью. В строчках revocation certificate stored as указывается сертификат отзыва, который может отозвать ваш публичный ключ, однако в системе пользователей он все равно останется, но не будет использован.
Для создания своего сертификата для отзыва используйте команду:
В <key-id> укажите ваш id ключа, затем будет создан сертификат revcert.asc, который пометит ваш старый ключ, как отозванный. Вернемся к скриншоту с генерацией ключа, где указано, что public и secret key были созданы, в нашем случае ключа получилось 4. Два для шифрования и два для электронной цифровой подписи. Разберем строку ниже:
- pub – означает публичный ключ и используется для подписи;
- sub – означает под публичный ключ и используется для шифрования;
- sec – означает секретный ключ и используется для подписи;
- ssb -означает под секретный ключ и используется для шифрования;
А так же рядом с ними можем увидеть алгоритм шифрования rsa2048, хеш-ключа A8…..EDB9, дата создания 2024-03-01, а так же параметры для целей их использования:
- S (Signing – Подпись): Этот компонент ключа позволяет использовать его для создания электронных подписей. Электронная подпись может быть прикреплена к сообщению для подтверждения его авторства и целостности.
- C (Certification – Подпись ключа): Этот компонент указывает, что ключ может использоваться для подписи других ключей. Это используется в процессе построения сети доверия, когда пользователь доверяет ключу другого пользователя.
- E (Encryption – Шифрование): Этот компонент позволяет использовать ключ для шифрования сообщений для получателя. Он используется для обеспечения конфиденциальности сообщений.
- A (Authentication – Авторизация): Этот компонент может использоваться для проверки подлинности пользователя. Он обычно используется в других протоколах, таких как SSH (Secure Shell), для аутентификации пользователя.
После того, как мы определились с метаданными ключа и их предназначением перейдем к шифрованию и безопасной передаче данных или же их хранению!
Шифрование gpg
Основная цель шифрования заключается, в том чтобы сохранить конфиденциальность, целостность и в некоторых случаях подлинность передаваемых данных. Для создания шифртекста или же зашифрованного сообщения воспользуемся командой:
Для просмотра id владельца ключа, в нашем случае это будет Koldek, которого мы укажем далее:
В данном случае, мы указываем ключ которым будем шифровать сообщение, параметр -a позволит закодировать шифротекст в ASCII, вместо бинарного GPG и позволит передать через многие средства связи! Параметр -e указывает на шифрование ассиметричным алгоритмом и стандартный вывод STDOUT перенаправим файловым дескриптором в target.txt.asc. Соответственно, зашифрованное сообщение с его метаданными будет храниться в этом файле.
Как посмотреть gpg ключ? Далее командой cat отобразили содержимое файла target.txt.asc, что позволяет просмотреть зашифрованное сообщение! Теперь необходимо передать получателю шифртекст и открытый ключ. Если зашифрованное сообщение можно передать любым удобным способом, то ключ необходимо разместить публично и ему должны доверять пользователи или получатель. Либо через 3 сторону – удостоверяющий центр, либо от самой компании ключ на сайте и надежда на TLS-соединение.
Экспорт ключей и расшифровка gpg
Экспортируем публичный ключ:
Импортируем ключ и расшифруем шифртекст на машине пользователя, используя команды:
В итоге мы должны увидеть расшифрованный текст:
Возможно, вы заметили отличающиеся строчки от ваших в выводе, например anonymous recipient. Что означает отсутствие мета-данных о пользователе в файле, как это настроить?
Конфигурация gpg ключа
Для того, чтобы наш получатель не пострадал, при перехвате мета-данных сообщения, то укажем в настройках запрет на добавление комментариев из UID и уберем хеш-ключа:
throw-keyids
no-emit-version
no-comments" > ~/.gnupg/gpg.conf
Данная команда перезапишет файл, если у вас есть собственные настройки, то используйте >> файловый дескриптор, который позволит дописать, а не перезаписывать.
PGP (Pretty Good Privacy) – это программа и библиотека функций, обеспечивающая шифрование и цифровую подпись электронной почты, файлов, дисков и других данных. PGP использует алгоритмы симметричного и асимметричного шифрования, обеспечивая высокую конфиденциальность и целостность информации. Она используется для защиты конфиденциальной информации, аутентификации пользователей и обеспечения неотказуемости. PGP – это важный инструмент для обеспечения информационной безопасности, доступный для пользователей всех уровней.