LINUX.ORG.RU

Шифрование бэкапа

 , ,


0

3

Задача: шифровать бэкап.

Вариант 1. При бэкапе пользователь вводит пароль, пароль превращается в ключ, используется симметричное шифрование (AES).

Минус: пользователю нужно вводить ключ каждый раз при шифровании.

Вариант 2. Сохраняем пароль в конфигах на бэкап-машине.

Минус: любой, кто получит доступ к этой машине и увидит пароль, сможет расшифровать все предыдущие бэкапы.

Вариант 3.

1. Ввод или смена пароля.

1.1. Пользователь вводит пароль.

1.2. Генерируется пара RSA ключей, открытый ключ сохраняется в конфиге.

1.3. Закрытый ключ из 1.2 шифруется пользовательским паролем из 1.1 и сохраняется в конфиге.

2. Шифрование бэкапа.

2.1. Генерируется случайный AES-ключ.

2.2. Из конфига достаётся открытый ключ из 1.2 и им шифруется AES-ключ из 2.1.

2.3. Бэкап шифруется AES ключом из 2.1.

2.4. В результате сохраняется тройка: (зашифрованный AES ключ из 2.2; зашифрованный RSA ключ из 1.3; зашифрованный бэкап из 2.3).

3. Расшифровка бэкапа.

3.1. Пользователь вводит пароль.

3.2. С помощью пароля пользователя расшифровывается закрытый RSA-ключ из 1.3 (он хранится в бэкапе).

3.3. С помощью закрытого RSA-ключа расшифровывается AES-ключ из 2.1.

3.4. С помощью этого AES-ключа расшифровывается весь бэкап.

Минусов не вижу. Бэкапы делаются, шифруются, расшифровать может только тот, кто знает пароль из 1.1.

Схема достаточно сложная, возможно есть какие то неявные уязвимости из-за этого. Просьба прокомментировать. Может быть есть более простой путь, чтобы это всё сделать, я проще не придумал.

★★★★★

Последнее исправление: Legioner (всего исправлений: 1)

п 1.3 вы чем собираетесь шифровать ?

хранение паролей в обратимом виде ЗЛО.

проблема «любой, кто получит доступ к этой машине и увидит пароль, сможет расшифровать все предыдущие бэкапы.» не решена

MKuznetsov ★★★★★
()

encfs и бэкапить зашифрованое, тогда бэкап-машина может быть хоть в NSA.

anonymous
()

contact-less card (смартфон с nfc) с ключём. Надо расшифроавть - подносишь смартфон к компу - читается ключ и ура.

Если кто-то сопрёт комп - расшифроавть не сможет. Надо будет спереть твой смартфон ещё, что чуточку сложнее.

invy ★★★★★
()

А использовать gpg для этого нельзя?
На машине, где создается бэкап лежит только открытый ключ.
Расшифровать может только имеющий закрытую часть ключа.

Belkrr
()
Ответ на: комментарий от MKuznetsov

п 1.3 вы чем собираетесь шифровать ?

Результат п. 1.3 это зашифрованный алгоритмом AES закрытый ключ. Этот результат ничем не шифруется.

проблема «любой, кто получит доступ к этой машине и увидит пароль, сможет расшифровать все предыдущие бэкапы.» не решена

Почему? Где он увидит пароль? На машине хранится зашифрованный RSA-ключ, им нельзя воспользоваться без знания пароля из п. 1.1, а пароль на сервере не хранится.

Legioner ★★★★★
() автор топика

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

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

и какой режим шифрования? я надеюсь не дырвый CBC ? :)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 2)
Ответ на: комментарий от user_id_68054

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

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

и какой режим шифрования? я надеюсь не дырвый CBC ? :)

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

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

Результат п. 1.3 это зашифрованный алгоритмом AES закрытый ключ. Этот результат ничем не шифруется.

и что будет ключом при «шифровании алгоритмом AES закрытого ключа»??

ps/ ещу раз повторю - хранение паролей или приватных ключей в обратимом (зашифрованном) виде, а тем более в некоем конфиге - это не просто недочёт, это дыра, а вернее даже ДЫРИЩА. Вне зависимости от того чем вы там эти пароли шифровали.

pps/ не переизобретайте локально-извратный PKI, используйте имеющийся

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

и что будет ключом при «шифровании алгоритмом AES закрытого ключа»??

Ключом для чего? Я вроде все процедуры описал, там всё расписано, что для чего ключом является.

ps/ ещу раз повторю - хранение паролей или приватных ключей в обратимом (зашифрованном) виде, а тем более в некоем конфиге - это не просто недочёт, это дыра, а вернее даже ДЫРИЩА. Вне зависимости от того чем вы там эти пароли шифровали.

Что может сделать злоумышленник в этой схеме?

pps/ не переизобретайте локально-извратный PKI, используйте имеющийся

Что за имеющийся PKI?

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

Мне важно, чтобы хранитель бэкапов не мог их расшифровать (например бэкап в облаке хранится) и чтобы на машине не лежал ключ

атака на криптосистему бывает «пассивная» и «активная».

«пассивная» аттака — это когда злоумышленник ни как не изменяет НИ ГДЕ информацию. а работает только с её копией. и ни как себя не проявляет.

«активная» аттака — это когда злоумышленник для того чтобы добиться свлих целей — меняет байты (передаваемые байты или храняешиеся байты). вобщем как-то активно влияет на криптосистему.

не так давно Daniel-J-Bernstein (изобретатель алгоритма chacha20, и активный критик алгоритма AES) — обвинял FBI в том что FBI целенаправленно навязывает обществу стереотип, который заставляет общество думать будто бывают только «пассивные» атаки :-)

user_id_68054 ★★★★★
()

Зачем этот цирк, когда уже есть GPG? Шифруешь публичным ключом и сливаешь куда угодно. Расшифровать сможет только владелец приватного ключа, знающий от него пароль.

manntes-live ★★★
()
Ответ на: комментарий от manntes-live

Этот «цирк» нужен затем, чтобы не нужно было таскать файлы ключей, а можно было запомнить или записать пароль и расшифровать бэкап с помощью пароля.

GPG работает идентично, за исключением шифрования ключа.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

Что может сделать злоумышленник в этой схеме?

как минимум тупо и быстро сбрутфорсить пароль юзера.

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

MKuznetsov ★★★★★
()
Ответ на: комментарий от user_id_68054

Я правильно понимаю, что ты имеешь в виду атаку, когда злоумышленник подменяет открытый ключ для шифрования и нужно этот факт оперативно обнаружить, чтобы в «плохой» момент внезапно не обнаружить, что все последние бэкапы не расшифровываются? Ну видимо надо периодически пытаться их расшифровывать с другой машины, других вариантов тут не придумаешь.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от MKuznetsov

как минимум тупо и быстро сбрутфорсить пароль юзера.

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

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

Верно, в этом и есть её задача.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от manntes-live

Зачем таскать файлы ключей, когда для публичных ключей есть спецсервисы вроде https://pgp.mit.edu/ ? Или доступа к интернету вообще нет и не будет?

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

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

ды, зачем так усложнять..

я имею ввиду что FBI встроит тебе троян внутрь бекапа — через какое-нибудь там XOR-изменение какого-нибудь участка.

хотя хм.. с AES это так просто не прокатит... но если бэкап файл будет обчень большим то таки-может прокатить если вдруг в режиме CBC окажется повторяющийся блок..

короче это теоретическая хрень, которая вообще нереальна на практике :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от Legioner

Контроль сложности пароля это отдельный вопрос.

:-) Громкий хохот в зале, переходящий в повальную истерику :-)

любой «контроль сложности» кроме требования минимальной длины, снижает надёжность паролей и неипически ускоряет те-же брутфорсы; Это такая красивая провокация известных служб.

MKuznetsov ★★★★★
()

Минус: пользователю нужно вводить ключ каждый раз при шифровании.

Нет, это не минус. Либо кто-то жмот, либо лентяй. Наймите меня 50$/час, буду вводить пароли и запоминать.

Думаю, намёк ясен :)

gh0stwizard ★★★★★
()
Ответ на: комментарий от Legioner

GPG работает идентично, за исключением шифрования ключа

А можно про это исключение подробнее? IMHO он так и работает добуквенно.

DonkeyHot ★★★★★
()
Ответ на: комментарий от Legioner

не построили ещё столько компьютеров, чтобы быстро брутфорсить нормальные пароли

большое художественное отступление, просто к слову пришлось :)

уже построили..пример, по вашей схеме:

инф.ёмкость символа пароля 95 вариантов, пароль 8 символов, все символы независимо случайны: общая ёмкость 95^8 (~=2^7^8=2^56, округляя в большую сторону)

на современном компе, реально перебирать 2^12 вариантов/сек из вашей схемы. ..то есть за 2^16 сек = 2^28 вариантов/сутки ; на сплошной перебор всего массива за день потребуется 2^28 компов. или за месяц всего-то 9 млн.шт...построили

если учесть что IRL символы пароля не являются независимыми величинами, то какой-нить наследник john-the-ripper с вероятностной/семантической базой вполне упихает аппаратные требования «найти пароль за сутки с вероятностью 99%» в возможности бот-нета; кстати с john и на упомянутом отдельно взятом компе вероятность подобрать пароль за месяц больше 50%.

не надо недооценивать брут-форсы

не надо хранить пароли/ключи в обратимом виде

шифрование/подпись коротких блоков - отдельная песня. как только вводная часть задачи 'дешифровать/зашифровать+проверить' влезает в страницу или может пачкой вкачаться в видюху/спец.процессор переборы становятся очень-очень быстрыми.

придумываемые и запоминаемые юзерами пароли однозначно самая уязвимая часть криптосистем

бот-неты и иже с ними клуд-компутинг/фарминг дикая головная боль некоторых служб

MKuznetsov ★★★★★
()

Может быть есть более простой путь

man gpg.

У меня была некая проблема с инкрементальным бекапом, я для него сделал случайный симметричный пароль, и сохранил его в основном бекапе.

emulek
()
Ответ на: комментарий от Legioner

чтобы не нужно было таскать файлы ключей

открой для себя сервер ключей.

и да, я шифрую сразу пятью ключами, для пяти реципиентов.

emulek
()
Ответ на: комментарий от Legioner

важен закрытый ключ,

ну у меня на каждой системе свой закрытый ключ. Зачем что-то куда-то таскать?

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.