Шифрование при отправке данных из одного приложения в другое в android - PullRequest
1 голос
/ 11 марта 2020

Я хочу отправить конфиденциальные данные из одного приложения в другое.

Я использую Intent и отправляю данные через Bundle. Теперь я должен использовать алгоритм шифрования для шифрования данных для отправки, и параллельно приложение-получатель расшифровывает данные.

Какой алгоритм лучше всего подходит для мобильной платформы?

Я просмотрел документы RSA и предположил, что он не рекомендуется для длинного шифрования текста.

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

1 Ответ

2 голосов
/ 13 марта 2020

Я просмотрел документы RSA и предположил, что он не рекомендуется для длинного шифрования текста.

true

В зависимости от длины ключа, например, ключ 2048 с pkcs Заполнение # 1.5 предназначено для шифрования максимумов, если 245 байтов. Некоторые реализации реализуют еще меньше (144 байта, ..)

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

На самом деле - это комбинация обоих способов, которые обычно используются. см. гибридная криптосистема

В основном - каждое приложение имеет свою собственную пару ключей, и приложения совместно используют ключи publi c сторон назначения. Вы можете использовать случайный ключ для шифрования данных и rsa для шифрования ключа данных. Тогда не стесняйтесь использовать Intend и Bundle для перемещения зашифрованных данных и зашифрованного ключа.

Это может быть хорошей отправной точкой для начала.

Редактировать:

Мне нужно отправить данные из одного моего приложения (A) в другое (B). Таким образом, A зашифрует данные и отправит данные в B с шифрованием (ключ генерируется в приложении A).

Если вы отправите ключ шифрования (назовем его ключ данных ) по обычным данным, любой, кто перехватит трафик c (намерение или пакет), сможет расшифровать данные. Так вот, где RSA входит в игру. Вы можете зашифровать ключ данных так, как только B может его расшифровать

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

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

По сути - приложение B должно создать пару ключей (publi c и закрытый ключ). Ключ publi c используется для шифрования, закрытый ключ - для расшифровки. A должен получить publi c ключ B для шифрования ключа данных. Как получить ключ publi c от B до A, зависит только от вас (общее хранилище, настройка в приложении, ..)

Вы хотите передать зашифрованные данные без совместного использования общего секрета между приложениями, а затем RSA - это путь к go.

...