
Центр сертификации SSH с нулевым доверием
Ephemera — это легковесный, самостоятельно размещаемый центр сертификации SSH, разработанный для обеспечения доступа с нулевым доверием к инфраструктуре. Он заменяет статические SSH-ключи на краткосрочные сертификаты, интегрирует WebAuthn MFA с аппаратной поддержкой и поддерживает криптографически проверяемые журналы аудита.
[!NOTE] Канонический источник: Codeberg
Зеркало на GitHub: GitHub (для доступности и хостинга)
graph LR
subgraph Client["User (Operator)"]
SSH["SSH Client"]
HW["Hardware Key<br/>WebAuthn / YubiKey"]
end
subgraph Auth["Authentication Boundary"]
MFA["WebAuthn MFA<br/><i>Human presence required</i>"]
OIDC["OIDC<br/><i>Optional</i>"]
end
subgraph CA["Ephemera SSH Certificate Authority"]
CORE["Self-hosted CA<br/>Air-gap capable"]
POLICY["Policy Engine<br/><i>Governance at issuance</i>"]
BUDGET["Trust Budgeting<br/><i>Optional</i>"]
end
subgraph Targets["Target Servers"]
NATIVE["Native OpenSSH<br/>TrustedUserCAKeys"]
NOAGENT["No agents<br/>No SSH proxy"]
end
subgraph Audit["Audit & Recovery"]
LOG["Tamper-Evident<br/>Audit Log"]
BACKUP["Encrypted Backups<br/>Shamir Recovery"]
end
Client --> Auth
Auth -->|"Short-lived cert"| CA
CA -->|"Certificate expires<br/>automatically"| Targets
CA -.->|"Post-fact integrity"| Audit
style Auth fill:#e8f5e9,stroke:#2e7d32
style CA fill:#e3f2fd,stroke:#1565c0
style Audit fill:#fff3e0,stroke:#ef6c00
Что делает Ephemera: Управляет тем, кто может получить доступ и насколько долго.
Что Ephemera НЕ делает: Мониторинг в реальном времени, MITM-проксирование, инспекция команд.
Реализация: Полностью встроенный OpenSSH — никаких агентов Ephemera на целевых серверах.
Ротация ключей: Не требуется — сертификаты истекают автоматически.
Ephemera — это самостоятельно размещаемый центр сертификации SSH, построенный на встроенных функциях OpenSSH. Он заменяет долгоживущие SSH-ключи на краткосрочные сертификаты, выдаваемые по требованию, с явным физическим присутствием и аудитируемым повышением привилегий.
Он предназначен для команд, которым нужно централизованное управление SSH без MITM-прокси, собственных протоколов или облачных зависимостей.
Базовая функциональность SSH CA: Готова к production
Trust Budgeting: Экспериментально (опционально, может измениться)
Экспериментальные функции четко изолированы и отключены по умолчанию.
Традиционный SSH опирается на долгоживущие закрытые ключи, распространяемые по ноутбукам и серверам. Как только ключ утекает, доступ сохраняется, пока вы не обнаружите это и не смените ключи везде. Ephemera заменяет статические ключи на краткосрочные сертификаты, которые истекают автоматически, сокращая окно злоупотребления с месяцев до минут.
Доступ по требованию : Сертификаты истекают через минуты (по умолчанию 5 мин), сокращая окно возможностей для кражи учетных данных.
Принуждение WebAuthn : Выдача сертификатов требует физического MFA (FIDO2) через YubiKey или TouchID.
Суверенное восстановление : Зашифрованные резервные копии защищены с помощью схемы Шамира, требующей кворума для восстановления.
Проверяемый аудит : Все действия ЦС записываются в журнал с цепочкой Меркла для защиты от несанкционированного изменения.
Гранулированное RBAC : Механизм политик на основе YAML определяет доступ по ролям, ресурсам и условиям.

Ephemera включает экспериментальный, опциональный примитив управления под названием Trust Budgeting.
Trust Budgeting ограничивает совокупные привилегированные полномочия во время выдачи сертификатов, рассматривая доступ как конечный, видимый ресурс. Каждая выдача сертификата потребляет явный бюджет. Когда бюджет исчерпан, обычная выдача прекращается до сброса бюджета или использования отдельного аварийного (break-glass) пути.
Этот механизм:
Trust Budgeting экспериментален и может быть изменен или удален.
Документация: docs/trust_budgeting.md
Ephemera включает GateBridge — систему теневого оценивания, которая проверяет решения политик на альтернативном движке (Gate0), не влияя на производственное поведение.
policy-shadow.log)Каждая запись содержит:
| Поле | Описание |
|---|---|
timestamp | Метка времени ISO 8601 UTC |
match | Boolean — согласны ли оба движка? |
versions.bridge | Версия Python GateBridge |
versions.gate0 | Версия CLI Gate0 |
versions.policy_hash | SHA256-хэш policy.yaml |
context_hash | SHA256-хэш канонизированного ввода |
yaml_decision | Результат движка YAML |
gate0_decision | Результат движка Gate0 |
snapshot | Полный контекст (только при несовпадении, с ограничением размера) |
GET /api/admin/gate0/status