savostin
@savostin
Еще один программист

Шифрование базы SQLite3

Приветствую!

В php у функции открытия базы SQLite3 есть параметр encryption_key.
В Си этого параметра нет.
Великий Google говорит, что шифрование в C/C++ и пр. делается сторонними, часто не бесплатными для коммерческого использования, библиотеками.

Вопросы:
1. Какой алгоритм используется в PHP и насколько хорошо шифруется? Понимаю, что можно посмотреть исходники PHP, но боюсь это выше моих возможностей понимания.
2. Можно ли зашифрованную в PHP базу открыть в C/C++ и как?
3. Правильно ли я понимаю, что шифрование своим алгоритмом возможно через create_function, или update_hook, или вообще vfs?
  • Вопрос задан
  • 7040 просмотров
Пригласить эксперта
Ответы на вопрос 3
Obukhoff
@Obukhoff
Программист С++
Поскольку на библиотеки деньги в нашей конторе выбить нереально, то реализовывал свой велосипед с шифрованием посредством vfs.
Использовал постраничное RCA шифрование. Ключ генерил на лету на основании кодовой фразы.
Внутри vfs шифрование осуществляется всех страниц, кроме первой. Т.к. к ней движок sqlite обращается очень часто для блокировки/разблокировки файла базы.
Потом уже дописывал исключение для журнальных файлов, мне их шифровать незачем.

Если руки не кривые — работы 2 дня + тесты автоматизировать под вашу задачу.
У меня БД не нагруженная и общая производительность приложения упала в пределах погрешностей измерения.

З.Ы. И еще — для детектирования что БД зашифрована на первой странице файла БД вставляю метку в неиспользуемую часть заголовка базы.
Ответ написан
jonie
@jonie
А что в исходниках php посмотреть ответы на вопросы нельзя чтоль?
Ответ написан
Obukhoff
@Obukhoff
Программист С++
С помощью функции вы сможете зашифровать только отдельные поля в БД.
Причём придется эту функцию вставлять во все запросы, использующие шифрованные поля. Не очень удобно.

Правда с шифрованием всей БД есть свои минусы:
— накладные расходы на шифрование всякой служебной информации (можно было бы и не делать)
— в случае повреждения БД всю базу можно выкинуть.

Но в моём случае эти минусы не существенны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы