Безопасность
Математика, а не политика.
Большинство менеджеров паролей говорят: «Мы никогда не будем читать ваши данные». Архитектура Clavitor означает, что мы не можем. Ваш отпечаток пальца, лицо или ключ безопасности генерируют ключи шифрования, которые никогда не существуют ни на одном сервере. Мы храним сейф. Только Вы держите ключ.
Три фактора обеспечивают это.
01 — Поле
Шифрование по полям
У каждого поля есть свой уровень шифрования. Ваш API-ключ доступен для чтения агенту, которому он нужен; Ваша кредитная карта в той же записи — нет. Та же запись, разный доступ.
02 — Аппаратный ключ
Ключи на основе аппаратного ключа
Ваши наиболее конфиденциальные поля зашифрованы ключом, полученным с Вашего устройства — отпечатка пальца, лица или ключа безопасности. Ключ вычисляется в Вашем браузере. Он никогда не покидает устройство.
03 — Расстояние
Вне досягаемости
Хранилище работает на отдельной инфраструктуре, к которой Ваш ИИ-агент не может получить доступ. Учётные данные выдаются через узкий API, ограниченный для каждого агента. Ничего на Вашем ноутбуке. Ничего в Вашем файле .env.
Tier 1 — Vault encryption
Все зашифровано при хранении.
Every record in your vault — every field, every entry, every byte — is encrypted at rest with AES-256-GCM. The encryption key is 8 bytes, derived from a 32-byte master secret that was randomly generated when your vault was created. That master secret is never stored on disk. It exists only inside a WL3 file, wrapped with the output of your hardware key.
Если кто-то украдёт файл хранилища — резервную копию, скомпрометированный хост, враждебного системного администратора — он получит зашифрованный текст. Названия записей, имена пользователей, пароли, карты, заметки: всё зашифровано. 8-байтный ключ достаточно надёжен, чтобы его перебор был вычислительно нецелесообразен, и даже в этом случае поля внутри зашифрованы повторно на более высоких уровнях шифрования.
Это базовый уровень. Каждый менеджер паролей шифрует данные при хранении. Важно то, что происходит выше этой строки.
Tier 2 — Credential encryption
Ваши агенты могут читать учётные данные. Ничего больше.
Над уровнем хранилища каждое поле учётных данных — API-ключи, пароли, TOTP-сиды, токены OAuth, SSH-ключи — зашифровано индивидуально собственным производным ключом. Ключ шифрования имеет длину 16 байт с полной энтропией. Вычислительно не поддаётся взлому.
Ваши ИИ-агенты получают этот ключ, чтобы выполнять свою работу. Это сделано намеренно — агент, развёртывающий Ваш код, нуждается в Вашем SSH-ключе. Но ключ поставляется с четырьмя уровнями защиты, которые контролируют, что с ним происходит:
Ограниченные токены. Каждый агент получает токен, предоставляющий доступ к определённым записям. Ваш агент развёртывания видит Ваш SSH-ключ и Ваши учётные данные AWS. Он не видит Ваш ключ Stripe, Ваш пароль электронной почты или записи Вашего коллеги. Он не может перечислять, просматривать, искать или обнаруживать учётные данные за пределами своей области действия. Он получает то, что ему назначено, и не может найти то, чего у него нет.
Расстояние. Ваше хранилище не находится на Вашем ноутбуке. Оно работает на отдельной инфраструктуре, к которой Ваш агент не может получить доступ. Агент взаимодействует через узкий API, который выдаёт или отклоняет — нет файловой системы для чтения, нет памяти процесса для проверки, нет локального кэша для взлома. Если бы хранилище находилось на той же машине, что и агент, скомпрометированный навык мог бы проникнуть в систему и извлечь то, что ему нужно. Расстояние полностью исключает эту возможность.
Ограничение частоты запросов. Агент, обращающийся к более чем трём уникальным учётным данным в минуту или десяти в час, замедляется. Второе нарушение в течение двух часов приводит к полной блокировке — агент замораживается и требует Ваш аппаратный ключ для разблокировки. Обычному агенту требуется два или три учётных данных. Агент, читающий десять, либо неправильно настроен, либо скомпрометирован. В любом случае он останавливается.
Белый список IP-адресов. Каждый токен агента при первом контакте привязывается к исходному IP-адресу. Украденный токен, используемый с другого IP-адреса, отклоняется на уровне промежуточного программного обеспечения до запуска любого обработчика. Злоумышленник имеет ключ, но не может использовать его ниоткуда, кроме машины, для которой он был выдан.
Результат: радиус поражения скомпрометированного агента ограничен его областью действия, с его IP-адреса, с частотой, которая вызывает блокировку до того, как может произойти значимая эксфильтрация. Ваши другие агенты, Ваши другие учётные данные и Ваши поля идентификации остаются нетронутыми.
Tier 3 — Identity encryption
Ваши наиболее конфиденциальные данные зашифрованы Вашим устройством. Мы не можем их прочитать.
Кредитные карты, CVV, номера паспортов, SSN, коды восстановления, личные заметки, ключи подписи — это поля идентификации. Они зашифрованы 32-байтным ключом, который был случайно сгенерирован при создании Вашего хранилища. Вы не знаете этот ключ. У нас его нет. Он никогда не существовал ни на одном сервере.
The key lives inside a WL3 file, wrapped with the 32-byte output of your hardware key's PRF extension (WebAuthn PRF). To unwrap it, you need the physical device — your fingerprint reader, your face sensor, or your YubiKey. The unwrapping happens in your browser. The plaintext key exists in browser memory for the duration of one operation, then it's gone.
Ни один агент не получает этот ключ. Ни одна конечная точка API не выдаёт его. Ни один серверный процесс не может его получить. Поля идентификации представляют собой зашифрованный текст на каждом сервере, в каждой резервной копии, в каждом целевом объекте репликации, в любой момент времени. Взлом нашей инфраструктуры — полный, всеобъемлющий, каждый байт эксфильтрован — даёт зашифрованный текст для каждого поля идентификации во всех хранилищах. Ключ дешифрования отсутствует в эксфильтрованных данных. Его не может быть, потому что его там никогда не было.
Мы не можем расшифровать Ваши поля идентификации. Нас нельзя обязать предоставить ключ, которого у нас нет. Это не обещание политики. Это математическое свойство системы.
Никто, кроме Вас, не имеет доступа
И нет мастер-пароля.
Нечего забывать, нечего фишинговать, нечего взламывать при утечке. Ваше устройство — отпечаток пальца, лицо или ключ безопасности — единственный путь внутрь. Каждое соединение — это TLS 1.3 с современными шифрами и HSTS. Учётные данные выдаются ограниченным токенам агентов через узкие конечные точки API и никогда не регистрируются в журнале. Даже наша поддержка с использованием ИИ не может видеть Ваши учётные данные — то же шифрование, которое скрывает Ваши секреты от нас, скрывает их и от наших инструментов поддержки.
Модель угроз
От чего мы защищаемся.
Каждая платформа учётных данных сталкивается с одинаковой поверхностью атаки. Вот как Clavitor разработан против каждой из них.
| Угроза | Как мы защищаемся | Результат |
|---|---|---|
| Фишинг учётных данных | Пользователи не знают своих паролей (32-байтный случайный, никогда не отображается). Расширение заполняет только при совпадении URL. Пользователь не может ввести то, чего не знает. | Структурно заблокировано |
| Фишинг OTP / 2FA | TOTP находится в хранилище, ограниченном реальным доменом. Неправильный домен — нет кода. Та же защита, что и для пароля. | Структурно заблокировано |
| Утечка сервера | Поля идентификации зашифрованы ключами, полученными от аппаратного ключа, которые мы никогда не храним. Поля учётных данных автоматически ротируются — утёкший открытый текст истекает в течение нескольких часов. | Ущерб ограничен |
| Скомпрометированный ИИ-агент | Каждый агент имеет ограниченный токен. Компрометация раскрывает только область действия агента — но не Ваше полное хранилище. | Радиус поражения ограничен |
| Вредоносное ПО на конечной точке | Хранилище удалённое, а не локальное. Токены сеанса ограничены по времени. Запросы WebAuthn привязаны к источнику — вредоносное ПО не может подписаться от имени пользователя. | Смягчено |
| Внутренняя атака | Поля идентификации математически недоступны для нас. Мы не смогли бы предоставить открытый текст по повестке. | Вне нашей досягаемости |
Доверяйте платформе, а не только криптографии.
Шифрование — лишь одна из трех гарантий. Две другие касаются того, что происходит, когда что-то выходит из строя — сервис или ваш собственный доступ к нему.
Отказоустойчивость — сервис продолжает работать
Мы спросили, что происходит, когда выходит из строя каждый уровень — облако, DNS, регистратор, электронная почта, наше собственное программное обеспечение. Архитектура спроектирована так, чтобы ответ всегда был одним и тем же: хранилище продолжает работать. Честный список угроз →
Восстановление — Вы остаетесь в системе
Потеряйте Ваш аппаратный ключ — и Вы всё равно сможете войти: через разделённый код знания с Вашей стороны, якорную точку восстановления с нашей стороны и звонок в Zoom с материалами для проверки, которые Вы выбрали. Никакого сброса по электронной почте, никакого SMS, никаких секретных вопросов. Как работает восстановление →
Читайте более подробные материалы.
Для технической аудитории: криптографические детали, описания моделей угроз и открытое приглашение найти то, что мы упустили.