О сайте

SafePass создан для хранения секретной информации — паролей, счетов, доступов к сайтам, пин-кодов, паспортных данных и любых других важных секретных сообщений. Все это хранится в зашифрованных заметках. Заметка может содержать форматированный html текст объемом до 20 000 символов. SafePass использует гибридную систему шифрования данных, совмещающую преимущества криптосистемы RSA с открытым ключом с производительностью симметричной криптосистемы AES. Схема и описание работы этой гибридной системы представлена ниже.

Процесс шифрования

Шифрование начинается с расшифровки RSA ключа (2048 бит), зашифрованного алгоритмом AES, ключом для которого выступает хэшированный мастер-пароль пользователя (256 бит). Далее генерируются случайные AES ключ (128 бит) и вектор инициализации (128 бит), которыми шифруется заметка алгоритмом AES-256. Для каждой заметки создаются свои уникальные случайные криптографически стойкие ключ и вектор. После этого ключ и вектор инициализации шифруются публичным ключом RSA и сохраняются. Зашифрованная заметка хэшируется (256 бит) и хэш сохраняется. RSA ключи, AES ключ и вектор инициализации — все находятся в разных местах гибридной системы, а мастер-пароль пользователя находится на его собственной машине, поэтому злоумышленнику, чтобы прочитать любую заметку, надо получить доступ ко всем блокам системы. Если он получит доступ только к одному блоку или даже трем из четырех, то не сможет прочитать ровным счетом ничего. Нигде в системе ключи не хранятся в открытом виде, только в зашифрованном.

Алгоритм шифрования AES-256 настолько сильный, что его используют только военные, им можно хранить данные вплоть до уровня "государственной тайны". До сих пор не было ни одной попытки взлома этого алгоритма. Миллиард суперкомпьютеров, вычисляющих безостановочно перебор паролей для этого алгоритма, будут считать 234 года, чтобы обработать всего лишь 0,1% от всех возможных вариантов.

Процесс расшифровки

Расшифровка начинается с проверки хэша зашифрованной заметки, чтобы исключить малейшее ее изменение (атака с подменой нового шифротекста). Далее расшифровывается приватный RSA ключ, зашифрованный алгоритмом AES, ключом для которого выступает хэшированный мастер-пароль пользователя. После этого расшифровываются приватным ключом RSA сохраненные ключ и вектор инициализации AES и при помощи их расшифровывается заметка алгоритмом AES. Процесс расшифровки происходит каждый раз при чтении, редактировании, обновлении и даже удалении заметки.

RSA ключи и мастер-пароль

Для создания пары ключей (приватного и публичного) используется мастер-пароль пользователя. По стандарту формирования ключа на основе пароля (PKCS5 v2 PBKDF2) к нему добавляется секретная константа (128 бит), он хэшируется 600 000 раз алгоритмом SHA-256 (рекомендация OWASP), и отправляется на клиентскую машину пользователя. Этим хэшированным мастер-паролем зашифровывается приватный ключ RSA алгортимом AES, который сохраняется в закрытом хранилище. Публичный ключ дешифруется алгоритмом AES из приватного ключа, публичный ключ нигде не хранится. Каждому пользователю принадлежит своя уникальная пара ключей и уникальный мастер-пароль для их расшифровки.

Нулевое разглашение

Владельцы и администраторы сайта SafePass не могут прочитать ни одной заметки пользователя, так как основной ключ (мастер-пароль) от всей гибридной криптосистемы находится на клиентской машине пользователя. В открытом виде мастер-пароль не хранится нигде, поэтому если пользователь его забудет, то восстановить его будет невозможно. Соответственно, и расшифровать заметки пользователя тоже будет невозможно.

Протоколирование

Дополнительно осуществляется запись всех действий пользователя, чтобы увидеть последствия, если злоумышленник получит доступ к аккаунту пользователя. Удалить или отключить логирование невозможно. Записываются все действия с заметками (создание, обновление, удаление), действия с ключами RSA, мастер-паролем, обычным паролем к аккаунту и проверочными письмами на email.

XSS-защита

В системе присутствует защита от кросс-сайтовых атак: XSS и SCRF. Подменить шифруемые и расшифровываемые данные невозможно.

SSL/TLS протокол

Помимо всех вышеописанных защит, сверху накладывается дополнительный уровень защищенности в виде SSL/TLS протокола, что исключает перехват любого трафика и его чтение (атака посредника). Работа по открытому протоколу HTTP на сайте невозможна.