XOR шифрование / дешифрование и соответствие
Шифрование / дешифрование XOR является очень основным механизмом, при котором не требуется никаких ключей для шифрования.
Я использовал это для шифрования / дешифрования файла в C++. Файл содержит защищенные данные. Файл разделен на множество фрагментов фиксированного размера, и для шифрования различных фрагментов используются разные символы, получая зашифрованный файл.
Я хотел бы знать две вещи:
- есть ли другой способ зашифровать его более безопасно?
- такой механизм приемлем, если рассматривается соответствие PCI?
Я не могу добавить поддержку какой-либо криптографической библиотеки, такой как openssl и т. Д., В мою текущую среду.
Спасибо за вашу помощь.
3 ответа
Вы несколько ответили на свой вопрос. XOR "шифрование", если можно так его назвать, никогда не должно использоваться в производственном коде. На академическом уровне он представляет собой прекрасный пример сломанной схемы шифрования, на которой неопытные криптографы могут выполнять криптоанализ. Это бесполезно. Однако, вопреки тому, что вы заявляете, для шифрования XOR требуется ключ.
На момент написания этой статьи стандартным алгоритмом симметричного шифрования является AES. AES используется во многих распространенных протоколах, таких как TLS и SSH.
Шифрование XOR также определенно не приемлемо для таких вещей, как соответствие PCI.
Да, есть более безопасный способ шифрования файла: AES (Advanced Encryption Standard).
Поскольку нет секретного ключа, это не шифрование, это запутывание. Безопасность практически отсутствует, безопасность не достигается секретным методом.
Это не соответствует PCI, см. Стандарты безопасности PCI.
"Закон Шнайера": "Любой, от самого невежественного любителя до лучшего криптографа, может создать алгоритм, который он сам не сможет сломать".
Шифрование XOR совсем не безопасно. Это тривиально сломать и может быть сделано практически на любом устройстве.
Это не подходит для соответствия PCI. OWASP предоставляет некоторые рекомендации здесь: https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet
Для C++ есть ряд библиотек, которые могут выполнять шифрование за вас - используйте их и не реализуйте сами, так как вы ошибетесь! Некоторые библиотеки, чтобы посмотреть на это OpenSSL и libgcrypt.