备注:下文只做简单的翻译,没有做校验
目录
概观
与PSKv1一样,PSKv2使用发件人和收件人之间共享的秘密来生成支付条件和履行情况,而无需重复的端到端通信。PSKv2可用于发送单个数据包或多个数据包,以及可用于报价的无法实现的测试支付。
与其他协议的关系
PSKv2旨在与ILPv4 Prepare,Fulfill和Reject数据包配合使用。
应用程序或更高级别的协议可能会使用PSKv2来发送个别请求和响应或信息引用。
PSKv2不包含分段和重新组合分组的功能,但它可以用于实现此类功能的更高级协议。这些更高级别的协议可能会在PSK数据包的数据字段中包含附加字段,以对各个请求和响应进行分组或排序。
建立
在使用PSKv2之前,发送者和接收者使用经过验证的加密通信通道(通常作为应用层协议的一部分提供)进行交换:
- PSK版本(比如
2.0
这个版本) - 一个32字节的随机或伪随机共享密钥
- 接收者的ILP地址
接收者可以根据长期秘密和随机数生成共享密钥,如PSKv1的附录A:推荐的生成共享秘密算法中所述。在这种情况下,接收方会将随机数(不是秘密)附加到他们的ILP地址,以创建与发送方通信的目标地址。
加密
在PSKv2.0中,使用带有12字节初始化向量(IV)和16字节身份验证标签的AES-256-GCM对请求和响应数据进行加密。
如果后续版本支持额外的加密算法,那么在发送者和接收者建立预共享密钥时应该交换这些详细信息。如果接收方试图解密传入的数据包,但无法(可能是因为发送方使用不支持的密码),他们应该拒绝传入的传输并发生F06: Unexpected Payment
错误。
条件和履行
发送方和接收方使用为该协议命名的预共享密钥生成条件和履行。该履行是从预共享密钥和加密的PSK数据中计算出来的。条件是实现的散列。
与在PSKv1中一样,这种生成条件和履行的方法可以为每个支付发送无需端到端通信的许多付款。但是,由于发件人也事先知道履行情况,因此两种PSK版本都不允许发件人将履行情况用作不可否认的付款证明。对于需要这种情况的用例,应该使用Interledger支付请求(IPR)等传输协议。
端到端的报价
与依赖于Interledger报价协议(ILQP)的 PSKv1 相比,PSKv2有两种内置的机制来发现给定路径的交换率:信息报价和动态价格发现。