У меня есть следующий сценарий:

Определенный процесс (A) создает файлы, и я хочу написать программу, которая читает эти файлы для генерации некоторых статистических данных.

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

Процесс (A) работает только в системе Windows. Более конкретно Windows XP или выше.

Это вообще возможно? Достаточно ли наблюдать за файловой системой или мне нужно каким-то образом ввести (A), чтобы получить выходные данные, прежде чем они будут сохранены в файле?

4 ответа4

1

Существует модель безопасности, которая называется моделью Кларка-Уилсона. Только одно приложение может изменять данные.

Я хотел бы создать файлы с цифровой подписью и проверкой свежести. Таким образом, ваше приложение B может быть уверено, что файлы были записаны A, а не каким-либо другим процессом. Плюс проверка на свежесть помогает смягчить атаки повторов.

1

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

Вы можете попытаться заставить сервер B где-нибудь подписать данные, чтобы владелец системы A, на котором он работает, не мог этого сделать, но тогда как B узнает, что он на самом деле говорит с действительной программой A, а не с тем, что приготовил пользователь? вверх. Нет никакого способа определить это также.

Единственный реальный способ сделать это состоит в том, чтобы каждое важное действие происходило в результате чего-либо на сервере, а также всех критериев, которые должны быть правильными, чтобы обеспечить правильную версию данных. Вот почему серверная логика часто используется в MMO и некоторых других онлайн-играх для предотвращения мошенничества. Если вы не владеете и не контролируете оборудование, вы не можете ему доверять. DRM пытается, но это проигрышная битва, если мы не доберемся до точки, где пользователь, который владеет системой, является просто "гостем" какой-то третьей стороны, которая действительно управляет системой, и это очень страшный мир по многим другим причинам.

0

Для этих целей Microsoft предлагает бесплатный верификатор целостности контрольной суммы файлов .

Информация, скопированная из файла readme:

1.Что такое FCIV?

Fciv - это утилита командной строки, которая вычисляет и проверяет хэши файлов.

Он вычисляет криптографический хэш MD5 или SHA1 содержимого файла. Если файл изменен, хеш отличается.

С помощью fciv вы можете вычислять хэши всех ваших конфиденциальных файлов. Если вы подозреваете, что ваша система была взломана, вы можете запустить проверку, чтобы определить, какие файлы были изменены. Вы также можете запланировать проверки регулярно.

2.Особенности:

  • Алгоритм хеширования: MD5 , SHA1 или оба (по умолчанию MD5).
  • Показать на экране или сохранить хэш и имя файла в XML-файле.
  • Может рекурсивно просматривать каталог (например, fciv.exe c:\ -r).
  • Список исключений для указания файлов или каталогов, которые не должны вычисляться.
  • Список базы данных.
  • хеши и проверки подписи.
  • сохранить имя файла с полным путем или без него.

3.Синтаксис:

Usage:  fciv.exe [Commands] <Options>

Commands: ( Default -add )

   -add    <file | dir> : Compute hash and send to output (default screen).

      dir options:
      -r       : recursive.
      -type    : ex: -type *.exe.
      -exc file: list of directories that should not be computed.
      -wp      : Without full path name. ( Default store full path)
      -bp      : base path. The base path is removed from the path name of each entry
   -list   : List entries in the database.

    -v     : Verify hashes.
           : Option: -bp basepath.

    -? -h -help : Extended Help.

Options:
        -md5 | -sha1 | -both    : Specify hashtype, default md5.
        -xml db                 : Specify database format and name.

Чтобы отобразить MD5-хэш файла, введите fciv.exe filename

Вычислить хэши:

fciv.exe c:\mydir\myfile.dll
fciv.exe c:\ -r -exc exceptions.txt -sha1 -xml dbsha.xml
fciv.exe c:\mydir -type *.exe
fciv.exe c:\mydir -wp -both -xml db.xml

Список хэшей, хранящихся в базе данных:

fciv.exe -list -sha1 -xml db.xml

Верификация:

fciv.exe -v -sha1 -xml db.xml
fciv.exe -v -bp c:\mydir -sha1 -xml db.xml

4.Формат хранения базы данных:

XML-файл.

Хеш хранится в базе 64.

5.Проверка:

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

Он проверяет каждую запись, сохраненную в БД, и проверяет, что контрольная сумма не была изменена.

0

Я бы, наверное, удостоверился, что приложение, которое генерирует файлы, также создает хеш-сумму MD5 файла. Сохраните эту хэш-сумму в отдельном файле.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .