Каковы риски, с которыми мой ключ будет подвергаться обратной инженерии? (клиенты получат только скомпилированную DLL)
100%. Предполагая, конечно, что ключ защищает что-то полезное и интересное. Если это не так, тогда опустите.
Есть ли способ повысить безопасность управления ключом?
Нет инструмента безопасности, который вы могли бы использовать, но есть инструменты обфускации и DRM (которые представляют собой проблему, отличную от безопасности). Любой подход, который вы используете, должен регулярно обновляться, чтобы справляться с новыми атаками, которые нарушают ваш старый подход. Но принципиально это то же самое, что DRM для музыки или видео или игр или что-то еще. Я бы сделал покупки вокруг. Все, что стоит, будет регулярно обновляться и, вероятно, несколько дорогим.
Есть ли открытым исходным кодом или коммерческие продукты, которые я могу использовать
решений с открытым исходным кодом для этой конкретной проблемы являются ... наверное, бесполезно. Весь смысл DRM - обфускация (что делает вещи запутанными и скрытыми, а не защищенными). Если вы делитесь «секретным соусом», вы теряете защиту. Так DRM отличается от безопасности. В безопасности я могу рассказать вам все, кроме тайны, и она по-прежнему безопасна. Но DRM, я должен скрыть все. Тем не менее, я уверен, что есть некоторые инструменты с открытым исходным кодом, которые пытаются. Существуют инструменты обфускации с открытым исходным кодом, которые пытаются затруднить отладку двоичных файлов с помощью скремблирующих идентификаторов и т. П., Но если есть только одна небольшая часть информации, которая необходима (конфигурация), ее достаточно сложно запутать.
Если вам это нужно, вам, скорее всего, понадобится коммерческое решение, которое будет несовершенным и, скорее всего, потребует исправления, поскольку оно сломано (опять же, предполагая, что оно защищает то, что действительно волнует). Рекомендация конкретных решений не относится к теме для переполнения стека, но Google может вам помочь. Для Windows могут быть некоторые вещи, которые могут помочь, но это зависит от ваших точных требований.
Имейте в виду, что «атакующему» (трудно разрешить авторизованному пользователю «атакующему») не обязательно получать ключи. Им просто нужно подождать, пока ваша программа расшифрует конфигурации, а затем прочитайте конфигурации из памяти. Так что вам тоже нужно обфускацию. Это бесконечная битва, в которой вам придется решать, как сильно вы хотите сражаться.
Похоже, в настоящее время у вас нет никакой безопасности, на самом деле. Если ключ находится на виду (для кого-то с шестнадцатеричным считывателем), то он находится на виду (хотя требует некоторой детективной работы с дизассемблером или проб и ошибок, чтобы найти, какая группа байтов является ключом). –
@JohnColeman Да, есть безопасность, безопасность для обычных пользователей. Безопасность направлена против определенного злоумышленника, а не на 100% возможных злоумышленников, что недостижимо. – zaph
@Denisdillo Определите атакующего, какой уровень мастерства и возможностей - любопытный подросток для хорошо финансируемого правительства. Определите значение в денежных единицах. Определите стоимость успешной атаки. Определите устройство, компьютер под управлением Windows 95, устройство iOS, устройство Android и т. Д., Потому что на каждом уровне есть встроенная система безопасности. Защита от владельца устройства практически невозможна, и решение, как правило, относится к DRM, обычно требующему сервера. – zaph