Вроде ситуация безвыходная, на первый взгляд кажется что провести приватные вычисления в режиме ДВС на практике невозможно. Но Великий Кормчий говорил, «если что-то можно измыслить, значит это что-то можно реализовать»… Так что, следуя заветам вождя чуть ли не половины человечества, попытаемся сделать невозможное.
Концептуально, для создания ДВС достаточно всего лишь «щепотки» памяти, и «кусочка» процессора на обычной вычислительной системе, избыточность только создает проблемы. Этого уже достаточно чтобы создать свой небольшой доверенный компьютер, сделать «компьютер в компьютере».
Но этого мало, в этом доверенном компьютере находящемся внутри не доверенной вычислительной системы должен работать проверенный, а еще лучше написанный собственноручно монитор (маленькая ОС), обеспечивающий работоспособность аппаратуры и приложений функционирующих на нем.
Другими словами, Доверенная Вычислительная Среда состоит из доверенного компьютера в компьютере и программного монитора (микро-ОС), обеспечивающего функционирование приложений требующих приватного выполнения.
Естественно, «щепотка» памяти и «отпиленное» ядро должны быть изолированы от остального оборудования вычислительной системы, причем не программно, этого мало, но и аппаратно. Сказано – сделано, вот как это выглядит в реальности:
Скриншоты одного и того же компьютера, слева это обычная машина, справа машина с активированной доверенной средой. Разница очевидна, ОС лишилась процессорного ядра и 10мегабайт оперативной памяти.
Этими фокусами уже лет 5, ничего нового в этом нет, технология просто не доходила до коммерческого использования и применялась только в исследовательских целях.
Теперь немного конкретизируем понятия, «Изолированное ядро процессора», это одно из вычислительных ядер процессора, на работу которого невозможно повлиять из вне, т.е. никакое оборудование вычислительной установки не должно иметь возможности вмешаться в его работу. Вмешаться в его работу может только выключение питания и кнопка аппаратного сброса (сигнал Reset).
Соответственно «Изолированное адресное пространство ОП» должно быть недоступно на чтение и модификацию основному оборудованию вычислительной установки,- процессорным ядрам работающим под ОС и внешним устройствам. Вроде просто, да не все так просто…
Изолированная для нужд ДВС память имеет один принципиальный изъян,- после аппаратного сброса изолированный участок оперативной памяти перестанет быть изолированным, к нему сможет обращаться любая программа на любом процессорном ядре. Но информация хранившаяся в нем останется, и во многих случаях после аппаратного сброса можно получить к ней доступ. Поэтому критически важную информацию в изолированном адресном пространстве размещать нельзя, там может находиться только программный код ДВС, локальные переменные и системные таблицы.
Следовательно, хранить секретную информацию (ключи шифрования как минимум) можно только в регистрах изолированного процессорного ядра, поскольку они гарантированно обнуляются при выполнении аппаратного сброса, предшествующего процедуре перезагрузки системы.
И так, у нас есть личное процессорное ядро и изолированная память для его работы, следовательно на базе этого оборудования можно уже запускать программный код, можно написать для них даже собственную операционную систему, вот только нам это не надо, избыточно. Достаточно написать небольшой программный монитор с минимальным набором поддерживаемых функций, только для обеспечения работоспособности и изоляции приватного ПО пользователя.