Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
rust_citadel — Постквантовая гибридная библиотека шифрования, объединяющая X25519 + ML-KEM-768 с AES-256-GCM | Kitploit
Инструменты/GitHubGitHub/mrcord77/rust_citadel
Аутентификация и авторизацияИнструменты шифрования/дешифрованияКриптографияБезопасность облачных средБезопасность API
GitHubmrcord77/rust_citadel

rust_citadel

Постквантовая гибридная библиотека шифрования, объединяющая X25519 + ML-KEM-768 с AES-256-GCM

Репозиторий
23 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Citadel

Пост-квантовый гибридный сервер шифрования и управления ключами.

Citadel объединяет X25519 + ML-KEM-768 для инкапсуляции ключей и AES-256-GCM для шифрования данных, следуя гибридному подходу NIST для пост-квантового перехода. Приложения шифруют и расшифровывают данные через REST API. Citadel управляет ключами — генерацией, ротацией, отзывом, контролем доступа и журналированием аудита.

Статус: Рабочая реализация. Аудит не проводился. Продакшен-развёртываний нет. См. Безопасность ниже.


Что он делает

root@kitploit:~
Your Application              Citadel                         Database
       |                         |                               |
       |-- POST /encrypt ------->|                               |
       |                         |-- hybrid KEM (X25519+ML-KEM)  |
       |                         |-- derive AES-256 key (HKDF)   |
       |                         |-- encrypt with AES-256-GCM    |
       |<-- encrypted blob ------|                               |
       |                                                         |
       |-- store blob ------------------------------------------>|

Ваше приложение никогда не работает напрямую с исходным ключевым материалом. Зашифрованный blob самодостаточен — он включает обёрнутый ключ, идентификаторы алгоритмов и шифротекст. Храните его в любой базе данных. Для расшифровки отправьте его обратно в Citadel с тем же AAD и контекстом.

Архитектура

root@kitploit:~
citadel-envelope    Hybrid encryption core (X25519 + ML-KEM-768 + AES-256-GCM)
citadel-keystore    Key lifecycle management, 4-level hierarchy, threat-adaptive policies
citadel-api         HTTP server, scoped API key auth, rate limiting, real-time dashboard

Быстрый старт

Docker (рекомендуется)

root@kitploit:~
# Clone
git clone https://github.com/mrcord77/rust_citadel.git
cd rust_citadel

# Set your admin API key
echo -n "your-secret-key" | sha256sum | cut -d' ' -f1
# Copy the hash

# Start
CITADEL_API_KEY_HASH=<paste-hash> docker compose up -d

# Verify
curl http://localhost:3000/health
# {"status":"ok","version":"0.2.0"}

Панель управления: http://localhost:3000

Из исходного кода

Требуется Rust 1.75+.

root@kitploit:~
cargo build --release -p citadel-api
CITADEL_API_KEY="your-secret-key" CITADEL_SEED_DEMO=true ./target/release/citadel-api

Использование

Python

root@kitploit:~
import requests

api = "http://localhost:3000"
headers = {"Authorization": "Bearer your-secret-key"}

# Encrypt
r = requests.post(f"{api}/api/keys/{dek_id}/encrypt", headers=headers, json={
    "plaintext": "sensitive data",
    "aad": "record-001",        # binds ciphertext to this record
    "context": "patient-records" # domain separation
})
blob = r.json()

# Decrypt
r = requests.post(f"{api}/api/decrypt", headers=headers, json={
    "blob": blob,
    "aad": "record-001",
    "context": "patient-records"
})
plaintext = r.json()["plaintext"]

Полный рабочий пример с привязкой AAD, ротацией ключей и поведением приложения с учётом уровня угрозы см. в citadel_example.py.

curl

root@kitploit:~
# Status
curl http://localhost:3000/api/status -H "Authorization: Bearer $KEY"

# List keys
curl http://localhost:3000/api/keys -H "Authorization: Bearer $KEY"

# Encrypt
curl -X POST http://localhost:3000/api/keys/$DEK_ID/encrypt \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"plaintext":"hello","aad":"test","context":"demo"}'

Эндпоинты API

Иерархия ключей

root@kitploit:~
Root Key
  └── Domain Key (per environment / business unit)
        └── KEK — Key Encrypting Key (wraps DEKs)
              └── DEK — Data Encrypting Key (encrypts application data)

Соответствует NIST SP 800-57. Каждый уровень ограничивает радиус поражения при компрометации — утёкший DEK не раскрывает другие DEK, поскольку KEK хранится отдельно.

Области действия ключей API

Область действияРазрешения
readПросмотр ключей, статуса, метрик, уровня угрозы
encrypt

Область admin подразумевает все остальные. Принцип минимальных привилегий: панелям мониторинга — read, сервисам приложений — read + encrypt, административным инструментам — admin.

Адаптивная система реагирования на угрозы

Citadel отслеживает события безопасности и автоматически корректирует политики управления ключами:

События, повышающие уровень угрозы: неудачная аутентификация, сбои расшифрования, интенсивные обращения, ручная эскалация. Показатель со временем снижается.

Криптография

Гибридная конструкция: оба общих секрета конкатенируются и пропускаются через HKDF. Безопасность сохраняется, если хотя бы один из алгоритмов — X25519 или ML-KEM-768 — остаётся стойким.

Формат сообщений

root@kitploit:~
version[1] || suite_kem[1] || suite_aead[1] || flags[1] || kem_ct_len[2] ||
x25519_ephemeral_pk[32] || mlkem768_ct[1088] || nonce[12] || aead_ct[variable]

Самодокументируемый, версионируемый, без согласования параметров (предотвращает атаки понижения версии). Полную спецификацию см. в SPEC.md.

Свойства безопасности

  • Сравнение за константное время — проверка ключа API через крейт subtle предотвращает атаки по времени
  • Зануление — все общие секреты и ключи AES обёрнуты в Zeroizing<T> и зануляются при освобождении
  • Единообразные ошибки — при сбоях расшифрования возвращаются идентичные сообщения об ошибке (нет оракула расшифрования)
  • Журнал аудита с контролем целостности — хеш-цепочка SHA-256 выявляет подмену журнала
  • Ограничение частоты запросов — токен-бакет на каждый IP с эскалацией уровня угрозы при нарушениях

Безопасность

Citadel не проходила независимый аудит.

Реализация использует стандартизированные NIST примитивы через проверенные крейты Rust (ml-kem, x25519-dalek, aes-gcm, hkdf). Она не реализует собственных криптографических алгоритмов. Ценность — в корректной композиции, а не в новой математике.

Что сделано:

  • Полный набор тестов, включая тесты с известными ответами (known-answer tests)
  • Фаззинг-тестирование парсера формата сообщений и полного пути расшифрования
  • Анализ времени выполнения операций шифрования/расшифрования
  • Единообразная обработка ошибок для предотвращения оракулов расшифрования

Что НЕ сделано:

  • Независимый аудит безопасности
  • Формальная верификация
  • Сертификация FIPS
  • Продакшен-развёртывание

Не используйте для конфиденциальных данных без независимой проверки. Сообщения об уязвимостях: см. SECURITY.md.

Соответствие требованиям

Сопоставлено с 34 контрольными пунктами NIST SP 800-57: 26 — удовлетворено, 7 — частично, 1 — пробел. Полную карту сопоставления см. в COMPLIANCE_MATRIX.md.

Применимые стандарты: NIST SP 800-57 (управление ключами), CNSA 2.0 (дорожная карта PQC), HIPAA (шифрование хранимых данных), SOC 2 (контроль доступа и аудит).

Структура проекта

root@kitploit:~
rust_citadel/
├── citadel-envelope/        # Core hybrid encryption library
│   ├── src/
│   │   ├── envelope.rs      # Encrypt/decrypt operations
│   │   ├── kem.rs           # X25519 + ML-KEM-768 hybrid KEM
│   │   ├── kdf.rs           # HKDF-SHA256 key derivation
│   │   ├── wire.rs          # Wire format encode/decode
│   │   ├── aead.rs          # AES-256-GCM wrapper
│   │   ├── aad.rs           # Additional authenticated data
│   │   ├── error.rs         # Uniform error types
│   │   └── sdk.rs           # High-level API
│   ├── tests/               # KAT + roundtrip tests
│   └── fuzz/                # Fuzz targets
├── citadel-keystore/        # Key lifecycle management
│   └── src/
│       ├── keystore.rs      # Key CRUD + state machine
│       ├── policy.rs        # Crypto-period policies
│       ├── threat.rs        # Adaptive threat intelligence
│       ├── storage.rs       # File-based key storage
│       ├── audit.rs         # Integrity-chained audit log
│       └── types.rs         # Key types and states
├── citadel-api/             # HTTP server
│   └── src/
│       ├── main.rs          # API routes, auth, rate limiting
│       └── dashboard.html   # Real-time security dashboard
├── citadel_example.py       # Python integration example
├── Backup-Citadel.ps1       # Backup/restore tooling
├── docker-compose.yml       # Development deployment
├── docker-compose-production.yml  # Production with TLS
├── SPEC.md                  # Wire format specification
├── THREAT_MODEL.md          # Security goals and attacker model
├── COMPLIANCE_MATRIX.md     # NIST 800-57 control mapping
└── CITADEL_OVERVIEW.md      # Commercial overview

Документация

Лицензия

Проект распространяется под двойной лицензией:

  • GNU Affero General Public License v3 (AGPL) — для open-source использования
  • Коммерческая лицензия — для проприетарного или коммерческого использования

Если вы используете это ПО в коммерческой среде или не хотите соблюдать условия AGPL, вам необходимо приобрести коммерческую лицензию.

Коммерческие условия см. в COMMERCIAL_LICENSE.md.

Полный текст AGPL приведён в AGPL-3.0.txt и COPYING.

Контакт: [email protected]

Автор

Andre Cordero — [email protected]

Скачать инструмент
ЭндпоинтМетодОбласть действияОписание
/healthGET—Проверка работоспособности
/api/statusGETreadУровень угрозы, количество ключей
/api/metricsGETreadПоказатели безопасности
/api/keysGETreadСписок всех ключей
/api/keysPOSTmanageСоздать новый ключ
/api/keys/:idGETreadСведения о ключе
/api/keys/:id/activatePOSTmanageАктивировать ожидающий ключ
/api/keys/:id/rotatePOSTmanageРотация ключа (новая версия)
/api/keys/:id/revokePOSTmanageОкончательно отозвать ключ
/api/keys/:id/destroyPOSTmanageУничтожить ключевой материал
/api/keys/:id/encryptPOSTencryptЗашифровать данные
/api/decryptPOSTencryptРасшифровать данные
/api/threatGETreadДанные аналитики угроз
/api/policiesGETreadАктивные политики ключей
/api/auth/whoamiGETreadИнформация о текущем ключе API
/api/auth/keysGETadminСписок ключей API
/api/auth/keysPOSTadminСоздать ключ API
/api/auth/keys/:idDELETEadminОтозвать ключ API
Шифрование и расшифрование данных
manageСоздание, ротация, отзыв и уничтожение ключей
adminВсё вышеперечисленное + управление ключами API
УровеньТриггерРеакция
LOWОбычная работаСтандартные криптопериоды
GUARDEDНезначительные аномалииЧуть более частая ротация
ELEVATEDПодозрительные паттерныСокращённые графики ротации
HIGHАктивные индикаторы угрозПринудительная ротация, сниженные лимиты использования
CRITICALПод атакойМаксимальные ограничения
КомпонентАлгоритмСтандарт
Инкапсуляция ключа (классическая)X25519 ECDHRFC 7748
Инкапсуляция ключа (пост-квантовая)ML-KEM-768FIPS 203
Шифрование данныхAES-256-GCMNIST SP 800-38D
Выработка ключаHKDF-SHA256NIST SP 800-56C
ДокументАудитория
SPEC.mdСпецификация формата сообщений
THREAT_MODEL.mdЦели безопасности и допущения
COMPLIANCE_MATRIX.mdСопоставление с требованиями NIST 800-57
CITADEL_OVERVIEW.mdКоммерческое позиционирование
SECURITY.mdСообщение об уязвимостях
API_FREEZE.mdГарантии стабильности API
DEPLOYMENT.mdРуководство по продакшен-развёртыванию
QUICKSTART.mdНачало работы