Идея отказа от текстовых паролей далеко не нова, более того, мы уже можем видеть, как мало-помалу она внедряется в повседневность. Примером тому является использование аппаратных и программных токенов для входа в учетную запись тех либо иных сервисов. Ну, это понятно, а как насчет беспарольной защиты файлов – с использованием шифрования, но без паролей? Да, такое тоже вполне возможно.
Например, использование для предотвращения доступа к данным утилит-шифровальщиков, в основе работы которых положена схема Шамира.
Что такое схема Шамира
Схема разделения секрета Шамира – это способ защиты секрета, предполагающий хранение ключей к нему у разных людей или программ. Тем не менее, он может быть взят на вооружение одним человеком. Суть метода заключается в разделении секрета, в данном случае файла, на определенное количество зашифрованных фрагментов без использования пароля, которые затем распределяются между разными устройствами.
Ни один из этих фрагментов не может быть прочитан, для этого потребуется соединить воедино исключительно все части, причем ввод пароля при этом не нужен – вместо него необходимо знать места хранения фрагментов. Данный способ неудобен для краткосрочного и привлекателен для долговременного хранения секретной информации прежде всего тем, что человеку не нужно запоминать и где-то отдельно хранить пароль.
Крестраж
А теперь рассмотрим, как все это работает на практике.
Для разделения файла, для примера взят обычный текстовый secret.txt, мы будем юзать маленькую консольную утилиту horcrux, использующую шифрование AES в режиме OFB и криптографическую функцию crypto/rand Go stdlib.
Скачайте архив с инструментом для Windows со странички разработчика github.com/jesseduffield/horcrux и распакуйте в отдельную папку.
В нее же закиньте разделяемый файл. Необязательно, чтобы исполняемый и разделяемый файлы находились в одном каталоге, просто так будет удобнее.
В нашем примере файлы помещены в папку Test на диске D.
Запустите PowerShell и перейдите командой “cd путь” в расположение horcrux.exe, а затем выполните следующего вида команду:
.horcrux.exe split secret.txt
Утилита спросит, на сколько частей (крестражей) вы хотите разбить файл. Укажите любое число от 2 до 99 и нажмите Enter. За первым вопросом последует второй – сколько частей потребуется для реконструирования исходного файла.
На втором этапе также нужно указать целое число от 2 до 99, но оно должно быть не больше, чем количество крестражей, только меньше или равно. Нажмите ввод и файл будет разделен.
Вот и все волшебство, осталось только спрятать зашифрованные крестражи в разных местах, не забыв и о самой утилите, которая неизбежно понадобится для восстановления исходного файла.
Вот так выглядит зашифрованный текстовый файл изнутри.
Когда придет время собрать файл воедино, скопируйте крестражи в папку с исполняемым файлом утилиты, перейдите в каталог в PowerShell и выполните команду реконструирования:
.horcrux.exe bind D:Test
Файл будет восстановлен.
При описании процесса для упрощения восприятия информации мы использовали определения «части» и «фрагменты», однако на самом деле создаваемые утилитой крестражи таковыми не являются.
Каждая, так сказать, часть содержит полный набор исходных данных, на части делится лишь ключ дешифрования.
Если вы откроете свойства крестражей, то увидите, что размер каждого из них немного больше размера исходного файла.
Насколько безопасен используемый horcrux метод
С точки зрения специалистов по криптографии, использование AES-шифрования в режиме OFB, при котором блочный шифр превращается в синхронный потоковый шифр, не является идеальным. При наличии фрагмента открытого текста у злоумышленника позволяет последнему подменить биты в шифротексте на те же биты в открытом тексте, не располагая ключом шифрования. Поэтому рассматривать данный способ защиты данных как основной и единственный, пожалуй, все же не стоит.