Как лучше всего защитить продукт от взлома с помощью токена открытого ключа в .Net Assembly?

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

.Net framework имеет функцию строго типизированного имени, которое можно использовать для защиты программного обеспечения, поскольку вы можете указать, какая сборка и токен открытого ключа будут загружены.

Итак, как лучше всего предотвратить взлом продукта с помощью токена открытого ключа?


person Soul_Master    schedule 19.12.2009    source источник
comment
Использовать ngen для создания двоичного файла?   -  person Marco van de Voort    schedule 19.12.2009
comment
Я не уверен, с помощью какой техники создавать новую сборку, но думаю, что это возможно.   -  person Soul_Master    schedule 20.12.2009
comment
Сделаю вывод: открытый ключ здесь ни к чему. И вы не знаете, какое решение вы бы хотели дать другим ответом.   -  person Henk Holterman    schedule 20.12.2009


Ответы (1)


Назначение строгого именования - гарантировать, что при загрузке сборки вы загружаете ту сборку, которую, как вы думаете, загружаете. Итак, если вы загружаете сборку с полным именем System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL, строгое имя работает, чтобы гарантировать, что вы загрузите эту сборку и что какая-то злая корпорация не вставила другую сборку на ее место. Строгие имена не помогут предотвратить несанкционированный доступ к вашему программному обеспечению.

person jason    schedule 19.12.2009
comment
Я знаю. Но если у вас есть какой-то движок для загрузки указанной сборки, вы можете управлять загрузкой своего приложения или нет, не требуя другого кода, и невозможно создать поддельную сборку с таким же токеном открытого ключа. Так что это должно затруднить взлом вашего приложения или злоупотребление им. - person Soul_Master; 19.12.2009
comment
Когда я думаю о слове «взломать» применительно к программному обеспечению, я думаю об обходе мер безопасности, которые используются для защиты программного обеспечения. Если у кого-то есть копия вашего приложения и копия ожидаемой сборки, в строгом именовании нет ничего, что помешало бы им скопировать эти файлы и предоставить им что-то еще. Это не та проблема, для решения которой предназначалось строгое именование. - person jason; 19.12.2009
comment
Строгие имена могут быть сгенерированы на основе идентификатора машины или другой уникальной информации с пользовательской машины. Таким образом, вы не можете копировать и вставлять для работы на другом компьютере. - person Soul_Master; 19.12.2009
comment
Нет. Когда сборка строго подписана определенным закрытым ключом, она получает фиксированный токен открытого ключа. - person jason; 19.12.2009
comment
да. Я знаю. Я имею в виду, что если я создаю сборку, которая может запускаться только тогда, когда машина имеет тот же уникальный ключ, а сборка должна быть подписана закрытым ключом, приложение будет запускаться, когда пользователь авторизован, а обычный пользователь не может создать поддельную сборку с таким же токеном открытого ключа. - person Soul_Master; 20.12.2009