对称加密、非对称加密以及它们在HTTPS和Linux免密登录中的应用

1.密码体制模型

在密码学中,一个密码体制或密码系统是指由明文、密文、密匙、加密算法和解密算法所组成的五元素。

  • 明文是指未经过任何变换的原始消息,通常用m(message)或p(plaintext)表示。所有可能的明文有限集组成明文空间,通常用M或P表示。
  • 密文是指明文加密后的消息,通常用c(ciphertext)表示。所有可能的密文有限集组成的密文空间,通常用C表示。
  • 密匙是指进行加密或解密操作需要的秘密/公开参数或关键信息,通常用k(key)表示。所有可能的密匙有限集组成的密匙空间,通常用K表示。
  • 加密算法是指在密匙的作用下将明文消息从明文空间映射到密文空间的一种变换方法,该过程称为加密,通常用字母E表示,即c=Ek(m)。
  • 解密算法是指在密匙的作用下将密文消息从密文空间映射到明文空间的一种变换方法,该过程称为解密,通常用字母D表示,即c=Dk(c)。

2.密码体制

密码体制是指实现加密和机密功能的密码方案,从密匙使用策略上,可分为对称密码体制和非对称密码体制,非对称密码体制也被称为公匙密码体制。

 

3.对称密码体制

在对称密码体制中,由于加密密匙K1和解密密匙K2匙相同的,或虽然两者不相同,但已知其中一个密匙就很容易推出另外一个密匙,因此发送者和接受者必须保证密匙的完全保密。经典对称密码算法有AES、DES、RC4和A5等。

3.1对称密码体制的优点

  • 加密解密快。
  • 使用的密匙较短。
  • 密文的长度往往与明文相同。

3.2对称密码体制的缺点

  • 密匙分发需要安全的通道。
  • 密匙量大。
  • 难以解决不可否认性问题。因为双方持有相同密匙,接收方可以否认接受过某消息,发送方可以否认发送过某消息。

4.非对称密码体制

在非对称密码体制中,加密密匙和解密密匙完全不相同,一个是对外公开的公匙,可以通过公匙证书进行注册公开。另一个是必须保密的密匙,只有拥有者才知道。非对称密码体制又称为双密匙密码体制或公开密匙密码体制,经典的非对称密码体制有RES、ECC、Rabin、Elgamal和NTRU等。

非对称密码体制一是解决了对称密码体制中的密匙分发和管理问题,二是解决了不可否认性问题。

对称密码体制主要用于信息的保密,实现信息的机密性。而非对称密码体制不仅可以对信息进行加密,还可以用来对信息进行数字签名。任何人可用信息发送者的公匙对信息进行加密,信息接收者用自己的私匙进行解密。而在数字签名算法中,签名者用自己的私匙对信息进行签名,任何人可用他相应的公匙验证其签名的有效性。因此,非对称密码体制具有认证和抗否认性的功能。

4.1非对称密码体制的优点

  • 密匙分发相对容易。
  • 密匙管理简单。
  • 可以有效的实现数字签名。

4.2非对称密码体制的缺点

  • 与对称密码体制相比加密/解密速度慢。
  • 密文的长度往往大于明文的长度。

4.3非对称密码体制简单的例子

现在Alice和Bob要用公匙密码体制进行通信(Alice的密匙对为KAS和KAP,Bob的密匙对胃KBS和KBP)。

  • Alice何Bob相互拥有对方的公匙,但都不知道对方的私匙。
  • Alice用自己的私匙KAS加密信息,任何人都可以用其对应的公匙KAP进行解密。Bob只要能用KAP正常解密这段信息,就可以断定这个信息是Alice发的,而Alice也不能否认这是他发的。因为只有Alice拥有自己的私匙,只有用Alice私匙加密的信息才能用Alice的公匙解密。这实现了信息的不可否认性。
  • Alice用Bob的公匙加密一段信息,只有Bob本人才能打开这段信息,因为只有Bob才拥有私匙,只有Bob自己的私匙才能解密Bob公匙加密的信息。这实现了信息传递的保密性。
  • Alice用自己的私匙对资料P加密后得到密文C1,再用Bob的公匙将密文C1加密成C2传递给Bob。Bob用自己的私匙可以解密C2得到密文C1,再用Alice的公匙解密密文C1。这就同时实现了传递的保密性和信息的不可否认性。

5.非对称密码体制在Linux免密登录中的应用

在日常开发中,经常会为Linux配置免密登录,这其中就涉及到非对称密码体制的应用。这里我们把发起免密登录的主机称为Alice,把目标主机称为Bob。首先Alice会生成自己的的私匙和公匙,即在网上经常看到的id_rsa和id_rsa.pub,很明显其中的rsa指的是RSA非对称加密算法,pub指的是公匙。在Alice生成了公匙和私匙之后,Alice就会将自己的公匙复制到Bob的authorized_keys文件当中去,这里免密登录就配置完成了。这里很容易理解为什么是将Alice的公匙给Bob了,因为私匙是只能由Alice持有的。接下来当Alice对Bob发起免密登录的请求,Bob收到请求之后查看authorized_keys有Alice相关的信息,Bob就用Alice的公匙加密一个字符串发送给Alice,这里用到了非对称加密的信息传递的保密性,只有Alcie持有私匙的情况下,Bob用公匙加密的信息只有Alice能解密。Alice在收到Bob返回的密文之后使用自己的私匙解密密文得到明文,然后用自己的私匙将这个明文加密发送给Bob,Bob收到信息后用Alice的公匙解密,只要能解密成功并且和之前发送给Alice的明文一致就能证明这个是Alice本人了,免密登录认证成功,这里运用了非对称加密的抗否认性。

  • Alice生成公钥私钥。
  • Alice将公钥拷贝给Bob,对Bob来说就已经同意Alice免密登录了,只是每次发起免密登录的时候我都要确认是Alice本人。
  • Alice向Bob发出登录的请求。
  • Bob收到Alice的免密登录请求后,在authorized_key中查找是否有Alice这个人,如果有就用Alice的公钥加密一段信息,发送给Alice。
  • Alice收到Bob发来的消息后,使用私钥进行解密,然后将解密后明文使用私匙加密发送给Bob。Bob对比明文是否和之前给Alice的一致,如果一致,则允许免登录。

6.非对称加密体制和对称加密体制在HTTPS中的运用

当客户端向服务器发起HTTPS请求后,服务器会返回一个证书给客户端,证书中包含了一个服务器的公匙。客户端收到证书过后会先判断这个证书是否是服务端的证书,简单概述为对浏览器来说有一些受信任的机构,这些机构颁发证书给服务器,服务器返回给客户端证书的时候客户端就去这些机构查询这个证书是否是这个服务器的,这就解释了为什么有时候你访问一些网站的时候会弹出一些警告。接下来客户端生成一个随机密匙,使用服务端给出来的公匙加密这个密匙得到密文发送给服务器,这个密文只有服务器能解密,这个就涉及到了非对称加密的信息传递的保密性。服务器收到客户端的信息后,使用自己的私匙解密客户端发送给自己的密文得到一个密匙,然后服务器就使用这个密匙利用对称加密技术将信息加密发送给客户端。这样就保证了信息传递的安全性,那这个里面有没有漏洞呢?当然是有的,就是前面提到的那个受信任的机构,如果有人利用这个机构作弊,即我们拿到了一个假的证书,仍然通过了这个机构的认证,那么就会出现一些风险了。这里还有一个问题,为什么服务器不直接用自己的私匙加密信息后发送给客户端让客户端使用公匙解密呢?可别忘了,公匙是任何人都可以持有的,即任何人劫持了服务端返回给客户端的密文信息都是可以被解密成明文的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值