Глава 7: Безопасность и шифрование

7.1 Проектирование сквозного шифрования

DTP реализует сквозное шифрование, гарантируя, что данные не могут быть перехвачены или изменены во время передачи, даже при прохождении через недоверенные промежуточные среды (такие как среда выполнения FayGer).

Основная гарантия: Только целевой экземпляр iFay может расшифровать полученные данные payload; среда выполнения FayGer не имеет доступа к данным в открытом виде.

Даже когда iFay работает на публичном облачном экземпляре FayGer, поставщик облачных услуг не может прочитать данные о здоровье пользователя, информацию о местоположении или записи о покупках.

7.2 Область шифрования

┌─────────────────────────────────────┐
│           Logical_Frame              │
├─────────────────────────────────────┤
│  Header — Передаётся открытым текстом│
│  ┌─────────────────────────────────┐│
│  │ ...                             ││
│  │ encryptionMetadata — Открытый   ││
│  │   algorithm: "AES-256-GCM"     ││
│  │   keyVersion: 3                ││
│  └─────────────────────────────────┘│
├─────────────────────────────────────┤
│  Payload — Передаётся зашифрованным  │
│  ┌─────────────────────────────────┐│
│  │ ████████████████████████████    ││
│  │ ████████ Encrypted Data ██████  ││
│  │ ████████████████████████████    ││
│  └─────────────────────────────────┘│
└─────────────────────────────────────┘
  • Header: передаётся открытым текстом; содержит метаинформацию, необходимую для маршрутизации и обработки
  • Метаданные шифрования: передаются открытым текстом; содержат идентификатор алгоритма шифрования и номер версии ключа, чтобы получатель мог определить метод дешифрования
  • Payload: передаётся зашифрованным; содержит фактическое содержимое данных

7.3 Управление ключами

DTP не управляет ключами самостоятельно; вместо этого он полагается на ключи, предварительно согласованные CAP (Control Authorization Protocol):

  1. CAP завершает верификацию личности и обмен ключами на этапе установления соединения
  2. DTP использует ключи, предоставленные CAP, для шифрования/дешифрования Payload
  3. Номер версии ключа (keyVersion) идентифицирует текущий используемый ключ

Предварительное условие CAP

Перед началом передачи данных DTP обязан убедиться, что CAP завершил процесс верификации личности и обмена ключами. Если обмен ключами CAP ещё не завершён, DTP_Engine отказывается отправлять данные и возвращает ошибку «ключ не готов» (KEY_NOT_READY).

7.4 Метаданные шифрования

Заголовок каждого LogicalFrame содержит метаданные шифрования:

ПолеОписание
algorithmИдентификатор алгоритма шифрования, например "AES-256-GCM"
keyVersionНомер версии ключа, идентифицирующий используемую версию ключа

Сами метаданные шифрования не шифруются, обеспечивая возможность получателю определить параметры дешифрования до начала дешифрования.

7.5 Консистентность кругового шифрования

DTP гарантирует консистентность кругового шифрования:

  • Шифрование с последующим дешифрованием правильным ключом должно давать Payload, эквивалентный исходным данным
  • Дешифрование неправильным ключом должно завершиться неудачей и вернуть ошибку DECRYPTION_FAILED

7.6 Дешифрование на стороне терминала

Когда терминал является получателем (сценарий инъекции данных), DTP_Engine использует ключ, предоставленный терминалом на этапе установления соединения CAP, для дешифрования.

7.7 Защита от угроз безопасности

УгрозаМера защиты DTP
Перехват «человеком посередине»Сквозное шифрование Payload; промежуточные узлы не могут прочитать открытый текст
Подглядывание FayGerFayGer может видеть только зашифрованный Payload и не может его расшифровать
Компрометация ключаМеханизм номера версии ключа поддерживает ротацию ключей
Подмена личностиПолагается на механизм верификации личности CAP
Атаки повторного воспроизведенияМонотонно возрастающие порядковые номера + привязка к сессии