【技术实践】RSA的公钥、私钥

2019-02-13 人浏览 点击收藏: 分享至:

  一、举个例子

  1、发消息

  用对方的公钥给对方发信息

  1.小明想秘密给小英发送消息

  2.小英手里有一个盒子( public key),这个盒子只有小英手里的钥匙( private key)才打得开

  3.小英把盒子送给小明(分发公钥)

  4.小明写好灣息放进盒子里,锁上盒子(公钥加密)

  5.小明把盒子寄给小英(密文传输)

  6.小英用手里的钥匙打开盒子,得到小明的消思(私钥解密)

  7.假设小刚劫持了盒子,因为没有小英的钥匙,他也打不开

  2、发公告

  发公告的时候,用自己的私钥形成签名

  其实公钥和私钥都可以用来加密或解密--只要能保证用A加密,就用B解密就行。至于A是公钥还是私钥,其实可以根据不同的用途而定。

  例如说,如果你想把某个消息秘密的发给某人,那你就可以用他的公钥加密。因为只有他知道他的私钥,所以这消息也就只有他本人能解开,于是你就达到了你的目的。

  但是如果你想发布一个公告,需要一个手段来证明这确实是你本人发的,而不是其他人冒名顶替的。那你可以在你的公告开头或者结尾上一段用你的私钥加密的内容(例如说就是你公告正文的一段话),那所有其他人都可以用你的公钥来解密,看看解出来的內容是不是相符的。如果是的话,那就说明这公告确实是你发的-因为只有你的公钥才能解开你的私钥加密的内容,而其他人是拿不到你的私钥的。

  最后再说一下数字签名。

  数字签名无非就两个目的:

  证明这消息是你发的;

  证明这消息内容确实是完整的-也就是没有经过任何形式的篡改(包括替换、缺少、新增)。

  其实,上面关于公告那段内容,已经证明了第一点:证明这消息是你发的。

  那么要做到第二点,也很简单,就是把你公告的原文做一次哈希(md5者sha1都行),然后用你的私钥加密这段哈希作为签名,并一起公布出去。当別人收到你的公告时,他可以用你的公钥解密你的签名,如解密成功,并且解密出来的哈希值确实和你的公告原文一致,那么他就证明了两点:这消息确实是你发的,而且内容是完整的。

  二、加密和签名

  RSA的公钥、私钥是互相对应的,RSA会生成两个密钥,你可以把任何一个用于公钥,然后另一个就是你必须保护好的私钥了。

  RSA的公钥、私钥都可以加密,也都可以解密。

  其中:

  · 用公钥加密需要私钥解密,称为“加密”。由于私钥是不公开的,确保了内容的保密,没有私钥无法获得内容;

  · 用私钥加密需要公钥解密,称为“签名”。由于公钥是公开的,任何人都可以解密内容,但只能用发布者的公钥解密,验证了内容是该发布者发出的。

  所以:

  · 如果用于加密解密,那就是用公钥加密私钥解密(仅你可读但别人不可读,任何人都可写)

  · 如果用于证书验证,那就是用私钥加密公钥解密(仅你可写但别人不可写,任何人都可读)

  三、认证过程

  RSA公钥与私钥主要用于数字签名( Digital Signature)与认证( Authentication),我们一般也称之为不对称加密/解密。

  什么是认证( Authentication)?

  认证是安全通信的前提,如果认证出问题,A不是和A想要聊天的人B在聊天,而是和一个C(假冒B)在聊天,则接下来所有的安全措施都是白搭。以目前常用的数字证书( Digital Certificate)认证为例。

  CA(Certificate Agent)存放A、B数字证书,在数字证书里包含有各自的RSA公钥与加空算法A、B各自保管自己的RSA私钥与加を篁法,RSA公钥与私拥美似锁与钥匙的关系。即RSAA期加密,可以用RSA公钥解密,反过来亦是如此。

  A与B安全通信认证过程:

  1. A向CA请求B的数字证书

  2.1 CA把B的数字证书做输入参数,生成一个Hash

  2.2 CA用自己的私钥加容Hash,生成一个数字签名( Digital Signature)

  2.3 CA把数字签名附在B的数字证书之后,即B的数字证书+CA数字签名,发给A

  3. A拥有CA的公钥(预装戦者离线方式获得),可以解密CA的数字签名(CA私钥加密),得到Hash,同时对接收到的B的数字让书做Hash运算,也得到一个Hash,如果两个Hash相等,则认为此证书安全可靠,在传输途中没有被算改,我们称这个过程为数据完整性( Data Integrity)保

  4.A请求认证B,B用自己的私钥加密自己的身份信息,发送给A,由于A已经从CA处获得B的公期,所以可以解密B的加密报文。既然公钥与私是一对一的关系,由于只有B自己知道私钥,以此逻辑推,A通信的对象为真实的B。

  5.B认证A的过程类似。


  作者:高传集

  职务:云服务集团云计算产品中心首席架构师

  专业领域:云计算

  专家简介:2006年加入浪潮,负责浪潮云PaaS产品服务的研发。致力于打造一套高性能、可弹性扩展的PaaS产品服务,帮助用户在云原生时代更好的构建、交付、管理自己的应用平台。


查看全部
相关文章推荐相关文章推荐
技术实践RSA私钥 技术实践】openssl几个加密算法使用介绍 技术实践】ssl双向认证 技术实践】win10 如何让其他机器访问自己机器上mysql 技术实践】istio优势在哪里 技术实践】SpringBoot重要特性 云托管:云计算技术基础 如何分析浪潮云计算技术呢? 技术实践】Dockerfile入门 技术实践】版本名称GA含义:SNAPSHOT-alpha-beta-release-GA
热门解决方案热门解决方案
金融智能机器人解决方案_智能客服解决方案 协同设计平台解决方案_协同设计云平台 金融行业测试云解决方案_银行业测试云平台 移动域名解析解决方案_移动域名解析服务 智慧能源管理解决方案_智慧能源管理系统_能源管理平台搭建 基础安全解决方案_网络安全管理解决方案_云计算基础安全管理 云ERP新零售解决方案_新零售系统_新零售信息管理系统 智慧停车解决方案_智能停车解决方案_停车厂管理系统方案 云托管解决方案_服务器云托管_企业云服务托管 移动式压力容器管理解决方案_移动式压力容器远程监控系统
热门产品推荐热门产品推荐
热门标签热门标签