Как правило, при использовании открытых ключей хранят не сами ключи, а их сертификаты. Сертификат представляет собой набор данных
CA=(A,kA,t,SkTA(A,kA,t)),
состоящий из идентификатора абонента А, его открытого ключа kА и, быть может, еще какой-либо дополнительной информации, например, времени t выдачи сертификата и срока его действия, заверенных цифровой подписью доверенного центра ТА или заслуживающего доверия лица. Сертификат предназначен для исключения возможности подмены открытого ключа при его хранении или пересылке.
Получив такой сертификат и проверив цифровую подпись, можно убедиться в том, что открытый ключ действительно принадлежит данному абоненту.
Международный стандарт CCITT X.509 определяет следующий протокол аутентификации с одновременным распределением ключей:
1. A→B:Ca,Da,Sa(Da),
2. В→А: CB,DB,SB(DB),
3. A→B:rB,B,SA(rB,B),
где СА и СB — сертификаты сторон, SA и SB — цифровые подписи сторон,
DA = (tА ,rA,B, data1, ЕB (k1)),
DВ = (tВ, rB, A,rA, data2,ЕА (k2))
- наборы передаваемых и подписываемых данных. В поля data заносится дополнительная информация для аутентификации источника. Третий шаг протокола требуется стороне В для подтверждения того, что она действительно взаимодействует со стороной А.