App1 и App2 генерируют свои собственные пары закрытых / открытых ключей и обмениваются парами открытых ключей.Тогда рабочий процесс выглядит следующим образом:
App1 -> Data + App2-PublicKey = Encrypted Data
App2 -> Encrypted Data + App2-PrivateKey = Data
Таким образом, App1 или App2 шифруют данные только с помощью открытого ключа другого, так что только приложение может расшифровать их, используя свой закрытый ключ.Таким образом, обмен данными является безопасным.Если шифрование имеет вид:
App1 -> Data + App1-PrivateKey + App2-PublicKey = Encrypted Data
App2 -> Encrypted Data + App1-PublicKey + App2-PrivateKey = Data
, то теперь обмен данными является безопасным и аутентичным (т. Е. Два приложения будут уверены, что это другое приложение, связывающееся с ним).Ссылка: http://en.wikipedia.org/wiki/Transport_Layer_Security
Напоминание: открытый ключ для шифрования, а закрытый ключ для проверки.Кроме того, шаг подписи всегда является последним, поскольку он выполняется для окончательно обработанных данных.