命名数据网络 | 带签名的兴趣包(Signed Interest)

命名数据网络 | 带签名的兴趣包(Signed Interest)

参考文档:https://docs.named-data.net/NDN-packet-spec/current/signed-interest.html

Signed Interest 是一种发布经过身份验证的 Interest 包的机制。

带签名的兴趣包指的是一个 Interest 包:

  • 名称以 ParametersSha256DigestComponent 结尾。
  • 存在 InterestSignature。

有关兴趣签名元素格式的详细信息,请参见 Interest Signature

Signed Interest 的构建

以下程序描述了 Interest 包的签署过程:

  1. 删除 Name 中存在的所有 ParametersSha256DigestComponent 组件,无论其位置如何。
  2. 如果 ApplicationParameters 元素不存在,则向 Interest 包中添加一个零长度的 ApplicationParameters 元素。
  3. 准备一个 InterestSignatureInfo 元素,并将其附加在 Interest 包的末尾。
  4. 根据 兴趣签名 一节计算加密签名。
  5. 将计算的签名作为 InterestSignatureValue 元素插入到 Interest 包的末尾。
  6. 根据 参数摘要组件 一节计算 ParametersSha256DigestComponent,并将其附加在 Name 的末尾。

Signed Interest 的处理

在收到 Interest 包后,根据 Interest 包的名称的前缀,生产者应该能够判断 Interest 包是否需要签名。如果需要对接收到的 Interest 包进行签名,应用程序协议或生产者也应该显式地定义是否必须在 InterestSignatureInfo 中存在 SignatureNonce、SignatureTime 和/或 SignatureSeqNum。如果缺少任何必需的元素,则将这个 Interest 包视为无效。

此外,如果以下任何情况属实,一个 Signed Interest 必须被视为无效:

  1. Name 组件不是 ParametersSha256DigestComponent,或者根据 参数摘要组件 一节,它的 TLV-VALUE 不正确。
  2. 缺少 InterestSignatureInfo 元素或者缺少 InterestSignatureInfo 元素的任何强制子元素。
  3. 缺少了 InterestSignatureValue 元素。
  4. 无法对签名进行加密验证。
  5. 用于创建签名的密钥不受信任,无法对 Interest 包进行签名。
  6. 如果在 InterestSignatureInfo 中存在 SignatureTime(t):
    查找与同一密钥一起使用的最后记录的SignatureTime(t0)。如果没有先前的记录,则使用 CurrentTime - GracePeriod。建议宽限时间为 60 秒。如果 t0 >= t,则认为 Interest 包是无效的。如果 Signed Interest 已根据此规则和所有其他规则进行验证,则将 t0 设置为 t。

不建议共享私钥。如果私钥共享是不可避免的,那么密钥所有者有责任保持时钟同步。

  1. 如果 SignatureNonce 存在:
    要执行此检查,收件人必须记住先前收到的 Signed Interest 中携带的 SignatureNonce 列表,该列表与特定签名密钥一起使用。检查当前 Signed Interest 中携带的 SignatureNonce 是否与使用相同密钥的已记录的 SignatureNonce 重复。如果是重复,则将该 Interest 包视为无效。如果已根据此规则和所有其他规则验证了 Signed Interest,则将新收到的 SignatureNonce 添加到 SignatureNonce 列表中。

SignatureNonce 列表的大小和接收方记住的每个 SignatureNonce 的生命周期取决于应用协议的需要。

  1. 如果 SignatureSeqNum(s) 存在:
    查找与同一密钥一起使用的最后记录的 SignatureSeqNum(s0)。如果 s0 >= s,则认为该 Interest 包无效。如果没有先前的记录,请对照应用程序的策略进行检查。如果不符合应用程序的策略,则将 Signed Interest 视为无效。如果 Signed Interest 已根据此规则和所有其他规则进行验证,则将 s0 设置为 s。

接收到的第一个 SignatureSeqNum 只有在满足应用程序的策略时才被认为是有效的。例如,应用程序可以决定第一个 SeqNum 只能是像 0 或 1 这样的最小值,或者是发送方和接收方都同意的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值