0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

区块链如何进行加密和签名

Wildesbeast 来源:今日头条 作者:精通数据科学 2020-02-18 14:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

场景一

转账交易:

假设我要做个转账的app叫支付宝,要完成转账的功能,转账时,需要输入对方支付宝账号和姓名,然后点击转账,输入支付密码,就可以完成转账的功能。

实现方式,客户端通过http协议发送转账报文给服务端

报文无加密和签名机制

现在用户甲要转账给用户乙。

安全隐患

网络传输不安全,如果有人截取客户端请求报文,进行篡改,比如篡改收款方的支付宝账号和真实姓名,那么服务端就会把钱转到别的地方去。

结论:需要防止报文被篡改

场景二

商城A要接支付宝移动支付,大致流程:

客户端app调用支付宝的sdk发送支付报文

客户端接收支付宝服务端的处理响应

商户服务端接收支付宝服务端的交易成功通知

客户端发送请求的安全隐患同场景一

服务端接收通知时,存在如下隐患,黑客甲,去商城A

人为模拟支付宝的通知报文,将订单变成成功。

这是一个通知报文要做签名的案例

需要注意的是,步骤2和3同样需要做签名验证

结论:需要确认报文来自真实合法的服务端(其实在商户对商户的通信过程中,也需要确认报文来自真实合法的客户端)

场景一和场景二的最终结论

安全网络通信过程中,需要防止报文被篡改

安全网络通信过程中,需要客户端和服务端双方确认对方的身份,即交易完成后,不可抵赖

方案一 对称加密签名机制

具体方案:用一种对称加密算法将报文加密,并得出一个签名串

举例:MD5加密签名,签名串=md5(原文&密钥)(其他对称加密算法签名道理是一样的,不做详述)

假设最终的报文是:最终报文=原文&签名串

此方案达到的效果:

如果黑客截取报文,并篡改原文,那么服务端进行验签的时候,将不会通过。

因为原文变化了,算出的签名串会改变,那么黑客需要重新计算出签名串

要算出签名串,需要知道如下要素

签名算法(包含加密算法),原文,密钥

前2个肯定是会暴露的,无法保密,而客户端是app,密钥也是暴露的,所以签名串会被重新计算出来,因此黑客将成功篡改转账报文。

方案二 对称加密签名,动态密钥

从方案一我们得出一个结论:

签名算法(包含加密算法),原文,密钥三者只要保证其中一个不被黑客截取,将无法算出签名串,也就无法篡改报文。

那么我们可以动态生成签名的密钥,并用rsa公钥对其进行加密(此处rsa私钥在服务端,不会泄密,因为签名密钥不会被解密),然后传至服务端

次方案用于场景一,可以解决报文被篡改的问题。

但是服务端就无法确认客户端是否合法,尤其在机构与机构通信的时候,这个方案就更不可取。

且次方案不适合于方案2,支付宝服务端发通知的时候,总不能动态产生密钥,这样你就无法判定报文是否是支付宝服务端发送来的。

方案三 报文加密(对称加非对称)

从方案一我们得出一个结论:

签名算法(包含加密算法),原文,密钥三者只要保证其中一个不被黑客截取,将无法算出签名串,也就无法篡改报文。

那么我们就采取对报文加密,可用方式是对称加密和非对称加密

1.对称加密:3des

签名串=md5(原文&密钥1)

最终报文=3des密钥2&签名串

传输过程中,报文是加密的,无法篡改(因为无法拿到用户关键信息,如session,tokenId等认证信息),看似没有问题,但是密钥1和密钥2都可能泄密,而且3des会被解密掉,所以又回到方案一的结果。

2.非对称加密+对称加密:3des+rsa+md5

那么我们可以从方案二吸取经验,用rsa密钥加密对称加密密钥

签名串=md5(原文&密钥1)

最终报文=3des密钥2|签名串|rsarsa公钥

此方案仍然有方案二的缺陷,只能解决场景1,不能解决场景2

原因在于签名的密钥,服务端和客户端是一样的,无法产生唯一性身份

我们需要用rsa来签名

方案四 rsa签名+https

报文加密是必须的,那么我们用https加密,其原理同非对称加密+对称加密

场景一方案:

客户端产生一对公私钥 pubKey_c,priKey_c

服务端产生一对公私钥 pubkey_s,priKey_s

客户端与服务端置换公钥

最终持有情况如下:

客户端:pubkey_s,priKey_c

服务端:pubKey_c,priKey_s

客户端发送报文:

签名串=rsapriKey_c

最终报文=https(报文原文+签名串);

场景二,相对于场景二

服务端用pubKey_c做验签,

产生效果:客户端私钥priKey_c没有被盗取时,可以防止报文被篡改,且服务端可以确认信息来自合法的客户端,在机构与机构通信时,次种假设是成立的。

客户端是app, 客户端私钥priKey_c会被盗取,不能保证客户端的合法性(即客户端可以不是官方提供的),但仍然可以防止报文被篡改。

服务端响应报文时:

签名串=rsapriKey_s

最终报文=https(报文原文+签名串);

产生效果:因为服务端的私钥priKey_s在理论上是不会泄密的,所以可以保证响应报文不会被篡改,且来自真实合法的服务端

场景二方案:

支付宝服务端发送报文:

签名串=rsapriKey_s

最终报文=https(报文原文+签名串);

客户端用pubkey_s来验签即可,可保证,报文不会被篡改,且来自真实合法的服务端

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • APP
    APP
    +关注

    关注

    33

    文章

    1589

    浏览量

    75640
  • 支付宝
    +关注

    关注

    2

    文章

    465

    浏览量

    25817
  • 区块链
    +关注

    关注

    112

    文章

    15574

    浏览量

    110512
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32F030C8T6数字签名实战

    对哈希值进行RSA加密,生成签名。 公钥验证:在设备端用预置的公钥解密签名,与重新计算的哈希值比对。 2.3 代码示例 (基于mbedTLS) 使用 CW32F030C8T6 实现 E
    发表于 11-19 08:03

    CW32F030C8T6数字签名的实战指南

    对哈希值进行RSA加密,生成签名。 公钥验证:在设备端用预置的公钥解密签名,与重新计算的哈希值比对。 2.3 代码示例 (基于mbedTLS) 使用 CW32F030C8T6 实现 E
    发表于 11-18 06:35

    L083最低功耗是多少,应该如何进行低功耗设计?有哪些注意事项?

    L083最低功耗是多少,应该如何进行低功耗设计?有哪些注意事项?
    发表于 11-12 07:29

    加密算法的应用

    机。但是,由于加密技术的保密性,直到二战结束后,人们才开始研究加密技术的理论,进一步推动了加密技术的发展。 2. 加密算法的含义 加密
    发表于 10-24 08:03

    基于FPGA利用sm4进行实时图像加密

    求一份在fpga上利用sm4进行实时图像加密的文件
    发表于 09-15 19:05

    请问如何使用ICP工具对NUC505进行加密编程?

    如何使用ICP工具对NUC505进行加密编程?
    发表于 08-18 07:18

    请问STM32WBA65如何进行matter的学习?

    STM32WBA65如何进行matter的学习?相关的支持都有哪些?有一个X-CUBE-MATTER,可是这个没有集成在STM32CubeMX中
    发表于 04-24 07:22

    抵御量子计算威胁:航芯「抗量子密码加密签名方案」为信息安全筑起新防线

    攻击,航芯正加速推进在抗量子密码等前沿领域的深度布局。通过将芯片安全信任根技术(PUF)与抗量子密码算法的深度融合,航芯正式推出基于PUF的「抗量子密码加密签名
    的头像 发表于 04-14 11:01 839次阅读
    抵御量子计算威胁:航芯「抗量子密码<b class='flag-5'>加密</b><b class='flag-5'>签名</b>方案」为信息安全筑起新防线

    如何在MBDT中使用S32k344进行加密

    我想加密和解密通过 CAN 总线发送的数据,为此我想使用 S32k344 中的 HSE 模块在 MBDT 1.5 中进行对称加密-解密,但工具箱中没有可用的块。那我该怎么做呢。请分享与 HSE 相关的文件。
    发表于 03-25 07:21

    何进行电磁干扰处理

    智慧华盛恒辉如何进行电磁干扰 一、引言 电磁干扰已成为一种重要的作战手段,用于削弱、瘫痪或混乱敌方的通信、控制和侦察系统。如何对敌方的装备进行电磁干扰,包括干扰原理、干扰方式、干扰策略以及干扰效果
    的头像 发表于 02-20 10:28 1180次阅读

    DLP4710EVM-LC如何进行烧录?

    DLP4710EVM-LC: 如何进行烧录
    发表于 02-20 08:07

    采用AFE0064和ADS8363加fpga结构,如何进行控制?

    采用AFE0064和ADS8363加fpga结构,详问如何进行控制?
    发表于 02-05 06:10

    请问做反射式血氧饱和度测量时如何进行标定呢?

    请问做反射式血氧饱和度测量时如何进行标定呢? 目前已完成透射式血氧饱和度测量仪的设计和实现,采用的Fluke的生命体征模拟仪Prosim8进行标定的,仪器有一个模拟手指,可以将指套式探头夹在模拟
    发表于 01-08 06:42

    请问ADS8689 AGND和DGND如何进行处理?

    请问ADS8689 AGND和DGND如何进行处理?是把AGND和DGND处理为同一个地,还是AGND和DGND通过0欧电阻进行连接?为什么?
    发表于 12-26 06:42

    加密算法在网络安全中扮演什么角色?

    : 通过哈希函数和消息认证码(MAC),加密算法可以检测数据在传输过程中是否被篡改,确保数据的完整性。 提供身份验证 : 非对称加密算法和数字签名技术可以验证通信双方的身份,防止身份冒充攻击。 实现数据
    的头像 发表于 12-17 16:00 876次阅读