2013-04-04 1 views
0

Насколько легко было бы кому-то декомпилировать/дизассемблировать/отразить .NET сборку, скомпилированную в режиме выпуска, чтобы найти содержимое определенного байтового массива?В сборке .NET можно найти конкретный массив байтов?

Это хорошая идея реализовать секретный механизм безопасности, который зависит от конкретного ключа (хранящегося в коде C# в виде байтового массива)?

Я попытался использовать отражатель .NET и не нашел свой собственный ключ безопасности, но мне было интересно, будет ли эта информация «достаточно безопасна».

Есть ли более безопасные места для хранения тайны, чем в сборке?

+1

Это очень просто, даже если вы * обфускаете * свой код. – I4V

ответ

2

Я согласен с другими, что получение секретного массива байтов из сборки будет простым.

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

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

Другими словами: единственное безопасное место для такого ключа - на сервере, которому вы управляете, и чью безопасность вы доверяете.

3

Не храните секреты внутри сборки .Net, доступной людям, которым вы не доверяете. Декомпиляция сборки тривиальна, и для этого доступно множество инструментов. Было бы легко узнать все секреты, которые вы там вложили

 Смежные вопросы

  • Нет связанных вопросов^_^