Я создаю приложение для обмена сообщениями для Android, которое зашифровывает сообщение на сайте отправителя перед отправкой. Однако при преобразовании из сообщения в полином m, коэффициенты которого -1, 0, 1, я использую преобразование Base-3. Из-за этого каждый символ в sam преобразуется в 5 коэффициентов многочлена. Это позволяет мне отправлять только 32 (5 * 32 = 160) символов при макс. Как преобразовать сообщение в многочлен, чтобы я мог отправлять больше символов?
Надеюсь, я поставил проблему ясной !!!!
NTRUEncrypt выводит полином по модулю q, а не 3 (вы можете думать о вводе, который является полиномом по модулю 3).
Обычно q = 2048 = 2 ^ 11. Предполагая 160 символов = 160 байт, одно SMS-сообщение может быть до 1280 бит, поэтому вы можете отправить 1280/11 = 116 коэффициентов в одном зашифрованном сообщении. Чтобы быть достаточно безопасным, вам потребуется несколько сотен коэффициентов плюс несколько дополнительных байтов для защиты от определенных типов атак.
Таким образом, зашифрованное сообщение не будет вписываться в одно SMS-сообщение и будет оставаться безопасным, но вы всегда можете разбить его на несколько сообщений. Если вы используете параметры APR2011_439_FAST из открытой реализации NTRU, зашифрованное сообщение будет 604 байта, что означает, что вам потребуется 4 SMS-сообщения.
Или вы можете использовать 256-битный ECC вместо NTRU, и вы могли бы поместить 96 байтов в одно сообщение, если бы вы отправили 32 зашифрованных ECC байта, содержащих ключ AES и соль, за которыми следуют 96 байтов с байтами AES.