В статье описана настройка защитного преобразования (шифрования) и подписывания почтовых сообщений для их защиты при пересылке. Далее вместо термина защитное преобразование используется термин шифрование. Термин шифрование используется только для краткости исключительно в значении защитное преобразование данных. Описанные в статье процедуры не подразумевают какую-либо сертификацию.

Для защиты передаваемых сообщений почтовый клиент Evolution использует асимметричное шифрование. На момент написания настоящей статьи алгоритмы асимметричного шифрование не описаны в российских стандартах.  Стандарт ГОСТ 34.10-2018 описывает генерацию ключевых пар предназначенных только для подписывания данных. В настоящей статье для примеров используется алгоритм шифрования RSA.

Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)

Аннотация

S/MIME (Secure/Multipurpose Internet Mail Extensions) — стандарт защиты сообщений электронной почты с помощью асимметричного шифрования и подписывания. Для асимметричного шифрования используются пары ключей (специальных наборов данных), состоящие из открытого ключа и закрытого ключа. При этом:

  • На стороне отправителя сообщения:
    • сообщение шифруется с помощью открытого ключа получателя;
    • сообщение подписывается с помощью закрытого ключа отправителя.
  • На стороне получателя сообщения:
    • сообщение расшифровывается с помощью закрытого ключа получателя;
    • подпись проверяется с помощью открытого ключа отправителя.

Открытые ключи передаются в виде сертификатов открытых ключей (далее — сертификат). Сертификат содержит открытый ключ и информацию о владельце соответствующего закрытого ключа. Подлинность информации о владельце должна быть подтверждена доверенным удостоверяющим центром (далее - УЦ). Для проверки подлинности подтверждения информации о владельце требуется сертификат УЦ. Таким образом, для успешного обмена защищенными сообщениями:

  • На клиенте отправителя должны быть доступны:
    • доверенный сертификат УЦ, подтвердившего подлинность информации, содержащейся в сертификате получателя;
    • сертификат получателя, подлинность которого проверяется сертификатом УЦ, для шифрования отправляемого сообщения;
    • закрытый ключ отправителя для подписания отправляемого сообщения.
  • На клиенте получателя должны быть доступны:
    • закрытый ключ получателя для расшифровки полученного сообщения;
    • доверенный сертификат УЦ, подтвердившего подлинность информации, содержащейся в сертификате отправителя;
    • сертификат отправителя, подлинность которого проверяется сертификатом УЦ, для проверки подписи отправителя в полученном сообщении.

Закрытые ключи должны находиться исключительно в распоряжении их владельца, и не должны передаваться никому и никогда. Также не следует использовать закрытые ключи, полученные из сторонних источников.  
Для загрузки ключей в почтовый клиент используются файлы (контейнеры) формата PKCS#12. Этот формат позволяет хранить закрытый ключ, соответствующий сертификат и сертификаты УЦ защитив сохраненную информацию паролем. Аналогичный функционал защищенного хранения ключевой информации реализуется специальными устройствами - ключевыми носителями (токенами). 

Подготовка стенда

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

  1. Установить и настроить почтовые клиенты Evolution (далее - клиенты). Для обмена зашифрованными почтовыми сообщениями необходимо два (или более) клиента. Порядок установки клиентов см. в статье Расширенный репозиторий Astra Linux Special Edition x.7: установка почтового клиента Evolution. После установки клиентов на них должен быть настроен обмен почтовыми сообщениями.
  2. Подготовить ключевые данные: ключевые пары, сертификаты открытых ключей, сертификаты УЦ. Подготовка ключевых данных в настоящей статье не рассматривается.

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

Импорт собственных ключевых данных (без использования ключевых носителей)

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

  1. Выгрузить ключевые данные в контейнер PKCS#12, установив пароль на доступ к контейнеру. Порядок создания ключевых данных и их выгрузки определяется используемыми техническими средствами, и в настоящей статье не рассматривается. При использовании для хранения ключевых носителей выгрузка не требуется, порядок настройки использования ключевых носителей описан далее. В контейнер должны быть выгружены:
    • собственный закрытый ключ;
    • собственный сертификат;
    • опционально — сертификат УЦ, подтверждающий подлинность собственного сертификата.
  2. Запустить почтовый клиент Evolution (предполагается, что учетная запись электронной почты уже настроена). 

  3. Открыть пункт меню "Правка"   "Параметры":

  4. Перейти в раздел "Сертификаты".

  5. Перейти во вкладку "Ваши сертификаты".

  6. Нажать кнопку  "Импорт":

  7. Выбрать ранее подготовленный файл с контейнером PKCS#12:
     сертификатом на ключевом носителе в почтовом клиенте Evolution 

  8. Ввести пароль:

  9. Если импорт произошел успешно, сертификат появится во вкладе "Ваши сертификаты" текущей учетной записи электронной почты:

  10. Перейти во вкладку "Поставщики".
  11. Если сертификат УЦ был включен в контейнер, то при импорте контейнера сертификат будет автоматически импортирован в список сертификатов УЦ. Повторно импортировать его не получится (будет выдаваться сообщение, что такой сертификат уже есть), однако, чтобы увидеть этот сертификат в списке и установить к нему доверие понадобится перезапустить клиента. Если сертификат УЦ не был включен в контейнер, то сертификат необходимо импортировать, нажав кнопку "Импорт" и выбрав файл с сертификатом. В любом случае следует установить доверие к сертификату УЦ (или убедиться, что доверие установлено). Для этого:
    1. Выбрать сертификат в списке.
    2. Нажать кнопку "Правка".
    3. Отметить пункт "Доверять этому CA для идентификации пользователей эл.почты".
    4. Нажать кнопку ОК.
  12. Перейти во вкладку "Учётные записи".
  13. Выбрать учетную запись, для которой импортируется сертификат.
  14. Нажать кнопку  "Правка":

  15. Перейти в раздел "Безопасность".
  16. В разделе "Безопасный MIME/S/MIME) нажать кнопку "Выбрать":

  17. Выбрать нужный сертификат для подписи и сертификат для шифрования

Импорт сертификатов получателей

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

При импорте сертификата получателя также необходимо импортировать подтверждающий его подлинность сертификат УЦ и установить к нему доверие. Выполняется так же, как и для собственного сертификата. 

Создание защищенного письма

Для создания защищенного письма п ри создании этого письма выбрать пункт меню "Параметры" и нужные способы защиты ("Зашифровать с помощью S/MIME" и/или "Подпись с помощью S/MIME"):

Отправка защищенного письма осуществляется в обычном порядке.

Защищенное письмо недоступно для отправки получателям, сертификаты которых не включены в список "Сертификаты контактов". При этом при попытке отправки выдается сообщение "No valid or appropriate certificate for ..."

Чтение защищенного письма

Полученное защищенное письмо помечается Evolution как защищенное c применением S/MIME:

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

Использование сертификатов на ключевых носителях

Ключевые носители могут использоваться в качестве контейнеров PKCS#12 для сертификатов контрагентов. Для использования ключевых носителей:

  1. Установить пакет libnss3-tools:

    sudo apt install libnss3-tools

  2. Завершить работу почтового клиента Evolution, включая фоновые процессы клиента командой:

    pkill -9 evolution

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

    Для работы с ключевыми носителями можно использовать графический инструмент XCA или инструменты, предоставляемые производителями используемых ключевых носителей.
  4. Зарегистрировать установленные интерфейсные модули:
    1. Для ключевых носителей Аладдин:

      modutil -add "JaCarta" -libfile /usr/lib/libjcPKCS11-2.so -dbdir ~/.pki/nssdb -force

    2. Для ключевых носителей Рутокен:

      modutil -add "RuToken" -libfile /usr/lib/librtpkcs11ecp.so -dbdir ~/.pki/nssdb -force

    3. Для программных ключевых носителей softhsm:

      modutil -add "SoftHSM" -libfile /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so -dbdir ~/.pki/nssdb -force

  5. Запустить клиент.
  6. Подключенные ключевые носители будут распознаны автоматически. Загрузить доступные на них сертификаты можно по аналогии с обычными сертификатами: 
    1. Открыть пункт меню "Правка"   "Параметры". При этом будет запрошен PIN-код ключевого носителя.

    2. После ввода PIN-кода будут проверены записи на ключевом носителе и:
      1. Сертификаты, для которых на ключевом носителе присутствуют закрытые ключи, будут импортированы в список сертификатов "Ваши сертификаты".
      2. Остальные сертификаты будут импортированы в список сертификатов "Сертификаты контактов".
      Определение соответствия закрытых ключей и сертификатов производится по идентификаторам (ID) их записей.
      Дополнительно можно импортировать сертификаты из файловой системы по описанной ранее процедуре.
    3. Дальнейшие действия с сертификатами не отличаются от работы с обычными сертификатами. В частности, необходимо перед использованием сертификатов загрузить сертификаты УЦ, удостоверяющие их подлинность, в список сертификатов "Поставщики" и установить доверие к ним.
  • No labels