1.一种能防污染攻击和定位中间节点合谋攻击的网络编码签名方法,采用网络编码系统;
其特征在于:所述系统包括秘钥分配中心KDC、信源节点S、中间节点和信宿节点DC;
所述方法包括以下步骤:
步骤1:系统初始化;
具体实现包括以下子步骤:
步骤1.1:秘钥分配中心KDC根据网络规模及参数,产生私钥生成矩阵Γ;
根据网络许可的编码最大长度n,编码代次的数据包的个数m;同时根据网络最大中间节点数r,选择一个l>m+n+r,生成一个(l‑m‑n‑r)×l行满秩矩阵A,由A产生私钥生成矩阵Γ;所有操作在编码定义域Fq中完成;
步骤1.2:秘钥分配中心KDC根据节点身份,由Γ产生私钥,进行颁发;
其中,信源节点S与信宿节点DC的私钥都是完整的矩阵Γ;而任意一个中间节点i,得到Γ的某个行向量Γi,或者Γi隐藏于素数群生成元g指数上的有序集合其中,Γij表示Γi中的第j个元素;i∈I,I表示全体节点集合;
具体分发方式如下:
步骤1.2.1:秘钥分配中心KDC,基于安全信道,将Γ当作私钥发给信源节点S;
步骤1.2.2:秘钥分配中心KDC,根据中间节点的身份认证信息,基于安全信道,将Γ的第i行Γi,或者 当作私钥分发给相应中间节点i;其中,不是有的节点选择Γi,有的节点选择 而是根据安全需要,在全网统一的使用相同的密钥;
步骤1.2.3:秘钥分配中心KDC,基于安全信道,将Γ当作私钥发给信宿节点DC;
步骤2:信源节点S生成签名与编码;
步骤2的具体实现包括以下子步骤:步骤2.1:信源节点S根据自己的私钥Γ对信息产生签名信息;
步骤2.2:信源节点S将签名信息添加到信息末尾形成完整的数据包;
步骤2.3:信源节点S按线性网络编码规则编码数据包,并向下游节点转发;
步骤3:中间节点验证数据包的正确性;
步骤3的具体实现包括以下子步骤:步骤3.1:记下游中间节点j收到来自上游中间节点i的数据包为数据包Ui,j,其中Ui,j下标,表示从节点i到节点j的发送关系;用其私钥Γj或者 校验签名;
步骤3.2:验证通过,则将数据包Ui,j导向下一步操作,否则就丢弃数据包Ui,j;
步骤4:中间节点重编码数据包;
通过下游中间节点j,对所有通过验证的,来自不同上游中间节点所有数据包集合{Ui,j}进行线性组合重编码,并发送给下游节点;在这一步骤中,允许恶意节点形成伪造,或者合谋伪造的数据包;
步骤5:信宿节点DC追踪恶意节点;
步骤5的具体实现包括以下子步骤:步骤5.1:信宿节点DC,对收到的数据包集合{Ui,DC}进行校验,使用的是其私钥Γ;
步骤5.2:对{Ui,DC}中校验完全正确的数据包,按一般线性网络编码规则进行解码;
步骤5.3:对{Ui,DC}中校验完全不正确的数据包,丢弃;
步骤5.4:对部分校验通过数据包,利用编码理论中的Berlekamp算法,在基Γ上求向量分解,检测是哪些中间节点合谋伪造包;
其中,信宿节点需执行校验r次,r为最大中间节点数,r次均通过的为校验完全正确的数据包,一次也没通过的为完全不正确,通过至少一次不足r次的为校验部分通过;在基Γ上求向量分解,在Γ上对应行上存在分量,可以判断持有该行作为密钥的中间节点,参与了合谋伪造包。