Как Вы скрываете ключ шифрования в приложении.NET?

Условием для hasArray является

(hb != null) && !isReadOnly

isReadOnly, если вы, например, используете asReadOnlyBuffer

CharBuffer.allocate(20).asReadOnlyBuffer();

.
Так что да, нам это нужно.


Возьмите эту строку

final CharBuffer cb = instance.getCharBuffer(...);

Это только для чтения или нет? Содержит ли он действительный массив char[]? Мы действительно не знаем. Если мы сделаем

cb.array();

и это буфер только для чтения, мы получим ReadOnlyBufferException.
Если он не поддерживается массивом char[], мы получаем UnsupportedOperationException.

Итак, что мы могли бы сделать, это

if (cb.hasArray()) {
   final char[] arr = cb.array();
}

Теперь мы находимся Exception в безопасности.
Также вы можете быть уверены, что инженеры Oracle / OpenJDK / whatJDK знают, что они делают;)

13
задан user74824 6 March 2009 в 18:31
поделиться

2 ответа

Шифрование встроено в систему конфигурации.NET. Можно зашифровать блоки app/web.config файла, включая то, где Вы храните свой закрытый ключ.

http://www.dotnetprofessional.com/blog/post/2008/03/03/Encrypt-sections-of-WebConfig-or-AppConfig.aspx

5
ответ дан 2 December 2019 в 01:11
поделиться

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

Путаница не имеет справки при тех условиях.

Лучшая защита состоит в том, чтобы использовать аппаратные средства для защиты ключа - который сделает crypto, но не выделит сам ключ (и иногда укрепляется против нападений, таких как зондирование проводов, выставляя память низкому temperatures/radiation/other новому материалу). IBM делает некоторый соответствующий материал (google IBM 4764), но это не дешево.

2
ответ дан 2 December 2019 в 01:11
поделиться
Другие вопросы по тегам:

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