I>Я понимаю, что задача скорее всего не имеет решения, но тема довольно обширная, поэтому не хочется упустить шанс ее решить. I>Проблема в следующем: имеется exe-модуль, который ведет логирование в системе и записывает зашифрованные данные в файл. Также имеется клиентский модуль, который эти данные зачитывает через определенные промежутки времени, дешифруя файл лога. Так как все реализовано через .Net, то, естественно, декомпиляция кода рефлектором — лишь вопрос времени и желания. I>Каким образом можно максимально осложнить подделку записей лога? Возможно как-то помогут алгоритмы шифрования с открытыми ключами или что-то в таком роде?... Если такая возможность даже теоретически отсутствует — все равно буду рад ответу и перестану рыть в эту сторону. В крайнем случае устроит максимально запутанный алгоритм шифрования, который можно прогнать через обфускатор и существенно осложнить поиск точек входа/выхода.
Да, использование криптографии с открытыми ключами в любом случае будет нелишним, т.е. лог шифруется exe-модулем на секретном ключе (private key), а клиент его расшифровывает публичным ключом (public key). При этом, если у злоумышленника есть доступ к коду шифрующего модуля, то можно применить аппаратные ключи ("токены"), поддерживающие асимметричное шифрование.