Безопасность
Проверяемое доверие, а не «доверьтесь нам»
Каждое архитектурное утверждение ниже — это публичный endpoint, который
можно проверить прямо сейчас. Это не маркетинг — это арифметика и
криптография.
1 · Cryptographic build identity
Каждая прод-сборка подписана офлайн-ключом Ed25519, который физически никогда не попадает в облако. Публичный ключ открыт:
curl https://quantorsaas.app/.well-known/quantor-pubkey
Эндпоинт /api/v1/identity возвращает manifest + signature текущей сборки. Проверка занимает 30 секунд через openssl — не нужно доверять нам на слово:
curl -s https://api.quantorsaas.app/api/v1/identity \
| jq -r .manifest > /tmp/m
curl -s https://api.quantorsaas.app/api/v1/identity \
| jq -r .signature | base64 -d > /tmp/s
curl -s https://quantorsaas.app/.well-known/quantor-pubkey > /tmp/p
openssl pkeyutl -verify -pubin -inkey /tmp/p \
-rawin -in /tmp/m -sigfile /tmp/s
Возвращает «Signature Verified Successfully», если на проде крутится именно тот код, который мы декларируем.
Подробнее: пост о подписанных сборках (EN).
2 · Self-custody по построению
Ваши деньги не покидают вашу биржу. Quantor использует API-ключ с правом только на торговлю — без права на вывод. Право на вывод запрещено на стороне Binance, а не у нас в коде.
Что это значит на практике:
- Если наша БД утечёт — атакующий может только торговать в пределах вашего аккаунта (что неприятно, но не катастрофа).
- Withdraw невозможен. Биржа не пропустит запрос на вывод по ключу без флага «Enable Withdrawals».
- Никаких депозитов на нашу сторону. Funds не движутся вообще.
Сам API-ключ хранится как AES-GCM blob; master key в GCP Secret Manager с правами доступа только у нашего runtime service account.
Подробнее: пост о self-custody (EN).
3 · 14 проверок риска до LIVE
Перед тем как реальный ордер уходит на биржу, проходит 14 независимых проверок. Любая может его заблокировать. Каждая возвращает машино-читаемый risk_code — вы точно знаете, какая сработала.
Список:
- Symbol allowlist — пара в разрешённом списке (фильтр от тонколиквидных альткоинов)
- Plan permissions — план разрешает стратегию + пару
- Bot count — не превышен лимит ботов на план
- Subscription state — подписка ACTIVE, не заморожена
- Telegram link — аккаунт привязан к Telegram
- Exchange-key present — API-ключ существует в БД
- Exchange-key verified — ключ прошёл первичную верификацию (test connection)
- Exchange-key trade scope — флаг торговли установлен
- Exchange-key withdraw forbidden — флаг вывода отсутствует
- Notional ceiling — размер позиции в пределах лимита плана
- Daily-loss kill switch — дневной убыток не превышает порог
- Regime guard — рыночный режим не DANGEROUS (см. ниже)
- Strategy compatibility — стратегия совместима с парой + таймфреймом
- Final risk evaluator — финальная проверка с учётом всех factors
Подробнее: пост о 14 risk gates (EN).
4 · Regime classifier — отказ запускать LIVE в DANGEROUS
Большинство ботов с радостью откроют новую LIVE-позицию утром после того, как BTC упал на 14%. Quantor отказывается. Стабильный 50-строчный классификатор оценивает рыночный режим на основе:
- Realized volatility (стандартное отклонение лог-доходностей за 14 дней)
- Drawdown from peak (просадка от максимума)
Три категории: CALM, VOLATILE, DANGEROUS. В DANGEROUS новые LIVE-старты блокируются. Уже запущенные боты продолжают работать, но не открывают новые позиции. Это не предсказание — это контекстный тэг, который остальная система консультирует перед необратимыми действиями с деньгами.
Подробнее: пост о regime detector (EN).
5 · Tamper-evident audit chain
Каждое действие системы (LIVE-старт, изменение плана, переключение режима, kill switch, webhook фулфилмента) записывается в audit_chain с криптографической hash-цепочкой. Каждая строка хэширует предыдущую — изменить запись задним числом невозможно без переписи всей цепочки.
Если злоумышленник получит доступ к БД и попытается стереть свои следы, цепочка разорвётся в той точке и мы узнаем. Pulse-чек проверяет head'ы цепочки каждые 60 минут.