跳到主要内容

5.1.3 Authentication Using an Asymmetric Key (使用非对称密钥进行认证)

5.1.3 Authentication Using an Asymmetric Key (使用非对称密钥进行认证)

此变体通过允许接收者认证发送者持有给定的 KEM 私钥来扩展基本机制.这是因为 AuthDecap(enc, skR, pkS) 仅在封装值 enc 由 AuthEncap(pkR, skS) 生成时才生成正确的 KEM 共享秘密, 其中 skS 是与 pkS 对应的私钥.换句话说, 最多两个实体 (在 DHKEM 的情况下恰好是两个) 可以生成此秘密, 因此如果接收者最多是其中一个, 则发送者以压倒性的概率是另一个.

与基本情况的主要区别是对 Encap() 和 Decap() 的调用被替换为对 AuthEncap() 和 AuthDecap() 的调用, 后者将发送者公钥添加到其内部上下文字符串中.函数参数 pkR 和 pkS 是公钥, enc 是封装的 KEM 共享秘密.

显然, 此变体只能与提供 AuthEncap() 和 AuthDecap() 过程的 KEM 一起使用.

此机制仅认证发送者的密钥对, 而不认证任何其他标识符.如果应用程序希望将 HPKE 密文或导出的秘密绑定到发送者的另一个身份 (例如, 电子邮件地址或域名), 则应将此标识符包含在 info 参数中以避免身份错误绑定问题 [IMB].

def SetupAuthS(pkR, info, skS):
shared_secret, enc = AuthEncap(pkR, skS)
return enc, KeyScheduleS(mode_auth, shared_secret, info,
default_psk, default_psk_id)

def SetupAuthR(enc, skR, info, pkS):
shared_secret = AuthDecap(enc, skR, pkS)
return KeyScheduleR(mode_auth, shared_secret, info,
default_psk, default_psk_id)