# Спецификация Гибридного Шифрования (Hybrid Federation Encryption)

Для обеспечения безопасности переписки между серверами Knot Messager используется схема AES-RSA.

## 1. Структура Пакета (The Courier Packet)

```json
{
  "senderDomain": "domain-a.com",
  "recipientDomain": "domain-b.com",
  "encryptedPayload": "base64-aes-data",
  "encryptedIV": "base64-rsa-encrypted-iv",
  "signature": "base64-rsa-signature",
  "metadata": {
    "chatId": "uuid",
    "senderId": "uuid",
    "messageType": "text|media|poll"
  }
}
```

## 2. Алгоритм Отправки (Outgoing)

1.  **AES-256 Encryption**: Локальный сервер генерирует случайный `IV` и шифрует текст сообщения с помощью `AES-256-CBC`.
2.  **RSA-Key Wrap**: Шифрует полученный `IV` с помощью **Public Key сервера-получателя** (полученного при Handshake).
3.  **RSA-Sign**: Подписывает весь пакет (собрав хеш из payload + metadata) своим **Private Key**.
4.  **Transport**: Отправляет POST-запрос на `/api/federation/v1/inbound`.

## 3. Алгоритм Приема (Inbound)

1.  **Verify Signature**: Проверяет подпись пакета, используя **Public Key сервера-отправителя** (из белого списка).
2.  **RSA-Key Unwrap**: Расшифровывает `encryptedIV`, используя свой **локальный Private Key**.
3.  **AES-256 Decryption**: С помощью расшифрованного `IV` читает `encryptedPayload`.
4.  **Persistence**: Сохраняет сообщение в локальную БД и уведомляет пользователя через SignalR.

---

## Задачи на текущую итерацию:

1.  **Shared Kernel**: Добавить методы `EncryptWithRsa` и `DecryptWithRsa` в вспомогательные службы.
2.  **Federation Application**: Реализовать `InboundFederationCommand` (логика приема и расшифровки).
3.  **Federation Infrastructure**: Реализовать `FederationHttpClient` для выполнения подписанных запросов.
