Введение

Venti — это сетевая система хранения, которая постоянно хранит блоки данных. 160-битный SHA-1 хеш данных (в Venti называемый score) служит адресом данных. Это обеспечивает политику записи один раз, поскольку невозможно найти другой блок данных с тем же адресом: адреса множественных записей одних и тех же данных совпадают, поэтому дубликаты данных легко идентифицируются, и блок данных хранится только один раз. Блоки данных нельзя удалять, что делает систему идеальной для постоянного хранения или резервного копирования. Venti обычно используется вместе с Fossil для создания файловой системы с постоянными снимками состояния.

История

Venti был разработан и реализован Шоном Куинланом и Шоном Дорвардом в Bell Labs. Он вошел в состав дистрибутива Plan 9 в 2002 году. Разработка была продолжена Рассом Коксом, который переписал большую часть сервера, создал библиотеку для генерации структур данных (файлов, каталогов и метаданных) для хранения в Venti и внедрил оптимизации. Venti доступен как в дистрибутиве Plan 9, так и для многих Unix-подобных операционных систем в составе проекта Plan 9 from User Space. Venti также включен в Inferno с соответствующими модулями для доступа к нему. Существует набор программ на Go для создания собственных серверов Venti, включая примеры использования различных типов серверной памяти.

Подробности

Венти — это демон пользовательского пространства. Клиенты подключаются к Венти по протоколу TCP.

Колизии с хэшем

Основным принципом теории информации является принцип Дирихле, который гласит, что если множество A содержит больше элементов, чем множество B, то для любой функции, отображающей A в B, найдутся элементы B, связанные с более чем одним элементом множества A. В случае Venti, множество возможных хэшей SHA 1 очевидно меньше, чем множество всех возможных блоков, которые могут быть сохранены в файловой системе, и, следовательно, возможно коллизия хэшей. Вероятность случайной коллизии хэша в 160-битном хэше очень мала, даже для эксабайтов данных. Однако исторически многие хеш-функции становятся все более уязвимыми к злонамеренным коллизиям хэшей из-за как криптографических, так и вычислительных достижений. Venti не решает проблему коллизий хэшей; на данный момент вычислительно все еще невозможно найти коллизии в SHA 1, но в будущем может возникнуть необходимость перейти к другой хеш-функции. 23 февраля 2017 года Google объявила об атаке SHAttered, в ходе которой были сгенерированы два различных PDF-файла с одинаковым хэшем SHA 1 примерно за 263,1 вычислений SHA 1.