Ниже —
подробный образовательный разбор двух ключевых технологий безопасности в платежных системах:
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)
- Отправляет:
Шаг 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]
Сценарий:
- Терминал читает PAN.
- Генерирует DUKPT-ключ для этой транзакции.
- Шифрует PAN с помощью 3DES (или AES) и этого ключа.
- Отправляет зашифрованные данные + KSN.
- Процессинг:
- Получает 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.
Напишите, в каком направлении углубиться!