Что такое "FileVault 2"? Это усовершенствованная версия "FileVault 1". Спасибо, Капитан Очевидность.

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

Что произойдёт, если ноутбук украдут?

Самый простой случай - вор сразу же переформатирует диск и поставит чистую версию операционной системы. Останется купить новый ноутбук, восстановиться из Time Machine и спокойно продолжить работу. Этот сценарий характерен для умного вора, который знает о функции "Find My Mac" и о системе Pray.

Но есть другой случай - вор или глуп, или любопытен. Если глуп, то начнёт пользоваться ноутбуком, не трогая систему. Недавняя история поимки такого вора описана в статье "Why you don't steal from a hacker". Всё закончилось плачевно для вора и отлично для владельца ноутбука.

Если вор любопытен и умён, то сразу же отключит сетевые интерфейсы, чтобы даже случайно система не вышла в Интернет, и начнёт изучать, чем бы можно поживиться.

Начнёт изучать документы, ключи доступа, попробует добраться до Keychain, посмотрит историю команд в shell и возможно наткнётся на пароль (в моей практике был случай, когда очень быстрый коллега в сессии излишне любопытного пользователя вбивал пароль администратора, но вбил не в поле запроса пароля, а просто в shell, и пароль администратора попал в .history). Пароль в клиническом случае может быть единым для системы и для базы 1Password. Можно дальше не продолжать. А дальше - или проникновение, или шантаж.

Надеюсь, вы не думаете, что запрос пароля при входе в систему кого-то остановит? Firmware Password (по крайней мере раньше) сбрасывался фокусом с вынимаем одной из нескольких планок памяти, а затем очисткой PRAM. Потом - single user mode, пара команд, и пароль изменён. Если же не хочется возиться с Firmware Password, то диск вынимается из ноутбука, подключается к другому компьютеру и доступ ко всем данным получен.

Для защиты от описанной ситуаций был реализован FileVault. В первой версии пользовательский домашний каталог помещался в зашифрованный контейнер (sparse bundle image), ключом к которому служил пользовательский пароль. Не зная пароля, контейнер невозможно было открыть. Не нужно исключать возможность угадывания пароля, но если пароль был сложным, то данные были в полной безопасности.

За безопасность нужно платить. Для того, чтобы сделать резервную копию данных в Time Machine, нужно было выйти из учётной записи. Сделать выборочное восстановление через интерфейс Time Machine было нельзя. Включение шифрования ухудшало производительность файловых операций порой на 50%. Были и другие мелкие сложности.

В OS X Lion вошла улучшенная версия - FileVault 2, система шифрования полного диска, использующая алгоритм XTS-AES 128.

В процессе изучения вопроса я обращался к статьям MacFixIt "About FileVault 2 in OS X 10.7 Lion" и ArsTechnica "File system changes in Lion".

Желающие разобраться с математическими моделями могут прочитать документ "IEEE P1619TM/D16 Standard for Cryptographic Protection of Data on Block-Oriented Storage Devices" и "Не такой уж ты и страшный, XTS-AES".

Незашифрованными остаются раздел с EFI (интересующихся процессом обычной загрузки отсылаю к статье "Процесс загрузки Apple Mac Intel") и Recovery HD:

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *160.0 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:          Apple_CoreStorage                         159.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
  1. После инициализации "железа" EFI находит Recovery HD и передаёт управление загрузчику /System/Library/CoreServices/boot.efi, находящемуся на этом разделе.
  2. У загрузчика есть два варианта - запустить EfiLoginUI из com.apple.boot.x и показать стартовый экран с запросом пароля входа, или же, если была нажата комбинация Option-R - оболочку восстановления системы из com.apple.recovery.boot.
  3. Ключи для расшифровки диска хранится в файле EncryptedRoot.plist.wipekey в каталоге /com.apple.boot.x/System/Library/Caches/com.apple.corestorage. Пользовательский пароль расшифровывает ключи к диску, находящийся в этом файле. Дальше они хранится в памяти, расшифровка содержимого диска производится "на лету". Каждый раз при изменении пользовательского пароля, добавлении нового пользователя и подобных операциях EncryptedRoot.plist.wipekey перегенерируется.

FileVault работает и для пользователей, входящих через OpenDirectory - их аттрибуты доступа кешируются на случай отсутствия соединения с сервером каталогов.

Производительность дисковых операций при включенном FileVault 2 согласно тестам Anandtech ухудшается не более, чем на 20-30%, что вполне приемлемо. Однако стоит учитывать, что есть зависимость от процессора и диска. Новые процессоры Intel используют наборы инструкций AES-NI для ускорения работы с AES Intel® Advanced Encryption Standard Instructions (AES-NI) и с шифрованием диска справляются лучше, чем старые процессоры Core 2 Duo. Решение каждый принимает сам на основании собственного железа.

При краже Mac'а получить доступ к данным будет практически невозможно (при условии сложного пароля и неочевидных ответов на вопросы восстановления ключа в Apple). Придётся просто купить новый Mac и особо не беспокоиться о компрометации паролей и использовании данных.

Time Machine работает теперь без необходимости выхода из учётной записи. Теперь нужно беречь данные Time Machine, а лучше размещать их в зашифрованном разделе (как это сделать, описано в статье Mac OS X Lion FileVault 2 and Time Machine External Drive Encryption).

Из "особенностей" нужно помнить, что при загрузке с зажатым Option раздел "Recovery HD" будет недоступен, для загрузки с него нужно удерживать комбинацию клавиш Command-R.

Активация

Активация FileVault 2 проста. System Preferences/Security & Privacy/FileVault, Click the lock to make changes, Turn On FileVault. Обязательно нужно в надёжном и обязательно зашифрованном месте сохранить ключ и ответы на вопросы восстановления ключа (если выбрали его сохранение в Apple). Система предложит перезагрузиться. Сразу же при загрузке будет запрошен ваш пароль и после входа вы сразу же сможете работать. Ждать часами завершения шифрования раздела не нужно, эта операция производится в фоновом режиме пока вы полноценно работаете:

01_filevault

С запуском iCloud появится возможность "Find My Mac", в которой по аналогии с "Find My iPhone/iPad" при появлении Mac в сети можно отобразить сообщение с воспроизведением звукового сигнала, заблокировать Mac или даже уничтожить содержимое зашифрованного диска (могу предположить, что удаляются ключи шифрования и диск становится бесполезным массивом данных):

02_filevault

При получении команды блокировки (как только Mac станет доступен через Интернет) компьютер перезагружается, после чего запрашивается 6-ти значный код (вспомнился [троян Trojan.Win32.Buzus.hjzy](http://av-school.ru/desc/a-2117.html), который портит MBR и требует денег за код разблокировки):

03_filevault

Удобно, не так ли?

Если же вы организованы и не хотите терять производительность в угоду безопасности, то достаточно создать зашифрованный sparse bundle image и хранить секретные данные там. Я описывал процесс в статье "Работа с зашифрованными образами с помощью Knox (за деньги) и без него (бесплатно)".