Рейтинг:1

Можно ли проверить, что вывод исполняемого файла исходит из его неизмененного потока управления?

флаг in

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

Daniel S avatar
флаг ru
Я думаю, что в целом это было бы эквивалентно решению проблемы остановки (что невозможно на эквиваленте машины Тьюринга).
Рейтинг:1
флаг kr

этот ключ может быть извлечен и использован для подписи других данных

Правильный. Злоумышленник может извлечь ключ и подписать что угодно.

Можно ли проверить, что вывод исполняемого файла является прямой результат собственного неизменного (сборочного) потока управления?

Вообще говоря, нет.

Это можно проверить только в некоторых конкретных случаях. Один из подходов может заключаться в использовании подписанного исполняемого файла (подписанного его провайдером), который работает в контролируемой среде. Проверив подпись, вы будете уверены, что код не изменен. Используя контролируемую среду, вы будете уверены, что ни ввод, ни вывод не были изменены, ни код не был изменен, когда исполняемый файл был загружен операционной системой, а память, используемая исполняемым файлом, не была изменена другим процессом.

Рейтинг:0
флаг cn

Вообще говоря, в неконтролируемой среде (например, ОС может быть изменена) это невозможно. Что бы вы ни придумали (проверка машинного кода, проверка цифровых подписей и т. д.), НЕТ быть выполнено копией вашего программного обеспечения, и подписание вывода по-прежнему возможно.

Проверка того, что фактический код, который загружается и работает, принадлежит конкретному автору, может быть выполнена только операционной системой (или системой в целом) без возможности его подделки третьей стороной.

И доверять этой проверке будет только то, что сама система не может быть подделана.

Так что нет, я не думаю, что есть практический способ сделать это. Ближе всего вы подходите к такой закрытой системе, возможно, ОС iOS/iPad. И по крайней мере я не в курсе, что там есть такая системная функция. Я даже искал его раньше, потому что нашел бы его очень удобным, если бы, например, iOS могла подписывать веб-запрос и включать производителя приложения в подпись. Однако, насколько мне известно, это невозможно. (Тем более, что даже iPhone можно взломать)

С другой стороны, во встроенной (закрытой) системе, где вы можете контролировать каждый интерфейс, который можно использовать для загрузки кода, вы можете реализовать это самостоятельно. Тем не менее, это так же безопасно, как и защита от несанкционированного доступа. И добавьте, что мы знаем, это никогда не бывает идеальным.

Однако на обычном ноутбуке или ПК я не думаю, что это возможно.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.