chapter2.登录私人衣橱

今天我们来实现私人衣橱的第3个功能:登录;
现在APP都有登录的功能,登录的过程是客户端(手机端)与服务端交互的过程,这种架构模式叫client/server模式,client即客户端,也就是你们能看到的和可操作的界面,而服务端用户是感知不到的, 但是实际上每个客户端背后都有负责的服务端支撑,你的数据,登录的验证过程都在服务器端完成。


client/server模式
client/server模式

登陆的过程是非常重要且敏感的,因为它涉及到一个安全。我们肯定不希望自己的用户名和密码被窃取或者说修改。在手机的界面上当你输入用户名跟密码之后。手机端都需要将这两个信息发送到服务端,来完成验证,验证完毕后,再通知客户端登录成功。
在网络传输数据用户名和密码的过程中,就有可能发生4个主要的安全问题。

窃听
a向b发送的消息可能会在传输的过程中被第三者,比如说x偷看。

篡改
a向b发送消息的过程中被x进行了篡改。

假冒
a向b发送的消息过程中可能会被x监听,然后x冒充a向b发送了消息,这叫假冒。

事后否认
b得到了a发送的消息,但是a不承认这是我发送的消息。

所以这个过程类似:a写信给b,在邮寄的过程中被偷看了叫窃听。被偷看了,并且还被第三者修改了一部分重要的内容叫篡改。第三者直接替换掉a的信,然后发给了b叫假冒。b收到信之后,与a确认写信内容的时候,a否认该信由他寄出,叫事后否认。

所以怎么解决上面所提到的4个安全方面的问题呢?

方法一:加密

既然消息很容易被窃听。那我们就可以采取加密的方式。

  • 加密的第1种方式:对称加密

对称是相对于非对称加密而言,而实际上就是说对内容的加密和解密用的是同一把钥匙。

但这里会涉及到一个问题,比如说a发送消息前,需要进行加密,把密文发给了b,b也必须使用同一把钥匙进行解密。所以说a还需要把钥匙也发送给b。

所以这里又涉及到一个问题是钥匙的安全性。假如说这个钥匙被第三者截获。那他也可以用这个钥匙解开其中的消息的内容。

  • 加密的第2种方式:非对称加密。

也就是说加密和解密用的是两把不同的钥匙。分别叫公钥和私钥。公钥用来加密,私钥用来解密。

整个过程是:
1.a 准备 发送登录信息b
2.b 先发送一个公钥给a
3.a 用公钥加密信息,然后发给b
4.b 收到a的密码信息后,用私钥解密
因为只有b有私钥,所以即使X截获了信息,也没有私钥去解密内容。

这个过程可以可理解成:


非对称加密

你要投票,党组织先发放一个投票箱,大家将投票信息往其中投,这个投票箱就像是公钥,投完之后,再把装有投票信息的投票箱返回给党组织,党组织用手中的钥匙(私钥)打开投票箱,查看里面的内容。所以投票箱在运输过程中,一直是安全的。

第2种方式的优点是假设发送方有:a1,a2,a3 他们三者可以共用一个钥匙;但第1种方式就需要三把钥匙。

方式2:非对称加密有缺陷吗?答案是的,你这么知道投票箱是来自合法组织(党组织)的呢?也就是a无法确认公钥是来自b,如果中间人用一个假冒的公钥,发给a,a加密后,被X截获,然后X用他的私钥,即可揭开其中的信息内容。

所以想要解决这个问题就必须用用到数字证书。

方式二:数字证书
证书

数字证书是一种权威性的电子文档,可以由权威公正的[第三方机构],即CA中心签发的证书。它包含一个公钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。
所以来回顾下非对称加密的交互过程:
1.a 准备 发送登录信息b
2.b 先发送一个公钥给a
3.a 用公钥加密信息,然后发给b
4.b 收到a的密码信息后,用私钥解密
因为只有b有私钥,所以即使X截获了信息,也没有私钥去解密内容。

变成了:
1.a 准备 发送登录信息b
2.b 先将公钥以及b的资料信息提交给CA审核,审核通过后,生成数字证书。
3.b将数字证书发给a
4.a从中提取出b的信息,在CA中心验证,b的公钥确实属于b,确认属实后,用公钥加密信息,然后发给b
5.b 收到a的密码信息后,用私钥解密
因为只有b有私钥,所以即使X截获了信息,也没有私钥去解密内容。如果b用伪造证书,也无法通过第4步。

这个过程是绝对安全的吗?当然是否定的。有可能第三者x攻击认证中心,冒充认证中心生成数字证书,但是这种概率极低,并且一般来说认证中心都是有一些权威机构。

方式二:数字签名

前面介绍的加密方式,数字证书,是为了防止信息被窃听、篡改和冒充。那数字签名解决的是防止事后否认。比如在网上签约,合同一旦签订是不允许抵赖或者违约,也就需要防止事后否认。

数字签名
就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。

现实生活中的签名

前面的传输过程演变为:
1.a 准备 发送登录信息b
2.b 先将公钥以及b的资料信息提交给CA审核,审核通过后,生成数字证书。
3.b将数字证书发给a
4.a从中提取出b的信息,在CA中心验证,b的公钥确实属于b,确认属实后,用公钥加密信息,同时加上自己的数字签名,然后一并发给b
5.b 收到a的密码信息后,用私钥解密,并确认数字签名信息是来自a.

  • 数字签名的过程其实也是加密的过程,使用的是a的私钥加密,b获取后使用a的公钥解密。

计算机世界里,加解密的过程其实都是算法运算的过程,加密有许多种算法,比如AES, RSA.... 但是非业内人士只需要了解加解密的过程和原理。有兴趣的可以找其他资料继续深入。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现...
    纳兰三少阅读 1,998评论 1 6
  • 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现...
    sunny冲哥阅读 1,415评论 0 3
  • 数字证书原理 - 无恙 - 博客园 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明...
    拉肚阅读 1,711评论 0 3
  • 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现...
    已认证用户阅读 3,903评论 1 4
  • 原文地址:数字证书原理,公钥私钥加密原理 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例...
    淇滨杜隆坦阅读 4,203评论 4 46