Открыть сервис

Формат PPK

Формат PPK (от англ. Portable Protected Key, переносимый защищённый ключ) — это специализированный формат файлов, предназначенный для хранения и передачи криптографических ключей (в первую очередь секретных ключей и пар закрытых ключей) в защищённом виде. Формат был разработан в рамках проекта OpenPGP (RFC 4880) и используется для обеспечения конфиденциальности и целостности ключевой информации при её хранении на носителях или передаче по открытым каналам связи. Основное отличие PPK от других форматов (например, PEM или PKCS#12) заключается в применении к ключу дополнительных мер защиты, основанных на парольной фразе (passphrase) и, в некоторых реализациях, на аппаратных токенах.

История

Формат PPK возник как часть более широкой экосистемы OpenPGP, которая начала развиваться в 1990-х годах. Первоначально стандарт OpenPGP (RFC 1991, 1996 год) определял простые форматы для хранения ключей, но с ростом требований к безопасности и необходимостью защиты ключей на мобильных устройствах и съёмных носителях возникла потребность в более надёжном контейнере. В 2000-х годах, с выходом RFC 4880 (2007 год), были уточнены механизмы шифрования ключей, и формат PPK получил широкое распространение в таких программах, как GnuPG (GNU Privacy Guard) и PGP (Pretty Good Privacy). В России формат PPK используется в основном в контексте криптографической защиты информации, соответствующей требованиям ФСБ России, и применяется в средствах электронной подписи и шифрования.

Структура и устройство

Формат PPK представляет собой бинарный файл, который содержит:

  • Заголовок — идентификатор формата, версия протокола и алгоритм шифрования ключа.
  • Зашифрованный блок данных — сам секретный ключ (или пара ключей), зашифрованный с использованием симметричного алгоритма (например, AES-256, CAST5 или 3DES). Ключ шифрования выводится из парольной фразы пользователя с помощью функции формирования ключа (KDF, Key Derivation Function), такой как PBKDF2 (Password-Based Key Derivation Function 2) или S2K (String-to-Key) в OpenPGP.
  • Соль (salt) — случайное значение, добавляемое к парольной фразе для защиты от атак по радужным таблицам.
  • Контрольная сумма — значение, позволяющее проверить целостность и правильность расшифровки ключа.

В отличие от формата PEM (Privacy-Enhanced Mail), который часто хранит ключи в открытом виде (Base64-кодированные), PPK всегда хранит ключ в зашифрованном виде, даже если парольная фраза не установлена (в этом случае используется пустая парольная фраза). Это делает PPK более безопасным для хранения на носителях, которые могут быть утеряны или украдены.

Классификация и виды

Формат PPK не имеет официальных подтипов, но по способу использования и контексту можно выделить несколько разновидностей:

  • PPK для OpenPGP — стандартный формат, используемый в GnuPG и других реализациях OpenPGP. Поддерживает алгоритмы RSA, DSA, ECDSA, Ed25519 и другие.
  • PPK для SSH — некоторые реализации SSH (например, PuTTY) используют собственный формат, который также называется PPK (PuTTY Private Key). Этот формат несовместим с OpenPGP, но имеет схожую структуру: зашифрованный ключ, соль и парольная фраза. В контексте SSH формат PPK используется для хранения закрытых ключей аутентификации.
  • PPK для аппаратных токенов — в некоторых российских криптографических системах (например, на базе ГОСТ Р 34.10-2012) формат PPK может быть адаптирован для хранения ключей на USB-токенах или смарт-картах, где ключ дополнительно защищён аппаратным модулем безопасности.

Применение

Формат PPK широко применяется в следующих областях:

  • Электронная почта и шифрование сообщений — программы, такие как GnuPG, используют PPK для хранения секретных ключей пользователей, которые затем применяются для расшифровки входящих сообщений и создания цифровых подписей.
  • Аутентификация в SSH — формат PPK (в версии PuTTY) является стандартным для хранения закрытых ключей, используемых для подключения к удалённым серверам по протоколу SSH. Это особенно актуально для администраторов систем и разработчиков.
  • Электронная подпись — в России формат PPK используется в средствах электронной подписи (ЭП) для хранения ключей подписи, соответствующих требованиям Федерального закона № 63-ФЗ «Об электронной подписи». Такие ключи могут быть защищены парольной фразой и храниться на съёмных носителях.
  • Криптографические контейнеры — PPK может быть частью более сложных форматов, таких как OpenPGP-ключи, которые включают в себя также сертификаты и метаданные.

Примеры использования

  • GnuPG — при создании пары ключей командой gpg --gen-key секретный ключ сохраняется в формате PPK в каталоге ~/.gnupg/private-keys-v1.d/. При экспорте ключа с помощью gpg --export-secret-keys файл также может быть сохранён в формате PPK.
  • PuTTY — программа PuTTYgen (генератор ключей) создаёт закрытые ключи в формате .ppk. Эти файлы затем используются в PuTTY, WinSCP и других SSH-клиентах для Windows.
  • Российские СКЗИ — в сертифицированных средствах криптографической защиты информации (СКЗИ), таких как «КриптоПро CSP» или «ViPNet CSP», формат PPK может применяться для хранения ключей ГОСТ. Однако в этих системах часто используются собственные форматы (например, .cer или .p12), а PPK встречается реже.

Преимущества и недостатки

Преимущества

  • Высокая безопасность — ключ всегда хранится в зашифрованном виде, что защищает его от несанкционированного доступа при утере носителя.
  • Переносимость — файлы PPK могут быть скопированы на любой носитель (USB-флешку, облачное хранилище) и использованы на других устройствах.
  • Стандартизация — формат поддерживается многими программами, включая GnuPG, PuTTY, Kleopatra и другие.
  • Гибкость — возможность использования различных алгоритмов шифрования и функций формирования ключа.

Недостатки

  • Зависимость от парольной фразы — при утере или забывании парольной фразы восстановить ключ невозможно.
  • Совместимость — форматы PPK для OpenPGP и SSH несовместимы друг с другом, что может вызывать путаницу.
  • Отсутствие поддержки в некоторых системах — встроенные средства Windows и macOS не поддерживают PPK, требуется установка дополнительного ПО (например, Gpg4win или PuTTY).
  • Уязвимость к атакам перебором — при слабой парольной фразе злоумышленник может подобрать её, используя специализированные инструменты (например, John the Ripper или Hashcat).

Критика

Формат PPK подвергается критике со стороны некоторых специалистов по безопасности за то, что он не является открытым стандартом в полном смысле слова. В частности, формат PuTTY PPK (для SSH) не описан в официальных RFC и существует только в виде реализации. Это может создавать проблемы при попытке использовать такие ключи в других программах, не поддерживающих PuTTY. Кроме того, некоторые реализации PPK (например, в GnuPG) используют устаревшие алгоритмы шифрования (CAST5, 3DES), которые считаются менее безопасными, чем современные (AES-256). В ответ на это разработчики GnuPG добавили поддержку более стойких алгоритмов, но совместимость со старыми версиями может быть нарушена.

Интересные факты

  • Формат PPK (в версии PuTTY) был создан британским программистом Саймоном Тэтхемом (Simon Tatham) в 1998 году как часть проекта PuTTY.
  • В GnuPG формат PPK используется по умолчанию для хранения секретных ключей, начиная с версии 2.1 (2014 год). Ранее ключи хранились в формате .sec (секретный ключ) и .pub (открытый ключ).
  • В России формат PPK не является стандартом де-юре, но широко применяется в негосударственных системах электронной подписи и шифрования, особенно в среде разработчиков и системных администраторов.

Источники

  • RFC 4880 — OpenPGP Message Format
  • RFC 1991 — PGP Message Exchange Formats
  • Документация GnuPG (GNU Privacy Guard)
  • Документация PuTTY (Simon Tatham)
  • Федеральный закон № 63-ФЗ «Об электронной подписи» (Российская Федерация)
  • Стандарты криптографической защиты информации ФСБ России (ГОСТ Р 34.10-2012, ГОСТ Р 34.11-2012)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →