首页 > 其他分享 >基于区块链的移动边缘计算 群签名和认证方案

基于区块链的移动边缘计算 群签名和认证方案

时间:2023-02-25 19:13:30浏览次数:53  
标签:MU 认证 mu sig 签名 pk 区块

一、介绍

BMEC:Blockchain-Based Mobile-Edge Computing

  • 作用

    BMEC解决了移动区块链环境中设备计算资源有限的问题,同时保证了计算资源的分布式部署和交易数据的可追溯性。

  • 安全漏洞

    区块链技术存在许多安全漏洞,其中针对一致性算法的攻击尤为严重,如双花费攻击、远程攻击和自私挖掘。所有这些攻击都可以破坏BMEC的完整性,允许正确的块记录被错误的块记录覆盖(攻击者可以秘密创建一个更长的私有链来重写区块链的原始记录历史)。

概述:将一个MEC服务器连接的移动设备用户设置为一个组,当发现新的区块时,每个组成员对其签名并聚合签名,(BLS签名算法)聚合签名交给其它组验证,验证成功之后加入区块链。

  • 本论文的目的:

    提出了一个适合BMEC架构的群签名方案,用于验证区块链块。BLS aggregate signature algorithm

    如果每个新块获得块创建者所属的组的有效组集合签名,则该新块将被视为有效块。

    我们详细描述了移动设备加入和离开BMEC时的认证和密钥变更过程。

    安全性分析:计算了double-spend attack 的成功概率,以及其它 consensus-level attacks, 例如 stake-bleeding attack

二、相关知识

安全威胁以及安全性分析

工作证明(PoW)和利益证明(PoS)容易受到安全威胁。

对于一个MEC服务器来说,其计算资源也远远不足以破坏基于PoW的区块链系统的共识机制。

然而破解区块链守恒机制的计算能力已经显著下降。因此,如果BMEC采用PoW作为区块链共识机制,也不能完全保证BMEC架构的安全性。

解决区块链共识层的威胁:

  1. 增加块确认的数量和增加交易的价值
  2. 采用频繁的检查点机制来阻止远程攻击
  3. 群签名技术

BLS签名算法

(BLS签名算法)[https://www.cnblogs.com/zhuowangy2k/p/12248721.html]

双线性映射

BLS签名算法1

(参考文章)[https://zhuanlan.zhihu.com/p/136015449]

1>初始化

\(G_1\), \(G_2\) 是阶为 p 的乘法循环群,生成元分别是 \(g_1\),\(g_2\),e 是双线性映射:\(G_1 * G_2 →G_T\)

安全Hash函数H: {0,1}* → \(G_1\)

公开\(( G_1, G_2, G_T, e, g_1, g_2, p, H )\)

2>密钥生成

选择随机数\(x∈Z^*\), 将x作为私钥,公钥为\(v = g_2^x, v∈G_2.\)

公钥 \(x, g_2^x\)

私钥v

3>签名

对于消息“message”,首先映射到循环群中的一点,记为

\(h = H(m)\), 使用私钥签名,签名结果为$ δ = h^x$

4>验证签名

公钥验证签名,即验证等式$ e(δ, g_2) ==e(h, v)$是否成立

证明过程:

BLS数字签名2

1>准备阶段

秘密选取随机数字作为私钥pk,计算公钥P = pk × G,待签名的消息m。

2>签名阶段

  1. 将消息哈希H(m)映射到曲线上的点,记为q;
  2. 将结果点乘以私钥得到签名: S = pk × q;

3>验证签名

检验 e(P, q) = e(G, S)

曲线配对函数e:

它可以接受输入一条(或两条不同)曲线上两点P和Q,输出至一个数字:\(e(P, Q) → n\)

特殊性质:

\(e(a * P, b * Q) = e(P, ab * Q) = e(ab * P, Q) = e(P, Q)^{(ab)}\)

验证过程:

\(e(P, q) = e(pk * G, q) = e (pk * G, q) = e (G, pk * q) = e (G, S)\)

BLS聚合签名

群签名技术

setup

群管理员计算出

\(签名密钥K^{pub}_{sig}, K^{pri}_{sig}, 加密密钥K^{pub}_{enc}, K^{pri}_{enc}\)

公开\(K^{pub}_{sig},K^{pub}_{enc}\)

当新成员加入时

分配随机密钥s, 成员密钥membership key z = f(s)

该成员对z签名,并发送给群管理员

群管理员向他发送 \(v = K^{pri}_{sig}\)

签名

成员对message 使用成员密钥z和\(K^{pub}_{enc}\) 加密;

提供proof p,证明该成员知道s, v(\(K^{pri}_{sig}\))的值。

签名由密文enc(m) 和证明p组成。

验证签名

打开签名

通过\(K^{pri}_{enc}\)对enc(m)解密,可以得到成员密钥z,找到对应的成员。

攻击者可以创建更长的私有链,使使用同一令牌的交易两次有效

三、正文

本论文中的BMEC结构

每个MEC服务器和一组连接的移动设备被视为一个组,其中MEC服务器充当组管理器。

符号 含义
MU 移动设备用户
MS MEC服务器
AS 认证服务器
RC 注册中心
\(ID^{MS}_i\) 第i组MEC编号
\(ID^{MU}_n\) 移动设备n的编号
\(pk_n\) 移动设备n的公钥
\(sk_n\)
\(pk^{as}\) 认证服务器的公钥
\(sk^{as}\)
\(pk^{gm}_i\) 第i组MEC服务器公钥
\(sk^{gm}_i\)
\(pk^{mu}_{i, n}\) 第i组第n个移动设备的公钥
\(sk^{mu}_{i, n}\)
\(f( )\) BLS聚合函数,可以聚合签名和公钥
\(GK_i\) 聚合之后的群公钥
\(sig^{mu}_{i,n}(m)\) 第i组第n个成员对m的签名
\(sig^{mu}_{i}\) 第i组对m的聚合签名
\(v()\) 聚合签名验证函数

MU加入一个组

step1:MU向AS发送自己的ID,AS通过安全通道向MU发送\(sk_n\),\(pk_n\)。

step2:MU向AS发送自己的ID和想加入的组的ID,然后通过下图方式验证。

step3:验证成功后发送ticket

  1. ticket包括\(pk^{mu}_{i, n},sk^{mu}_{i, n},pk^{gm}_i,GK_i,\)\(pk_n\)
  2. 以上信息通过\(pk^{gm}_i\)加密

step4:MU联系自己想要加入的第i组

MS接收ticket后,用\(SK^gm_i\)解密后再用\(pk_n\)加密传输,最终移动用户用户得到
\(pk^{mu}_{i,n}\)\(*sk^{mu}_{i,n}*\)\(pk^{gm}_i,GK_i,\)

MU更换一个组

当MU需要更换一个组,它们不需要再次与AS进行之前的认证过程,因为移动单元与位于云中的AS之间的会话延迟很大,并且认证步骤繁琐。

$MU (ID^{mu}n , pk_n, pk^{mu} ) $在加入组时存储在区块链上

第一轮验证

如果一个新的块是由第i组MS产生的,则该块在通过整个网络广播之前需要在第i组所有MU中进行验证。

如果某个MU通过了这次验证,则用他在组中的私钥

\(sk^{mu}_{i, n}\)生成 签名\(sig^{mu}_{i,n}(blkhash)\)。

只有当这个组中的所有成员都对这个块签名,这个块才能被告诉其它的组(之后还会有第二轮验证)。

为了减少签名数量,使用聚合函数(aggregate function)\(f()\)

\(sig^{mu}_i(blkhash)=f(sig^{mu}_{i,1}(blkhash),sig^{mu}_{i,2}(blkhash),...,sig^{mu}_{i,n}(blkhash))\)

第i组群公钥

\(GK_i = f(pk^{mu}_{i,1},pk^{mu}_{i,2},...,pk^{mu}_{i,n}\)\()\)

更新群公钥

新成员加入、老成员退出时\(GK_i\)会改变

Second Round of Block Validation

其他组的MU仅检查聚合签名

BLS聚合签名原理

假设

  1. 公钥pk
  2. 消息 m
  3. the curve generator G(用于生成公钥)\(pk^{mu}_{i, n} = G *sk^{mu}_{i, n}\)
  4. 签名sig(sig是BLS椭圆曲线上的四个点)

如果 \(v(pk, m) ==v(G, sig)\),则说明签名算法有效。

验签函数\(v()\)的性质:

  1. \(v(x ∗ P1, P2) = v(P1, x ∗ P2).\)
  2. \(v(G,sig_1)*v(G,sig_2)*...*v(G,sig_n) = v(G,f(sig_1,sig_2,...,sig_n))\)

由性质二,如果聚合签名有效则每个签名都有效

第一步:sig{mu}_i(blkhash)=f(sig{i,1}(blkhash),sig{mu}_{i,2}(blkhash),...,sig(blkhash))

第二步:sk^{mu}{i, n}生成 签名sig^{mu}(blkhash)。

第三步:将f()中每一项提取出blkhash

第四步:v(x ∗ P1, P2) = v(P1, x ∗ P2).

第五步:将 *G 加进f()中每一项

第六步:sk^{mu}{i, n}生成 签名sig^{mu}(blkhash)。

经过第二轮验证,这个块是合法的。

标签:MU,认证,mu,sig,签名,pk,区块
From: https://www.cnblogs.com/avengekiller/p/17155087.html

相关文章

  • 跨联盟链的门限签名
    将群分割为m个子群共有三层签名验证方案,第一层是对子群内单个节点签名验证(离散对数);第二层是每个子群计算验证成功的节点数,如果大于子群阈值则进行下一步计算;第三层是利用s......
  • Centos7 Kafka+zookeeper SASL认证实践
    一、概述上回已经完成kafka+zookeeper的基础功能的实现,但是因为默认不认证存在很大的安全风险,这次完成SASL_PLAINTEXT的认证类型实践。二、安全配置2.1zookeeperSASL配......
  • 将采购商认证报告同步到供应商
    将采购商认证报告同步到供应商INSERTINTOmls_sup_cert_reportsup(id,--idreportData,--报告日期dr,--逻辑删除标记certStandards,--认证......
  • 因外部依赖包内方法签名修改而导致线上NoSuchMethodError异常
    NoSuchMethodError异常问题描述修复大数据组件包包中的漏洞,将hive-common3.1.2版本升级到3.1.3,导致在连接hive表,查询schema时出现NosuchMethodError异常。报错堆栈信息......
  • 前端实现电子签名(web、移动端)通用组件
    前言在现在的时代发展中,从以前的手写签名,逐渐衍生出了电子签名。电子签名和纸质手写签名一样具有法律效应。电子签名目前主要还是在需要个人确认的产品环节和司法类相关的......
  • 小米路由器4c刷入openwrt并成功进行锐捷认证
    小米路由器4C刷入openwrt并成功进行锐捷认证前言:在大学中,宿舍有个路由器当然是刚需,然而,我们学校的校园网需要进行锐捷认证,常规的路由器还用不了,需要自己刷路由器或是......
  • 前端实现电子签名(web、移动端)通用组件
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"cont......
  • vue3使用canvas实现手写签名
    <div><canvas@mousemove="canvasMove"@mouseup="canvasUp"ref="canvas"width="1000"height="500"@mousedown="mousedown"@mouseleave="canvasLeave"></canvas>......
  • Django CSRF认证的几种解决方案
    什么是CSRF浏览器在发送请求的时候,会自动带上当前域名对应的cookie内容,发送给服务端,不管这个请求是来源A网站还是其它网站,只要请求的是A网站的链接,就会带上A网站的cookie......
  • 华为认证 Datacom 练习题
    1(单选题)下列配置默认路由的命令中,正确的是()。A、[Huawei]iproute-static0.0.0.00.0.0.0192.168.1.1B、[Huawei-Serial0]iproute-static0.0.0.00.0.0.00.0.0.0C、[......