Параметр fOAEP в шифровании RSA


RSACryptoServiceProvider.Encrypt() имеет два параметра: rgb (данные для шифрования) и fOAEP. fOAEP - это логическое значение, которое определяет, какой тип заполнения следует использовать:

fOAEP
Type: System.Boolean

true to perform direct RSA encryption using OAEP padding (only available on a computer running Microsoft Windows XP or later); otherwise, false to use PKCS#1 v1.5 padding. 

В нем говорится, что true будет работать только в Windows XP или более поздней версии, но я предполагаю, что это не обязательно включает Linux и другие языки. Тем не менее, это действительно должно работать в Linux и с PHP. Учитывая, что моими двумя главными приоритетами являются безопасность и совместимость со скриптом PHP, должно ли это значение быть истинно или ложно?

 3
Author: Razick, 2013-12-10

2 answers

Все это очень хорошо документировано и соответствует стандартам на.На стороне СЕТИ, я предполагаю, что на стороне PHP должно быть то же самое. Посмотрите на это, например:

Http://www.php.net/manual/en/function.openssl-public-encrypt.php

Он поддерживает как OAEP, так и PKCS#1. Так что тебе должно быть хорошо с любым из них. Мое личное мнение таково, что это не какая-то экзотическая штука, как старая.Формат DOC, где совместимость - это кошмар. Сам RSA довольно прост, заполнение просто добавляя несколько двоичных байтов, за этим стоит много мыслей, но это очень просто.

О том, что более безопасно, смотрите здесь:

Https://security.stackexchange.com/questions/32050/what-specific-padding-weakness-does-oaep-address-in-rsa

Или попытайтесь найти другие криптографические исследования. Не верьте тому, что я говорю:).

РЕДАКТИРОВАТЬ: упс, расшифровка, похоже, не поддерживает OAEP, еще одна вещь, которую нужно добавить phpwtf.org ...

Http://www.php.net/manual/en/function.openssl-public-decrypt.php

 2
Author: fejesjoco, 2017-03-17 13:14:46

Для шифрования следует использовать OAEP, он поддерживается почти всеми библиотеками. В PHP вы должны использовать openssl_public_encrypt() для шифрования и openssl_private_decrypt() для расшифровки. Они оба поддерживают заполнение OAEP.

 1
Author: Nickolay Olshevsky, 2013-12-10 14:10:33