Venti: Система постоянного хранения данных с использованием SHA-1 хэшей
Venti (software)
Venti: надежное хранилище данных с постоянным сохранением блоков. Уникальные SHA-1 хэши (score) обеспечивают защиту от дубликатов и удаление. Идеально для бэкапов!
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Venti — это сетевая система хранения, которая постоянно хранит блоки данных. 160-битный SHA-1 хеш данных (в Venti называемый score) служит адресом данных. Это обеспечивает политику записи один раз, поскольку невозможно найти другой блок данных с тем же адресом: адреса множественных записей одних и тех же данных совпадают, поэтому дубликаты данных легко идентифицируются, и блок данных хранится только один раз. Блоки данных нельзя удалять, что делает систему идеальной для постоянного хранения или резервного копирования. Venti обычно используется вместе с Fossil для создания файловой системы с постоянными снимками состояния.
Venti is a network storage system that permanently stores data blocks. A 160 bit SHA 1 hash of the data (called score by Venti) acts as the address of the data. This enforces a write once policy since no other data block can be found with the same address: the addresses of multiple writes of the same data are identical, so it is highly likely that duplicate data is easily identified and the data block is stored only once. Data blocks cannot be removed, making it ideal for permanent or backup storage. Venti is typically used with Fossil to provide a file system with permanent snapshots.
История
Venti был разработан и реализован Шоном Куинланом и Шоном Дорвардом в Bell Labs. Он вошел в состав дистрибутива Plan 9 в 2002 году. Разработка была продолжена Рассом Коксом, который переписал большую часть сервера, создал библиотеку для генерации структур данных (файлов, каталогов и метаданных) для хранения в Venti и внедрил оптимизации. Venti доступен как в дистрибутиве Plan 9, так и для многих Unix-подобных операционных систем в составе проекта Plan 9 from User Space. Venti также включен в Inferno с соответствующими модулями для доступа к нему. Существует набор программ на Go для создания собственных серверов Venti, включая примеры использования различных типов серверной памяти.
Venti was designed and implemented by Sean Quinlan and Sean Dorward at Bell Labs. It appeared in the Plan 9 distribution in 2002. Development has been continued by Russ Cox who has reimplemented most of the server, written a library for creating datastructures (files, directories and meta data) to store in Venti and implemented optimizations. Venti is available both in the Plan 9 distribution and for many Unix like operating systems as part of Plan 9 from User Space. Venti is included as part of Inferno with accompanying modules for access. There is a Go set of programs to build your own Venti servers. Included are examples using different kinds of backend storage.
Подробности
Венти — это демон пользовательского пространства. Клиенты подключаются к Венти по протоколу TCP.
Venti is a user space daemon. Clients connect to Venti over 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.
A basic principle of information theory is the pigeonhole principle, which states that if set A contains more values than set B, then for any function that maps A to B there will be members of B that are associated with more than one member of set A. In the case of Venti, the set of possible SHA 1 hashes is obviously smaller than the set of all possible blocks that could be stored in the filesystem, and thus a hash collision is possible. The risk of accidental hash collision in a 160 bit hash is very small, even for exabytes of data. Historically, however, many hash functions become increasingly vulnerable to malicious hash collisions due to both cryptographic and computational advances. Venti does not address the issue of hash collisions; as of this time, it is still computationally infeasible to find collisions in SHA 1, but it may become necessary for Venti to switch to a different hash function at some point in the future. On 23 February 2017, Google announced the SHAttered attack, in which they generated two different PDF files with the same SHA 1 hash in roughly 263.1 SHA 1 evaluations.