Как работают P2PE и DUKPT: криптографический анализ

Professor

Professional
Messages
686
Reaction score
733
Points
93
Ниже — подробный образовательный разбор двух ключевых технологий безопасности в платежных системах:
🔹 P2PE (Point-to-Point Encryption)
🔹 DUKPT (Derived Unique Key Per Transaction)

Разбор ведётся на уровне криптографии, с объяснением алгоритмов, протоколов, ключевой инфраструктуры и их взаимодействия. Материал ориентирован на специалистов по кибербезопасности, кардеров, пентестеров, разработчиков и студентов, изучающих безопасность финансовых систем.

🔐 Как работают P2PE и DUKPT: криптографический анализ​

🧩 1. Общая цель: защита данных карт в пути​

Когда клиент вставляет карту в терминал, данные (например, PAN — номер карты) должны быть защищены с момента чтения до процессингового центра.
Основная угроза — перехват данных на промежуточных узлах (например, в ПК, сети, шлюзе).

Решение:
  • P2PE — шифрует данные сразу на терминале.
  • DUKPT — обеспечивает уникальный сеансовый ключ для каждой транзакции.

✅ Вместе они образуют надёжную систему End-to-End Security.

🔐 Часть 1: P2PE (Point-to-Point Encryption)​

1.1. Определение​

P2PE — это технология, при которой данные карты шифруются сразу при чтении (на POS-терминале) и расшифровываются только у получателя (например, в процессинговом центре или HSM).

🔒 Данные никогда не существуют в открытом виде на ПК, сервере или в сети.

1.2. Архитектура P2PE​

Code:
[Карта] → [Чип/ридер] → [Шифрование в Secure Element] → [Зашифрованные данные] → [Сеть] → [Процессинг] → [HSM: расшифровка]

Ключевые участники:
УЧАСТНИКРОЛЬ
Terminal (POS)Шифрует данные с помощью сеансового ключа
P2PE ManagerУправляет ключами, сертификатами
HSM (в процессинге)Хранит мастер-ключ, расшифровывает данные
GatewayПередаёт зашифрованные данные (не может их прочитать)

1.3. Типы P2PE​

ТИПОПИСАНИЕ
Hardware-based P2PEШифрование в аппаратном Secure Element (SE) или HSM. Самый безопасный.
Software-based P2PEШифрование в ПО. Требует строгой изоляции.
Hybrid P2PEКомбинация, например, SE + ПО.

✅ Только Hardware-based P2PE соответствует строгим требованиям PCI P2PE Standard.

1.4. Криптографические алгоритмы в P2PE​

ФУНКЦИЯАЛГОРИТМ
Шифрование данныхAES-128 или AES-256(в режиме CBC или GCM)
АутентификацияHMAC-SHA256
Обмен ключамиRSA-OAEPилиECDH
ХэшированиеSHA-256

Пример:
Ciphertext = AES-256-CBC(PAN, SessionKey)
MAC = HMAC-SHA256(Ciphertext, MACKey)

1.5. Этапы работы P2PE​

Этап 1: Инициализация терминала (Provisioning)​

  • Терминал получает публичный ключ процессинга (или сертификат).
  • Или получает зашифрованный мастер-ключ от P2PE Manager.

Этап 2: Генерация сеансового ключа​

  • Перед транзакцией терминал генерирует случайный сеансовый ключ (Session Key).
  • Этот ключ шифруется публичным ключом получателя:
    Code:
    EncryptedSessionKey = RSA-OAEP-Encrypt(SessionKey, PublicKey)

Этап 3: Шифрование данных​

  • PAN шифруется сеансовым ключом:
    Code:
    Ciphertext = AES-256-GCM(PAN, SessionKey)
  • Добавляется MAC для целостности.

Этап 4: Передача​

  • Отправляется:
    • EncryptedSessionKey
    • Ciphertext
    • MAC
    • Terminal ID, Transaction ID

Этап 5: Расшифровка в процессинге​

  • HSM использует приватный ключдля расшифровки сеансового ключа:
    Code:
    SessionKey = RSA-OAEP-Decrypt(EncryptedSessionKey, PrivateKey)
  • Затем расшифровывает PAN:
    Code:
    PAN = AES-256-GCM-Decrypt(Ciphertext, SessionKey)
  • Проверяется MAC.

🔐 Даже если злоумышленник перехватит трафик — он не может расшифровать данные без приватного ключа в HSM.

🔐 Часть 2: DUKPT (Derived Unique Key Per Transaction)​

2.1. Определение​

DUKPT (Derived Unique Key Per Transaction) — это криптографический протокол, который генерирует уникальный ключ для каждой транзакции, но не требует хранения всех ключей.

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

2.2. Проблема, которую решает DUKPT​

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

DUKPT решает это:
  • Каждая транзакция — свой ключ.
  • Даже если один ключ скомпрометирован — остальные остаются безопасными.
  • Исторические транзакции не раскрываются (forward secrecy).

2.3. Основные компоненты DUKPT​

КОМПОНЕНТОПИСАНИЕ
IKSN (Initial Key Serial Number)Уникальный идентификатор терминала (10 байт)
BDK (Base Derivation Key)Мастер-ключ (168-битный 3DES), известен только HSM
KSN (Key Serial Number)IKSN + счётчик использования (8 бит)
Future KeysПредварительно вычисленные ключи для будущих транзакций
Current KeyКлюч, используемый в текущей транзакции

2.4. Как работает DUKPT: шаг за шагом​

Шаг 1: Инициализация терминала​

  • HSM генерирует BDK (храним в HSM).
  • Для терминала генерируется IKSN.
  • Из BDK и IKSN вычисляется Initial PIN Encryption Key (IPEK):
    Code:
    IPEK = DUKPT-Derive(BDK, IKSN)
  • IPEK загружается в терминал (защищённо).

🔐 BDK никогда не покидает HSM.

Шаг 2: Первая транзакция​

  • Терминал использует алгоритм DUKPT Key Derivation для генерации рабочего ключа из IPEK.
  • Увеличивает внутренний счётчик.
  • Формирует KSN = IKSN + счётчик.
  • Шифрует данные (например, PAN) с помощью 3DES:
    Code:
    Ciphertext = 3DES-Encrypt(PAN, CurrentKey)
  • Отправляет:
    • Ciphertext
    • KSN

Шаг 3: Расшифровка в HSM​

  • HSM получает KSN.
  • Извлекает из KSN: IKSN и счётчик.
  • Используя BDK и алгоритм DUKPT, HSM восстанавливает тот же CurrentKey, что и терминал.
  • Расшифровывает данные:
    Code:
    PAN = 3DES-Decrypt(Ciphertext, CurrentKey)

🔐 HSM не хранит все ключи — он восстанавливает нужный по KSN и BDK.

2.5. Криптографические детали​

Алгоритм вычисления ключа:​

DUKPT использует режим 3DES и маску смещения (key variation).
  • Каждый ключ получается из IPEK с помощью битовых сдвигов и масок.
  • Используются 10 "будущих ключей" (future keys) для устойчивости к пропущенным транзакциям.

Пример структуры KSN:​

Code:
KSN: 12345678901234FF
       │          └── счётчик (8 бит, 255 макс.)
       └──────────── IKSN (10 байт)

2.6. Преимущества DUKPT​

ПРЕИМУЩЕСТВООБЪЯСНЕНИЕ
Каждая транзакция — уникальный ключНельзя использовать один ключ для расшифровки всех данных
Отсутствие хранения ключейHSM вычисляет ключ по KSN и BDK
Устойчивость к утечке одного ключаCompromise одного ключа не раскрывает другие
Forward secrecy (частичная)Будущие транзакции защищены, если IPEK не скомпрометирован

🔗 Часть 3: Как P2PE и DUKPT работают вместе?​

На практике P2PE и DUKPT часто комбинируются:
Code:
[Карта] → [Чтение PAN] → [Шифрование с помощью DUKPT-ключа] → [P2PE: передача] → [Процессинг: расшифровка по KSN]

Сценарий:​

  1. Терминал читает PAN.
  2. Генерирует DUKPT-ключ для этой транзакции.
  3. Шифрует PAN с помощью 3DES (или AES) и этого ключа.
  4. Отправляет зашифрованные данные + KSN.
  5. Процессинг:
    • Получает KSN.
    • Восстанавливает ключ с помощью BDK.
    • Расшифровывает PAN.

✅ Это соответствует PCI P2PE Standard, если реализовано в аппаратном Secure Element.

⚠️ Ограничения и риски​

ТЕХНОЛОГИЯРИСКМИТИГАЦИЯ
DUKPTИспользует 3DES (устаревший)Переход на AES-DUKPT (ANSI X9.149)
P2PEУязвим, если ключи скомпрометированы при загрузкеИспользовать HSM и PKI
ОбеТребуют строгой дисциплины ключейАудит, ротация, PCI PTS

📚 Стандарты и документация​

  • ANSI X9.24-1:2017 — DUKPT
  • ANSI X9.149:2021 — AES-DUKPT
  • PCI P2PE Standard v3.0 — требования к реализации
  • NIST SP 800-131A — рекомендации по шифрованию

🎓 Заключение​

ТЕХНОЛОГИЯНАЗНАЧЕНИЕКРИПТОГРАФИЯБЕЗОПАСНОСТЬ
P2PEШифрование данных "от точки до точки"AES, RSA, HMACВысокая, если реализовано аппаратно
DUKPTУникальный ключ на транзакцию3DES / AES, KSNВысокая, но 3DES устаревает

🔐 Совместное использование P2PE + DUKPT — золотой стандарт безопасности в POS-системах.
Они обеспечивают:
  • Конфиденциальность (шифрование),
  • Целостность (MAC),
  • Неповторяемость (уникальные ключи),
  • Аудит (KSN как идентификатор).

Если вы хотите, я могу:
  • Показать реальный пример вычисления DUKPT-ключа (с кодом на Python).
  • Объяснить, как восстанавливается ключ в HSM по KSN.
  • Подготовить диаграмму последовательности (sequence diagram).
  • Сравнить DUKPT vs. TR-31.

Напишите, в каком направлении углубиться!
 
Last edited:
Top