内容简介:公共密钥加密用于网络安全,并且在工业自动化领域得到越来越多的应用。大多数人都熟悉加密,加密本质上涉及到对数据进行拼接,并使有意义的数据显示为位、字节或字符的随机序列。这是一个简单的过程,通过这个过程对数据进行加密、传输,然后使用共享私钥进行解密。由于采用相同的密钥用于加密和解密数据,因此这被称为对称密钥加密。另外,由于密钥对公众保密,因此也被称为私钥加密。
公共密钥加密用于网络安全,并且在工业自动化领域得到越来越多的应用。
大多数人都熟悉加密,加密本质上涉及到对数据进行拼接,并使有意义的数据显示为位、字节或字符的随机序列。
这是一个简单的过程,通过这个过程对数据进行加密、传输,然后使用共享私钥进行解密。由于采用相同的密钥用于加密和解密数据,因此这被称为对称密钥加密。另外,由于密钥对公众保密,因此也被称为私钥加密。
为什么工业领域不使用这样一个简单而安全的方法呢?因为这个模型有问题。发送方和接收方都必须共享密钥的副本。如果双方相距很远,比如说分布在两个半球上,那交换密钥将很困难。
当然,发送方可以将密钥副本"邮寄"给接收方,但在这个过程中可能会有人拦截该密钥,为自己制作副本,并开始 "监听" 对话。而这就是被称为非对称密钥加密的公钥加密发挥作用的地方。
公钥加密的原理
公钥加密指的是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法。它解决了密钥的发布和管理问题,是目前商业密码的核心。要解释公钥加密,请让我们以信件和保险箱为例。
假设爱丽丝想给鲍勃寄一封保密的信。她可以把信锁在保险箱里,把上锁的保险柜寄给鲍勃。鲍勃用钥匙打开保险柜,然后就可以看到信。这本质上是对称 (私钥) 加密。但是,爱丽丝和鲍勃如何安全地共享密钥副本?
爱丽丝有没有办法在不交换密钥副本的情况下,安全地把信寄给鲍勃?有的。解决方案包括创建两个密钥,一把是给保险箱上锁的公钥,一把是用于打开保险箱的私钥。
继续以此为例,鲍勃拿起解锁的保险箱,创建了两把密钥,一把是私钥 (他保留的) 和一把公共密钥 (他寄给了爱丽丝)。鲍勃接下来拿着公钥和空的、解锁的保险箱,把它们都邮寄给爱丽丝。爱丽丝把她的信放在保险柜里,然后用鲍勃邮寄的公共秘钥锁上保险柜。爱丽丝把保险柜寄回给鲍勃,鲍勃用他的私人密钥打开保险柜,看信。假设有人复制了鲍勃发给爱丽丝的公钥。他无法打开保险柜,也看不了信。鲍勃给爱丽丝的公钥只能用来给保险柜上锁,而不能开锁。
身份验证替代方法
无论谁能访问公钥,爱丽丝都可以安全地将她的信发送给鲍勃。如果查理拦截了公钥,假装是爱丽丝打开安全锁,这样他就可以给鲍勃发送假信息了吗?这就是公钥加密的另一个好处,即身份验证。
鲍勃创建了私钥和公钥。但是,为了说明身份验证的工作原理,让我们举一个新例子。鲍勃仍然创建私钥和公钥。但是,爱丽丝也创建了自己的私钥和公钥。接下来,鲍勃和爱丽丝交换他们的公钥。爱丽丝把她的公钥寄给鲍勃,鲍勃把他的公钥寄给了爱丽丝。和以前一样,鲍勃把未上锁的保险箱发给爱丽丝。爱丽丝把她的信放在保险柜里,用鲍勃提供的公钥上锁。
然而,这一次,爱丽丝还做了其它事情。她拿着自己的锁,把它应用到保险柜上,用她创建的私钥锁住。爱丽丝然后把保险箱寄回给鲍勃。这一次,在鲍勃用他的私钥打开保险柜之前,他首先拿了爱丽丝发给他的公钥,并试图打开爱丽丝的锁。如果鲍勃可以使用公钥打开锁,这个锁是爱丽丝使用她的私钥锁上的,那么鲍勃就知道这封信来自爱丽丝。此过程称为身份验证。爱丽丝应用于保险箱的锁可以被视为签名。
更多的工业自动化设备正在采用公钥加密。此外,许多基于网络浏览器的监控和数据采集系统(SCADA)开始集成了HTTPs 网页支持功能,这也是基于公钥加密的。
数字签名使用私钥加密特定数据,而用公钥进行身份验证。图片来源: MartinCSI
选择安全设备
在现实世界中,我们如何创建公钥加密?有一种方法,与数学中一个有趣且非常困难的问题有关,将大数分解为素数。例如,考虑以下简单的加密算法: me mod N=c
在这个方程中,m 是要加密的消息,e 是用于加密消息的公钥,N 是两个质数 (N= P1*P2) 的乘积,c 是加密的消息。在我们的示例中,鲍勃选择主要整数P1和P2,将它们相乘以计算出N。他还选择了公钥e。鲍勃随后将 e 和 N 发送给爱丽丝,同时他自己保留了P1和P2。爱丽丝将她的消息 m 以及鲍勃发送的数字 (e和N) 代入上述方程中,以生成她的加密消息c,她将这些消息发送回鲍勃。一旦鲍勃收到来自爱丽丝的加密消息c,他只需使用以下公式对其进行解密: cd mod N=m即可找回原始消息。
在这个等式中,他没有使用他发给爱丽丝的公钥e,而是使用他的私钥d来解密消息。如果鲍勃且只有鲍勃能弄清楚d是什么,那么这就行得通了。正好可以使用欧拉函数 j(N)计算 d,其中d * e =k jN+1。 欧拉函数j(N) 的重要属性是被称为陷阱门的函数。对我们的示例这意味着,如果P1和P2 是已知的,计算j(P1*P2)很容易,但如果P1和P2不知道,则很难计算 。
试图解密消息的人可能会考虑获取 N (因为 N 是鲍勃已发送给爱丽丝的公开信息),将 N 分解为两个质数P1和P2,然后解密消息。然而,将大数 N分解为素数是非常耗时的。事实上很难实现,即使是使用超级计算机解决起来也不现实。这就是公钥加密背后的真正力量所在。鲍勃可以用多个 P1*P2来生成允许爱丽丝用于加密消息的数字N。但N是否公开并不重要。解密消息还需要了解P1和P2。只要鲍勃不公开这数字。
在选择安全设备和配置安全设备时,对公钥加密的理解也很有帮助。了解安全性有助于消除不必要的恐惧。相反,还可以对网络安全采取更主动的方法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Golang代码搜集-基于RSA的公钥加密私钥解密-私钥签名公钥验证
- C#如何使用PGP公钥简单加密文本文件?
- TLS和HTTPS加密,公钥私钥体系
- 区块秘史|密码朋克的死亡圣器:公钥加密
- 简述密码学应用四阶段:对称加密、公钥加密、区块链与高等密码学
- 安全不安全001:openssl生成非对称加密RSA公钥密钥命令
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Inside the C++ Object Model
Stanley B. Lippman / Addison-Wesley Professional / 1996-5-13 / USD 64.99
Inside the C++ Object Model focuses on the underlying mechanisms that support object-oriented programming within C++: constructor semantics, temporary generation, support for encapsulation, inheritanc......一起来看看 《Inside the C++ Object Model》 这本书的介绍吧!
图片转BASE64编码
在线图片转Base64编码工具
SHA 加密
SHA 加密工具