Пока все звучит как сказка, но «мы рождены чтоб сказку сделать былью», и как оказалось, придумать все же проще чем реализовать, я наивный, в этом уже убедился.
Первоначально была идея сделать задуманное используя только технологические особенности процессорных ядер, контроллера памяти и системной шины, этот метод изоляции можно увидеть в тестовых примерах которые я выкладывал в статье «Искусство программирования». Но от идеи пришлось отказаться из-за серьезных проблем с моделезависимостию, коробочное решение, которое должно работать везде и всегда, на этих принципах не построить.
Поэтому, отложив в сторону уже рабочие коды, все начали с нуля. Пришлось перейти на использование аппаратуры виртуализации, благо она к настоящему времени пережила «детские болезни левизны», т.е. стала надежно и гарантированно работать, а не сваливаться «в никуда» по необъяснимым (по крайней мере для меня) причинам.
Главная проблема использования аппаратуры виртуализации это написание двух абсолютно разных гипервизоров, для Intel и AMD соответственно, это очень большой и сложный объем работы который пришлось проделать что называется «с нуля».
Тяжелым, но вынужденным решением стал отказ от поддержки начальных ревизий систем виртуализации для Intel. Пришлось в целях надежности и функциональности ограничится поддержкой начиная с версий 13, а это значит, что без поддержки технологии EPT (расширенное страничное преобразование) в процессорах Intel доверенная среда работать не будет.
У процессоров AMD проблем с ранними версиями аппаратуры виртуализации нет, все их ревизии работают с ДВС, вообще мне их система виртуализации нравится больше (и не мне одному).
В результате родилась комбинированная технология, когда процессорное ядро для монопольного использования в доверенной среде изолировалось стандартным образом, одинаковым для процессоров AMD и Intel а все защитные и контрольные функции ДВС были реализованы с использованием аппаратуры виртуализации, задействованной на остальных ядрах функционирующих под управлением ОС.
Сначала о процессорном ядре используемом в Доверенной среде, это ядро всегда с последним номером, оно может быть логическим (при включенном Гипертрейдинге) но всегда забирается в первозданном, незапятнанном работой с разными непроверенными программами состоянии, его только проинициализировал БИОС, а после этого оно сразу попадает в ДВС и там оно остается до выключения питания.
Этим гарантируется надежность и предсказуемость поведения этого ядра в ДВС, его состояние не модифицировано сторонними программами, а если его кто и «попортил» то только БИОС, и соответственно все вопросы уже к его авторам, а если оно проходило проверку на НДВ, то к экспертам и методикам этих проверок.
Кто-то может сказать что «попортить» процессорное ядро невозможно,- не слушайте его, он просто некомпетентен, в качестве простейшего примера можно вспомнить механизм активации отечественных модулей доверенной загрузки.
Теперь об аппаратуре виртуализации включенной на остальных процессорных ядрах. Обычно программу, использующую аппаратуру виртуализации называют «Гипервизор», но это большие программные комплексы с мегабайтами кода, в нашем случае задача попроще и кода то всего-ничего, - не более 10кбайт. Так что Гипервизором назвать это «творение» язык не поворачивается, это не Гипервизор, это «ГиперДрайвер», так и будем его далее называть.
Гипердрайвер на процессорных ядрах используемых ОС и прикладными программами предназначен только для двух задач, во первых, он должен обеспечить дополнительную защиту процессорного ядра и памяти доверенной среды, а во-вторых, он должен «выкусывать» аппаратуру необходимых контроллеров ввода\вывода для сеансов доверенного обмена информацией.
Вот пример того, как он работает:
Скриншот участка ОП для обычного режима работы ОС, Доверенная Вычислительная Среда не активирована и в этом месте памяти размещены таблицы ОС.
А вот скриншот того же участка ОП, но с включеной ДВС:
В этой области памяти включена защита от доступа/модификации и ничего не видно, хотя по этим адресам реально находятся системные таблицы процессорного ядра доверенной среды.
Но можно отключить защиту и тогда в этих адресах ОП увидим фактически расположенную там корневую запись системной таблицы (PG) ДС:
Соответственно сейчас ДС будет доступна для модификации и просмотра, но это только в отладочном режиме, естественно.