Криптографически безопасное резервное копирование - PullRequest
1 голос
/ 23 ноября 2010

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

Я подумал об альтернативе, которая работает следующим образом. Существует три дерева: дерево файлов, состоящее из данных, которые я хочу сохранить, дерево резервных копий, содержащее копию дерева файлов в данный момент времени, и дерево хешей, которое содержит хэши файлов и хэши метаданных дерева резервных копий. Хеш всего хеш-дерева также сохраняется. Перед резервным копированием проверяется хеш дерева хешей. Ошибка здесь делает недействительными все резервные копии данных. После успешной проверки форма хэш-дерева сравнивается с формой дерева резервных копий, и хэши метаданных проверяются, чтобы убедиться, что в дереве резервных копий метаданные и форма соответствуют друг другу. Если это не так, отдельные виновники могут быть перечислены. После этого выполняется обход резервного копирования rsync. Всякий раз, когда rsync обновляет файл, его новый хэш и хеш метаданных вычисляются и вставляются в дерево хешей. Всякий раз, когда rsync удаляет файл, этот файл удаляется из дерева хешей. В конце хеш дерева хешей вычисляется и сохраняется.

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

Мой вопрос: есть ли разумная реализация такой схемы резервного копирования? Мои поиски показывают, что единственные доступные схемы резервного копирования либо выполняют полное, либо дифференциальное резервное копирование (например, на основе tar) или не обеспечивают гарантию криптографической корректности (rsync).

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

Ответы [ 4 ]

2 голосов
/ 23 ноября 2010

То, о чем вы говорите, очень похоже на Git .Я думаю, что это в значительной степени сделает то, что вы описываете.Просто выполните процесс «резервного копирования» как git commit.Затем вы можете восстановить любую предыдущую версию с помощью git checkout.

. Это удивительно эффективно для хранения и чрезвычайно для передачи контента, что, вероятно, сэкономит вам много времени на резервных копиях.В качестве бонуса, он бесплатный, портативный и уже отлаженный!

0 голосов
/ 24 апреля 2016

Git-Annex - правильное решение этой проблемы с учетом доступных инструментов. Это расширение для git, которое обеспечивает надежную поддержку файлов произвольно большого размера, автоматически синхронизирует хранилища данных, имеет дополнительный графический интерфейс пользователя, отслеживает, сколько у вас есть резервных копий и какие именно файлы хранятся, и позволяет устанавливать правила как он должен управлять разным контентом. Вы также можете настроить, какие криптографические хеши используются для проверки целостности содержимого.

В случае необходимости резервного копирования дисков, git-annex обеспечивает совместимость с bup, который имеет больше функций, ориентированных на тех, кто ищет регулярные резервные копии целых систем.

0 голосов
/ 23 ноября 2010

Если бы мне пришлось решить проблему, я бы взял RAID-массив (для предотвращения повреждения) дисков, которые используют встроенное шифрование AES, а затем использовал бы любой метод резервного копирования, к которому я привык,

0 голосов
/ 23 ноября 2010

Это звучит почти точно так же, как работает система хранения Mercurial .«Команда rsync» будет реализована с использованием Mercurial push, что удивительно эффективно для сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...