Как защитить. Net Базовое приложение для пробной версии с сертификатами - PullRequest
0 голосов
/ 19 июня 2020

Идея состоит в том, чтобы поместить бомбу замедленного действия в приложение. Net Core (это бета / пробная версия, не полностью пригодный для использования продукт, это нормально с юридической точки зрения).

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

Пока что с помощью OpenSSL я создал закрытый ключ (назовем его trial.key) :

openssl genrsa -des3 -out trial.key 2048

, затем был создан сертификат с аргументом -days (trial.pem) и паролем «пароль»:

openssl req -x509 -new -nodes -key trial.key -sha256 -days 4 -out trial.pem

, а затем закончился trial.cert:

openssl x509 -outform der -in trial.pem -out trial.crt

Я добавляю trial.crt в приложение и проверяю даты при запуске:

private static void CheckTrialCert()
{
    var trialCert = new X509Certificate2(Path.Combine("Certificates", "trial.crt"), "password");

    if (trialCert.NotAfter < DateTime.Now)
    {
        Environment.Exit(0);
    };
}

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

Что здесь можно сделать? Можно ли жестко закодировать закрытый ключ в приложении и проверить, подписан ли try.crt моим закрытым ключом?

1 Ответ

0 голосов
/ 20 июня 2020

Вы можете попробовать встроить сертификат прямо в код. Однако это не остановит знающего пользователя от злоупотребления вашим ограничением. . NET приложения можно легко декомпилировать, logi c можно отслеживать и изменять с помощью таких инструментов, как ildasm.exe. Другими словами, то, что вы пытаетесь сделать, sh работает против необразованных пользователей.

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

Но все же, учитывая все это, имейте в виду, что не существует 100% устойчивого решения, любое приложение можно взломать, вопрос о затратах на его поломку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...