云社区 博客 博客详情
云社区 博客 博客详情

电商大促遇到区块链:狂欢中信息安全“保卫者”

Oo小孩儿 发表于 2020-06-17 18:54:12 06-17 18:54
Oo小孩儿 发表于 2020-06-17 18:54:12 2020/06/17
0
0

【摘要】 在安全隐私保护的设计与实现方面,华为云区块链服务也有着专业的服务产品——华为云区块链服务BCS(BlockChainService)。华为云区块链服务的构建基于开源的区块链框架hyperledger fabric,除了支持原生开源框架内部的PKI身份证书认证、交易签名校验、数据传输安全TLS等措施外,华为云区块链服务在华为云安全的基础上还额外增加了新的安全特性,为区块链服务提供高安全环境。

近期,618大战如火如荼,各商家不仅是销售额的比拼,更是技术间的较量。开发者关心的是什么?华为云官方揭秘618背后的神秘黑科技:聊聊有哪些厉害的技术,能为618大促保驾护航?能大大提高程序员的幸福感?欢迎点击我们的黑科技攻略专题,也欢迎留下你的想法哦~~

买买买大爆发,区块链技术也成为了新的消费时代服务技术。区块链作为一种基于可靠数据,通过智能合约执行去中心化的可信计算任务。作为目前最为热门的技术之一,其去中心化、可信的交互机制具有改变众多行业商业模式的可能。这几年的电商大促活动背后,我们看到了“新技术”区块链与“传统”电商、物流平台碰撞出了更多的火花。

众所周知,区块链作为一种技术解决方案,具有开放、共识、去中心化、不可篡改、匿名等特点。在电商平台的应用中,区块链技术能够从:商品溯源解决假货问题;信息上链优化快递配送方案、提高物流效率;提高支付效率、提供风控保障三个方面,为电商平台带来新体验。

在安全隐私保护的设计与实现方面,华为云区块链服务也有着专业的服务产品——华为云区块链服务BCS(BlockChainService)。华为云区块链服务的构建基于开源的区块链框架hyperledger fabric,除了支持原生开源框架内部的PKI身份证书认证、交易签名校验、数据传输安全TLS等措施外,华为云区块链服务在华为云安全的基础上还额外增加了新的安全特性,为区块链服务提供高安全环境。

本文主要描述:

如何基于虚拟私有云网络VPC建立租户区块链节点的隔离机制;

从安全合规性角度讨论国密算法SM2/SM3/SM4的支持,为用户提供多样性的哈希和签名策略;

为保护交易参与方的隐私性,提供范围可证明的加法同态加密机制。

本文通过一个区块链应用开发作为示例,详细描述如何使用BCS的安全隐私保护的特性。

区块链服务的租户数据隔离机制

华为云对云端数据的隔离是通过虚拟私有云(VPC –Virtual Private Cloud)实施,它将不同租户间的网络深度隔离,保证了不同租户间的数据不会被越权获取。

通过VPC,租户可以完全掌控自己的虚拟网络,实现不同租户间在二、三层网络的完全隔离:

• 一方面,结合VPN或云专线,将VPC与租户内网的传统数据中心互联,实现租户应用和数据从租户内网向云上的平滑迁移;

• 另一方面,利用VPC的安全组功能,按需配置安全与访问规则,满足租户更细粒度的网络隔离。

在华为云区块链服务中区块链联盟成员独立为单独的一个租户,每个租户单独运行在一个VPC中,利用华为云VPC数据隔离机制来保障每个联盟成员的数据隔离和权限隔离,从而满足区块链系统的多中心化、多方参与、多方共识和不可篡改等独立、安全原则。

例如在如下的三个租户建立的联盟链网络中, 每个租户在自身的VPC内构件区块链的组织和节点,用于存放账本数据。只有租户的管理者才会对自己本VPC内的节点和数据具有管理权限。每个租户可以设置EIP(external IP)和端口,将锚点的访问地址发布以便其他租户集群的锚点可以与其建立连接。同样,我们将共识组织内的节点构建于一个私有集群,并为每个共识节点发布EIP和端口,使得各租户组织的leader节点可以与共识节点建立连接。

国密算法的设计和使用

华为云区块链服务是基于hyperledger fabric开源框架构建的,采用如下图所示的为每个组织生成的msp证书完成身份的认证、 tls证书完成通信安全。

为满足金融行业特定需求,BCS开发了基于国密算法的证书签名机制,使得在应用app和节点peer之间、peer和peer之间、以及peer和共识节点orderer之间采用基于国密算法签名的证书认证机制。国密算法是国家密码局制定标准的一系列算法,随着金融安全上升到国家安全高度,国密算法的应用也越来越广泛,2017年11月SM2/9正式进入ISO/IEC标准。华为云区块链支持国密SM2/3/4,提供多种加密算法给用户选择,同时满足合规要求。SM2是基于ECC的国密非对称加密机制,SM3是国密消息摘要机制,SM4是国密对称加密机制。




在区块链服务订购页面,如下图所示安全机制选项选择国密算法,点击确认后就可以创建一个使用国密算法签名成员身份证书的区块链网络。



在节点peer和共识节点orderer都配置国密算法签名的身份证书验证机制后,上层应用app同样也需要使用国密证书与peer点进行通信。上层app使用fabric sdk向区块链节点peer发送交易请求,这里我们需要下载具有国密算法支持的sdk包, 修改sdk配置文件启动国密签名算法、配置sdk使用国密签名证书。

下载国密算法支持的SDK包

华为云BCS提供了支持国密算法的go语言的1.8.5版本

(https://bcs.obs.myhwclouds.com/ sdk1.8.5.tar.gz) 。

和1.9.2版本

(https://bcs.obs.myhwclouds.com/sdk1.9.2.tar.gz)的SDK。

国密算法支持的SDK涵盖了开源SDK的所有功能,保证了对上层应用的兼容性。下载SDK包解压缩后可以得到3个目录,分别为bin、src和pkg。

bin目录中存放证书私钥的加密工具encrypt_tool;

src目录存放用于引用国密静态库的源码文件;

pkg目录存放静态库代码。

国密SDK具有依赖库,依赖的库文件位于SDK库的src目录中,其路径为src/github.com/hyperledger/fabric-sdk-go/sm/lib/。

将里面的两个动态库文件libcrypto.so和libcrypto.so.1.1拷贝至/usr/local/include/openssl/目录下(如果没有该目录,请自行创建该目录)。

然后设置环境变量 export LD_LIBRARY_PATH=/usr/local/include/openssl: $LD_LIBARARY_PATH。

如果用户环境中缺少ltdl库,则需要安装libtool工具,具体安装方法可以参考linux操作系统包管理工具,如ubuntu系统可以使用apt-get install libtool来安装,或者下载源码进行编译安装,下载地址为https://www.gnu.org/software/libtool/。

修改SDK配置文件启动国密签名算法

参考“基于华为云区块链服务快速部署和搭建链上应用” 一文中开发业务层链码应用中配置fabric sdk步骤,下载SDK yaml配置文件,并注意检查该配置文件中的签名算法是下图中的值。



配置sdk使用国密签名证书

将SDK的配置修改为启动国密签名证书后,开发者需要登陆BCS管理页面下载共识组织orderer的证书和本组织的用户证书,并将证书放入sdk yaml中指定的证书存放路径。


开发者可使用openssl命令openssl x509 –in ca.example.com-cert.crt –text -noout查看所下载的证书内容是否采用国密签名机制如下图所示。


范围可验证的同态加密的设计和使用

区块链本身所采用的哈希、签名机制可以在开放的网络环境中保障账本数据的防篡改、可追溯。区块链设计的本身使得账本数据对每个参与方是可达的,即用户的账本对各个参与方是透明的,任何组织都可以访问到相同的数据。

如果将用户的隐私数据放到链上将会放大用户隐私泄露的风险,例如当前在比特币等公有链系统中,所有的交易信息都是公开的(包括交易金额)。然而,在企业级应用系统如金融业的交易中,金融交易信息往往是敏感数据,非业务相关方不能查看,且同时要满足监管机构的监管要求。目前,大部分的区块链并没有满足用户的隐私性要求,针对该问题华为云区块链服务提供了范围可验证的同态加密解决方案,保障了用户交易过程中不泄露隐私信息。



如上图中A向B转账10元,需要区块链节点记账,但是用户不想让区块链节点知道交易金额以及最新余额。同态加密技术可以实现无密钥方对密文的计算,密文计算无须经过密钥方,既可以减少通信代价,又可以转移计算任务,平衡各方的计算代价。

华为云BCS服务首先提供同态加密库,对用户的交易数据用其公钥进行加密保护,交易的时候都是密文运算,最终账本中加密保存,即使节点被攻破,获取到账本记录也无法解密;其次华为云BCS服务提供范围证明校验,背书节点能够对密文进行背书,无需解密就能校验交易的正确性,如校验转账金额是否为负数,从而识别出恶意交易风险,保证了智能合约的正确执行。

假设A向B转账,我们通过如下的代码示例来说明如何使用BCS服务的同态加密库。开发者首先要到BCS的官方网站上下载同态加密库homomorphic lib, 用于上层应用的开发。对于每个交易方,应用层需要为每个交易主体生成公私钥对,将公钥的哈希值作为该用户的交易地址,利用链代码id chaincode存储并查询用户的公钥,即账本KV的存储方式为key=hash(公钥),value=公钥。



基于如上公钥地址的设置,当A向B转账时,在上层应用app端主要包含四个步骤,即:

1、根据转账接收方B的地址调用id chaincode查询B的公钥值;

2、从账本数据中获取发起方A的当前加密余额;

3、构建A向B的转账信息;

4、调用转账链代码tx chaincode触发交易,代码示例如下。

其中pswapi_sdk.PrepareTxInfo是同态加密库homomorphic lib提供的方法,六个参数分别为发起方的当前金额密文cipherBalanceAKeyA, 转账金额transNum, A的公钥PubKeyA, B的公钥PubKeyB, A的私钥PriKeyA和A的私钥保护口令propwd。经过该方法构造的转账信息txInfoSer中含有分别用A和B的公钥加密的转账金额,用A的公钥加密的A转账后的余额等。该txInfoSer数据被序列化后在TLS通道中传递给链代码方,触发链代码的转账运算。



对应的在链代码这一端,需要执行的逻辑包括:

1、获取A/B账户当前的余额;

2、基于范围/等式证明验证交易的合规性,并基于同态加密库计算交易后的账户余额;

3、更新交易后的A/B账户的余额,代码示例如下。

其中pswapi_cc.ValidateTxInfo是同态加密库homomorphic lib提供的方法,三个参数分别为应用端传送过来的转账信息txInfo, 发起方A的当前加密余额cipherBalanceAKeyABlock,接收方B的当前加密余额cipherBalanceBKeyBBlock。该函数内部执行基于范围/等式验证(如验证转账金额是不是负值,A转账后的余额是不是负值等)的同态加密运算,并返回运算结果即转账后的A的加密余额newCipherBalanceA和B的加密余额newCipherBalanceB。最后,该链代码将各方转账后的余额密文更新到账本数据中。

结论

本文从区块链节点的租户隔离机制、安全合规性的国密算法支持机制以及范围可验证的同态加密机制讨论了华为云区块链服务的增强安全特性。

后续华为云区块链服务将会提供零知识证明能力,零知识证明能够在不向验证者提供任何有用的信息情况下,使验证者来相信该结论是正确的,证明过程中不用向验证者泄露被证明的消息,从而减少用户隐私泄露风险。

更多精彩内容,请扫描下方二维码关注“华为云”公众号~


登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 0
点赞
分享文章到微博
分享文章到朋友圈

评论 (0)


0/1000
评论

登录后可评论,请 登录注册

评论

您还没有写博客的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消