Если вы думаете, что возможность установки пароля на вход в какую-либо программу защищает ваши данные, то вы очень заблуждаетесь. Есть исключения и данные реально шифруются, но в основном пароли ненадолго останавливают желающего получить доступ к вашей (казалось бы конфиденциальной) информации.
Идея этой простой демонстрации мне пришла в голову, когда из-за ограничений iBank я не смог экспортировать данные в Numbers для анализа и мне пришлось работать с базой SQLite3 напрямую, а не через сам iBank.
Итак, у меня есть очень секретная финансовая информация, которую я доверил iBank:
Я знаю, что iBank можно закрыть паролем, поэтому ставлю длинный и сложный пароль:
Выхожу из iBank и иду спокойно заниматься своими делами, ведь мои данные надёжно защищены:
В это время к моему Mac’у подходит злоумышленник (это буду я же — не правда ли, это похоже на шизофрению). Даже если Mac заблокирован, но на нём не задействован FileVault, то процесс удлинится только на короткое время.
Запускает Terminal.app и выполняет несколько команд (для этого нужно лишь немного знать SQL):
$ sqlite3 topsecret.ibank/accountsData.ibank sqlite> SELECT ZACCOUNT.Z_PK AS AccountNumber, ...> ZACCOUNT.ZNAME AS Name, ...> ZACCOUNT.ZTOTALBALANCE AS Balance, ...> ZCURRENCY.ZNAME AS Currency ...> FROM ZACCOUNT INNER JOIN ZCURRENCY ON ZACCOUNT.ZCURRENCY = ZCURRENCY.Z_PK ...> WHERE ZACCOUNT.ZTYPE is not null; 74|Наличные|-149990|Ukrainian Hryvnia sqlite> SELECT ZTRANSACTION.ZTITLE, ZTRANSACTION.ZNOTE, ZLINEITEM.ZAMOUNT ...> FROM ZTRANSACTION INNER JOIN ZLINEITEM ON ZTRANSACTION.Z_PK = ZLINEITEM.ZTRANSACTION ...> WHERE ZLINEITEM.ZACCOUNT=74; Balance Adjust||10 Очень секретная транзакция|Нельзя, чтобы кто-то увидел|-150000
За несколько минут злоумышленник узнал всю информацию по состоянию счетов и все транзакции.
Если злоумышленник ленив и не знает SQL, то он может скопировать файл topsecret.ibank/accountsData.ibank, потом создать базу iBank без пароля и подставить украденный файл. iBank даже не подумает запросить пароль.
Такое впечатление, что разработчики iBank рассчитывают на очень честных людей. Я вспомнил CashOrganizer, в котором подобным способом можно было получить список транзакций, но вот суммы без знания пароля были недоступны. Сомневаюсь, что там стояла сложная защита, но это препятствие хоть слегка, но усложняло доступ к данным.
Вывод прост. Если вы беспокоитесь за свои данные, то используйте шифрование FileVault или хотя бы помещайте конфиденциальную информацию в запароленые и закриптованые контейнеры SparseBundle Image, это можно проделать даже ничего не зная о Terminal.app — я описывал процесс в статье «Работа с зашифрованными образами с помощью Knox (за деньги) и без него (бесплатно)».
И не забывайте, что быть параноиком полезно для ваших данных.
P.S. Если вы хотите поработать с базами SQLite без терминала, то обратите внимание на Navicat for SQLite (есть бесплатная Lite-версия для некоммерческого использования) — на мой взгляд она гораздо удобнее и лучше, чем Base и SQLiteManager.