Одним тихим зимним вечером захотелось мне экспортировать данные из одного популярного органайзера, которым я пользовался достаточно долго. Такая необходимость была продиктована желанием конвертировать невыполненные задания в удобный формат для переноса в другой органайзер. Поскольку я догадывался, что все данные лежат в SQLite базе, то я решил взглянуть на ее содержимое непосредственно 🙂
Каково же было мое удивление, когда я добрался до заветной БД и увидел нечто подобное:
1 2 3 4 |
SELECT `name` FROM "tags" LIMIT 1; Result: R19HAA== |
Все текстовые поля в БД были зашифрованы.
Пересмотрев все доступные настройки приложения я убедился в том, что никаких паролей на БД у меня не установлено и, по логике вещей БД должна быть в незащищенном виде. Но разработчики данного продукта решили по-другому. И скорее всего тут ключевую роль сыграла не забота о безопасности персональных данных конечных пользователей, а ограничение доступа к данным для приложений сторонних разработчиков.
«… Что же это за хитрый алгоритм шифрования используется ?!» — подумал я, заварил чай и приступил к изучению алгоритма.
Даже смотря на полученный хеш невооруженным взглядом можно заметить, что перед нами бинарные данные закодированные в base64. То есть имеем следующую картину:
Идем дальше. После преобразования base64 -> hex имеем:
№: | 0 | 1 | 2 | 3 |
Plain text: | P | H | P | EOL |
Encoded: | 0x47 | 0x5F | 0x47 | 0x00 |
Байты в 0 и 2 в закодированной последовательности совпадают и их значение не зависит от контекста, следовательно никакой нормальный алгоритм шифрования не используется, а идет посимвольное преобразование исходного текста 🙂
Собственно защита — курам на смех, ведь уже на данном этапе можно реализовать «интерпретатор» закодированной последовательности составив таблицу соответствия, и раскодировать все текстовые данные содержащиеся в БД (Что я успешно и сделал)
Это от части подтверждает мою гипотезу высказанную вначале данной заметки:
Шифрование текстовых полей используется с целью ограничения доступа к БД для приложений сторонних разработчиков.Подводя итог хочу отметить — не верьте красивым надписям типа «Ваши данные будут надежно защищены», обеспечивайте безопасность ваших личных данных самостоятельно.