Какой код записать для аппаратного ключа присоединил систему для обеспечения лучшей безопасности?

На самом деле, хотя я вел блог (см. ответ Luke ), я думаю , это лучше, чем моя обертка IDisposable. Типичный код:

Service.Use(orderService=>
{
  orderService.PlaceOrder(request);
}); 

(редактирование на комментарии)

С тех пор Use возвраты пусто, самый легкий способ обработать возвращаемые значения через полученную переменную:

int newOrderId = 0; // need a value for definite assignment
Service.Use(orderService=>
  {
    newOrderId = orderService.PlaceOrder(request);
  });
Console.WriteLine(newOrderId); // should be updated

10
задан L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳ 26 September 2010 в 16:58
поделиться

6 ответов

Прежде всего, поймите, что ключ будет только создать небольшое препятствие. Кто-то, кто знает, что делает, просто удалит вызов ключа и поставит «истина» для любого вызванного результата. Все вам это скажут. Но есть препятствия, которые вы можете добавить!

Я бы нашел ключевую часть вашего кода, то, что трудно или трудно понять, что-то, что требует знания предметной области. Затем положите эти знания на ключ. Одним из примеров этого могут быть процедуры шейдера. Подпрограммы шейдеров - это текстовые файлы, которые отправляются на видеокарту для достижения определенных эффектов; для реализации очень простого фильтра яркости / контрастности потребуется менее 500 символов, и вы можете сохранить это в пользовательском пространстве на большинстве ключей. Затем вы помещаете эту информацию в ключ и используете информацию из ключа только для отображения изображений. Таким образом, если кто-то попытается просто удалить ваш ключ, все изображения в вашей программе будут затемнены. Потребуется, чтобы кто-то либо имел копию вашей программы, либо брал текстовый файл с ключа, а затем изменял вашу программу, чтобы включить этот текстовый файл, а затем знал, что этот конкретный файл будет «правильным» способом отображения изображений. Особенности реализации зависят от вашей платформы развертывания. Например, если вы запускаете программу в WPF, вы можете сохранить подпрограмму directx на свой ключ, а затем загрузить эту подпрограмму из ключа и применить эффект ко всем изображениям в вашем приложении. Затем взломщик должен уметь перехватить эту подпрограмму directx и правильно ее применить.

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

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

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

11
ответ дан 3 December 2019 в 19:34
поделиться

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

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

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

Однако с описанной системой эмулировать ключ по-прежнему просто, так что рано или поздно кто-нибудь это сделает.

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

Тем не менее, с описанной системой эмулировать ключ по-прежнему просто, поэтому рано или поздно кто-нибудь это сделает.

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

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

Тем не менее, с описанной системой эмулировать ключ по-прежнему просто, поэтому рано или поздно кто-нибудь это сделает.

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

6
ответ дан 3 December 2019 в 19:34
поделиться

Я бы сказал, что если кто-то захочет взломать защиту вашего программного обеспечения, они будет делать так. Когда вы говорите «достаточно сложно» - как следует интерпретировать «достаточно»?

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

-1
ответ дан 3 December 2019 в 19:34
поделиться

Вы можете реализовать множество контрольных точек в своем приложении.

Не знаю, используете ли вы HASP , но, к сожалению, ключи можно эмулировать .

0
ответ дан 3 December 2019 в 19:34
поделиться

Как максимизировать защиту с помощью простого донгла?

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

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

Используйте более одной функции для защиты программы. Не используйте только функцию find для поиска подключенного ключа.

Используйте несколько dlls/библиотек (если применимо) для вызова функций донгла. В случае если одна dll взломана, то все еще есть другие части программы, которые используют функции из другой dll. Например, копирование sdx.dll в print.dll, open.dll и другие имена, затем определение вызовов функций из каждой dll с разными именами.

Если вы используете файл dll для вызова функций dongle, свяжите его с исполняемым файлом. Существует довольно много программ, способных сделать это; например, PEBundle. 3

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

Максимизация защиты с помощью простого донгла для вашего программного обеспечения

4
ответ дан 3 December 2019 в 19:34
поделиться

Возможно, вы захотите рассмотреть возможность использования Dinkey Dongles для защиты от копирования.

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

http://www.microcosm.co.uk/dongles.php

0
ответ дан 3 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: