Представим себе фантастическую ситуацию: производитель HDD захотел реализовать некий функционал для нужд процесса восстановления данных, такой чтобы:
1) охватить как можно больше случаев восстановления данных;
2) не дать потенциальной возможности модифицировать программу управления накопителя с целью защиты устройств от хакеров.
Тогда, что в этот функционал следует включить?
На мой взгляд, техническое задание будет выглядеть следующим образом:
- Функция резервной копии служебной зоны накопителя. По команде от управляющего компьютера, накопитель отдает всю служебную область в виде большого блока данных. При этом, код программы он может отдавать в зашифрованном виде, а области данных с физической конфигурацией, адаптивными параметрами настройки механики и транслятором либо отдельными блоками с контрольной суммой, либо шифрованными блоками, но с разделением по функциям, чтобы в случае утери блока (например, потерялась оригинальная плата электроники или настройки поврежденной механики) можно было бы выполнить перебор параметров.
- Функция загрузки полной служебной зоны в ОЗУ накопителя из резервной копии с возможностью указать какие физические головки накопителя использовать, а какие пропускать.
- Команда пересчета логического адреса (LBA) в физический для построения карты соответствия логических секторов их физическому расположению на той или иной головке.
- Отключение «паразитных» функций мешающих при вычитывании данных. Например, кэширование, расчет текущих значений системы S.M.A.R.T. и попыток скрытия дефектных секторов в G-List.
Как на практике пользоваться этими функциями? Приведу один из примеров.
У диска вышел из строя блок магнитных головок (БМГ). Устанавливаем другой БМГ. Запускаем диск из резервной копии с другого диска той же версии (пользуемся функцией 2). Получаем доступ к служебной зоне и сохраняем блоки данных (пользуемся частично функцией 1). В случае успеха: подгружаем блоки данных и программу (пользуемся функцией 2). Строим карту голов по физике (пользуемся функцией 3). Отключаем паразитов (пользуемся функцией 4). Вычитываем данные пользователя.
При этом, возможен вариант создания софта, который делает резервную копию в виде шифрованного архива на облако с диска при покупке. Если диск выйдет из строя, то будет возможность попытаться его восстановить при помощи ранее сохраненной резервной копии.
Как видно, что для реализации функций 1 и 2 вообще не обязательно знать как устроены структуры данных накопителя, кроме количества и карты физических головок. Следовательно, производитель их вполне может зашифровать и принимать/отдавать в шифрованном виде. Единственно, нужно, чтобы диск мог воспринимать программу и блоки данных с настройками по отдельности с возможностью подставлять их от других HDD.
Сейчас такой механизм «восстановления только чтением» можно реализовать для нынешних WD Marvell (думаю, и других производителей тоже) используя функции диска, являющиеся частью технологического цикла производства. Программа восстановления вообще ничего не будет писать в служебную область, но вынуждена писать ОЗУ. Если программу на основе заводских технологических функций сделать opensource, то ее теоретически можно использовать, чтобы делать вредные программы (с закрытым кодом, кстати, тоже)… Но, если сам производитель защищенным образом реализует команды функций 1-4, то программу восстановления данных нельзя будет использовать во вред как производителю дисков, так и пользователям. Её даже можно сделать с открытым кодом!
Станет ли эта фантастика реальностью? Как говориться, «будем посмотреть».
Да хранит ваши данные бэкап!