CottonПотоковый AES-GCM
Потоковый AES-GCM

Потоковое AES-GCM шифрование файлов на сервере.

Cotton шифрует файлы в основном серверном конвейере хранения. Стандартный AES-GCM, отдельные ключи файлов и проверка каждого чанка защищают сохранённые данные без загрузки целого файла в память и без отдельного небезопасного режима ради скорости.

AES-GCMТеги на чанкОбёрнутые ключи файловБуферы конвейера

Шифрование на уровне хранилища

Cotton шифрует хранимые данные файлов в серверном конвейере хранения. Этот слой всегда часть модели хранилища и отделён от браузерной E2E-политики папок, которая описана на отдельной странице.

Зачем это владельцу self-hosted сервера

Шифрование работает на уровне приложения, поэтому в хранилище и его резервные копии попадают уже зашифрованные чанки. Это дополняет защиту диска и контейнера: оператору не приходится выбирать между обычной работой с файлами и шифрованием сохранённых данных.

Форма контейнера по учебнику

Зашифрованный поток использует модель в стиле контейнера с ключевым материалом на уровне файла и аутентификацией на уровне чанков. Каждый чанк аутентифицируется как часть потока, вместо того чтобы превращать огромный файл в один монолитный криптообъект.

  • Обёрнутые ключи на файл изолируют контент файла.
  • Теги аутентификации на чанк помогают ловить подмену блоков, дублирование, пропуски и порчу.
  • 12-байтный nonce собирается из 4-байтного префикса файла и 8-байтного счётчика чанков.
  • Аутентифицированные дополнительные данные связывают ключ и метаданные чанка с правилами контейнера.

Что происходит при записи и чтении файла

Файл проходит через ограниченный потоковый буфер и делится на чанки. Для файла используется отдельный ключевой материал, а каждый чанк получает собственный nonce и тег аутентификации. При чтении тег проверяется до того, как расшифрованным данным можно доверять.

  • Большой файл не собирается целиком в оперативной памяти.
  • Повреждение или подмена отдельного чанка приводит к ошибке проверки, а не к тихой выдаче изменённых байтов.
  • Правила nonce и AAD связывают чанк с его местом в зашифрованном контейнере.
  • Обычные и диапазонные чтения используют тот же формат хранения, а не отдельную незашифрованную копию.

Почему AES-GCM

AES-GCM — широко применяемый режим аутентифицированного шифрования: он защищает конфиденциальность и целостность, когда дисциплина ключей/nonce сделана нормально. Он аппаратно ускоряется на распространённых платформах и доступен через стандартную криптографию рантайма — практичный дефолт для кроссплатформенного self-hosted файлового облака.

Без театра самодельных шифров

Cotton не просит пользователей доверять новому алгоритму шифрования. Заявление скромнее и сильнее: стандартный AES-GCM внутри формата хранения, который понимает огромные файлы, разбиение на чанки, чтение по диапазонам, ограниченную память и необходимость аутентифицировать каждый кусок, прежде чем ему доверять.

Производительность конвейера

Путь шифрования построен на потоковых буферах и примитивах .NET с низкой нагрузкой на аллокацию. Локальные бенчмарк-базисы показывают, что у слоя крипты достаточно запаса, чтобы видимым лимитом обычно были диск, сеть или сжатие.

Позиция по тестированию

Криптомодуль покрыт тестами на золотые векторы, детерминированный формат, подмену, усечение, дубликаты чанков, пропуски чанков, строгую длину, pipe, отмену и производительность. Это всё ещё не независимый аудит, поэтому публичный маркетинг говорит, что есть, а не занимает доверие взаймы.

Как это связано с E2E

Клиентски зашифрованные папки — дополнительная фича. Браузер шифрует выбранные файлы до загрузки и хранит зашифрованные отображаемые метаданные, а сервер всё равно сохраняет получившуюся полезную нагрузку через обычный чанковый конвейер хранения.

Что этот слой защищает, а что нет

Серверное AES-GCM защищает сохранённые чанки и позволяет обнаруживать их подмену или повреждение. Оно не скрывает открытый текст от работающего приложения Cotton: сервер должен обработать обычную загрузку до записи и расшифровать обычный файл при чтении. Если содержимое не должен видеть даже сервер, нужна отдельная E2E-папка.

Что проверить перед публикацией сервера

Прикладное шифрование не отменяет обычную эксплуатационную безопасность. Источник мастер-ключа, доступ к PostgreSQL и постоянному хранилищу, TLS, обновления, резервные копии и тест восстановления остаются ответственностью владельца сервера.

  • Храните ключевой материал отдельно от копии данных, которую он защищает.
  • Проверяйте восстановление на отдельном экземпляре, а не только факт создания бэкапа.
  • Не выдавайте контейнеру лишние привилегии и доступ к Docker socket.
  • Используйте админскую проверку Cotton как список сигналов, а не как замену харденингу хоста.

Пруф пути шифрования

Публичное заявление: потоковый AES-GCM на слое хранилища с обёрнутыми ключами на файл, тегами аутентификации на чанк, дисциплиной nonce/AAD, ограниченными буферами и тестами вокруг формата контейнера. Это фича конвейера хранения, а не общее заявление про E2E.

Шифрование остаётся включённым

Cotton может держать шифрование включённым, потому что шифрование — в основном пути, а реализация намеренно консервативна. Продукту не нужна отдельная небезопасная скоростная полоса для обычной файловой работы.

Что шифрование хранилища оставляет видимым

Шифрование хранилища всё ещё оставляет серверную обработку и часть метаданных видимыми для сервера. Для выбранного контента, который должен быть непрозрачным до загрузки, используйте клиентски зашифрованные папки.

Вопросы

Прямые ответы

Потоковый AES-GCM — это то же самое, что только браузерное клиентское шифрование?

Нет. Потоковый AES-GCM — конвейер шифрования хранилища Cotton. Поверхность E2E — отдельная фича клиентски зашифрованных папок/файлов, где браузерное хранилище шифрует выбранные загрузки до сервера.

Cotton использует свой алгоритм шифрования?

Нет. Cotton использует AES-GCM через стандартные криптографические примитивы. Cotton-специфичная часть — контейнер хранения файлов: обёрнутые ключи на файл, теги аутентификации чанков, раскладка nonce, AAD, потоковые буферы и тесты.

Почему не сделать шифрование опциональным?

Цель продукта — шифрование как позиция хранилища по умолчанию. Работа над производительностью нужна, чтобы операторы не выключали безопасность ради скорости.

Шифрование требует загрузить весь файл в память?

Нет. Путь хранения построен на потоковых буферах и работе на чанк, поэтому шифрование остаётся в пути записи без превращения больших файлов в полнофайловые события в памяти.

Что произойдёт, если зашифрованный чанк повредится?

AES-GCM проверяет тег аутентификации чанка. Повреждённые или подменённые данные не должны молча выдаваться как корректный файл: проверка завершится ошибкой, которую нужно расследовать и устранять восстановлением из проверенной копии.

Нужно ли дополнительно защищать диск и сам сервер?

Да. Прикладное шифрование Cotton защищает сохранённые данные, но не заменяет TLS, права доступа, обновления, изоляцию контейнера, защиту PostgreSQL, хранение ключей и резервные копии.

Это значит, что у Cotton был аудит безопасности?

Нет. Точное заявление — инженерные свидетельства внутри проекта: стандартный AES-GCM, явные правила контейнера, золотые векторы, тесты на подмену и покрытие бенчмарками. Сторонний аудит надо заявлять только после того, как он случился.