Что означает код HRESULT 0x80090012 (NTE_DOUBLE_ENCRYPT)?

 
Предыдущий Следующий
NTE_NOT_FOUND NTE_BAD_PROVIDER

NTE_DOUBLE_ENCRYPT

В криптографии шифрование — это процесс кодирования информации. Он преобразует исходное представление, называемое plaintext, в альтернативную форму — ciphertext. В идеале только авторизованные стороны способны расшифровать ciphertext обратно в plaintext и получить исходные данные. Само шифрование не предотвращает вмешательство, но лишает потенциального перехватчика понятного содержимого. Криптографическая система Windows может вернуть NTE_DOUBLE_ENCRYPT (0x80090012), если приложение попыталось дважды расшифровать одни и те же данные. Функция CryptDecrypt расшифровывает данные, ранее зашифрованные функцией CryptEncrypt.

Types of encryption and NTE_DOUBLE_ENCRYPT (0x80090012)

По техническим причинам схема шифрования обычно использует псевдослучайный ключ, созданный алгоритмом. Сообщение теоретически можно расшифровать и без ключа, но для хорошо спроектированной схемы это требует значительных вычислительных ресурсов и знаний. Авторизованный получатель легко расшифровывает сообщение ключом, переданным отправителем разрешённым получателям, но недоступным посторонним.

Можно ли шифровать уже зашифрованные данные? Как это связано с этим результатом?

Да. Более того, соединение, через которое вы просматриваете эту страницу сервиса What Is.

, скорее всего, уже использует несколько уровней защиты. Многие программы шифрования файлов и дисков позволяют последовательно применять несколько алгоритмов, например AES-256, затем Blowfish или другой алгоритм.

При многоуровневом шифровании для расшифрования не обязательно нужны разные программы; важно, чтобы используемая программа поддерживала алгоритм каждого слоя и, что особенно важно, чтобы слои расшифровывались в правильном порядке.

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

Полностью «невзламываемого» шифрования не существует. Даже у AES известны направления атак, но на практике важны энтропия и время, необходимое для перебора пароля, а также знание использованного алгоритма.

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

Для некоторых алгоритмов известны методы атак, сокращающие время по сравнению с полным перебором, например за счёт коллизий или других свойств. Поэтому знание контейнера и алгоритма может существенно уменьшить время анализа шифрования.

Последовательное применение разных алгоритмов в основном увеличивает объём работы, необходимый для преодоления всех слоёв. Однако если на каждом уровне используется слабое шифрование, выигрыш во времени остаётся относительным.

В конечном счёте это похоже на выбор замка:

  • сколько времени атакующий готов потратить на его вскрытие?
  • Достаточно ли то, что находится за дверью, настолько ценно, чтобы оправдать затраты этого времени?
  • Достаточно ли то, что находится за дверью, настолько Достаточно ли оно ценно, чтобы оправдать риск быть замеченным за время вскрытия?

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


Нужно найти другой код? Найти другой код состояния или ошибки.