后端 · 2024年 12月 30日 0

加密安全整合

本文章从需求入手,详细小白向讲解java安全加密全流程

第一部分:编码

向导:我想将“我爱你”这三个字加密怎么做?

需求:我需要将非二进制的文字进行二进制化表示

解决方法:编码和解码,将我们不同国家不同语言的文字和符号用二进制表达和从二进制反推出对应的文字

对应文章:

第二部分:身份认证

向导:我们都知道,想认证身份,首先得告诉我你叫什么,然后提供证明你是本人的证据,即账号和密码,如果你一不小心把网站的数据库泄漏或者被攻击了,导致别人知道了账号和密码,这是很危险的,因为他可以利用这组凭据尝试登录其他网站或者在本人不知情的情况下使用这个账号。

需求:那么我们不能直接存储用户的密码如何对用户进行验证呢,而且要求不能从数据库记录的数据反推用户的原始密码?

解决方法:对数据进行摘要

向导:你对用户的密码进行了摘要计算,确保了用户的原始密码不会被泄漏,也能确认用户的身份,但是用户使用的密码过于常见,比如:123456789,黑客把常见的密码进行摘要计算,然后对你得数据库摘要后的密码进行比对,可以反推出原始密码,这就是彩虹表攻击,

需求:如何对摘要算法进行优化,来抵御彩虹表攻击

解决方法:对摘要算法进行加盐

对应文章:

第三部分:对称加密

向导:你现在需要将一大段文字加密传输,如何操作

需求:将一段文本或者二进制文件用一个秘钥进行加密,传给别人能通过秘钥进行解密得到原始内容

解决方法:对称加密,即通过秘钥进行加密,接收方通过秘钥进行解密,这个过程是对称的所以说是对称加密

对应文章:

第四部分:口令加密

向导:对应对称加密中的秘钥都是固定的位数,每次设置秘钥都得对应位数,很不方便,像压缩包得那种随意位数的秘钥就好了

需求:需要将随意位数的秘钥转换为安全的固定位数的秘钥,

解决方案:利用口令加密算法

对应文章:

第五部分:密钥交换

向导:你现在有能加密数据的能力,也能将数据发送到对方手中,现在有一个黑客,全程获取你发送的所有信息,那么,你如何将加密信息的秘钥安全的送到对方手里?

需求:在有一个全知的旁观者的情况下,交换加密的秘钥,

解决方法:秘钥交换,利用数学难题来保证即便旁观者知道所有信息的前提下依旧无法解出信息

对应文章:

这样你就可以安全的交换秘钥,并用交换的共享秘钥来对称加密数据来进行传输了

第五部分:非对称加密

向导:现在的你可以对数据进行编码,并对编码的数据进行对称加密,然后安全交换秘钥进行加密传输,现在的方案是否完美了呢,现在和你联系过的人你都要存储一份对应的秘钥,很麻烦

需求:优化秘钥交换的方法

解决方法:利用非对称加密的算法,用对方的公钥进行加密,然后将加密后的数据进行传输,接收方利用自己的私钥进行解密,但这个过程计算量大,通常结合对称加密,只传输对称加密的秘钥,后续利用秘钥来进行对称加密传输

对应文章:

第六部分:数字签名

向导:现在的你想发出一条信息,又不想被别人修改,又不想别人发给我的信息抵赖,又不想别人伪造我的信息,如何办到?

需求:对数据进行加密来防止伪造

解决方法:上述的加密过程中都是用公钥进行加密,用私钥进行解密,这样的作用是别人告诉我的话不会被被别人解析,因为只有我能解密。如果反过来的话:用私钥进行加密,别人用公钥进行解密会怎么样?因为所有人都有你的公钥,所以你加密的数据,所有人都可以用你的公钥解密,这不是白加密了吗?不然,因为只有你私钥加密过的数据,别人用公钥解密出的字符才有意义,因为只有你有私钥,所以结果就是,只有你发出的加密字符才能用公钥解密,比人不能,这就是数字签名

对应文章:

第七部分:数字证书

向导:你现在拥有了和一个人在不安全信道上安全通信的全部手段,可是有个问题自始至终都没有解决,那就是,和你对话的人是你想对话的人吗?这个问题很有意思,上述所有手段都是建立在你确定他是哪个人,如果有人在中间冒充,作为中间人,在两边搭桥通信,这样两边的人和第三者的通信是安全的,但是,秘密却泄漏出去了。

需求:解决第三人攻击的问题

解决方法:这个是一个社会学问题,假如:你的朋友小猪想给你介绍个朋友小狗,然后你遇到了一个小黑客,小黑客说自己是小狗,请问现在如何辨别他的身份。这个在技术上是无解的,确定一个你一无所知的人的身份是不可能的,那怎么办,有人说那简单,直接让小猪来,小猪既认识我也认识小狗,让小猪来给我们牵线来辨别身份。而这个小猪,就是数字证书

对应文章:

第八部分:信任的源头

既然数字证书是一级一级签署的,那么最顶级的是什么?

数字证书确实是一级一级签署的,这种结构类似于金字塔形,顶部是最高级别的证书颁发机构(Certificate Authority, CA)。这个最顶级的证书通常被称为根证书(Root Certificate)或信任锚(Trust Anchor)。下面是对根证书的详细解释:

根证书是什么?

  1. 定义:根证书是由一个受信任的第三方机构颁发的,用于验证其他证书颁发机构的证书。它位于证书链的顶端,是整个信任体系的基础。
  2. 自签名:根证书通常是自签名的,这意味着它是用自己的私钥来签名自己的公钥。这使得根证书成为信任链中唯一的不受其他证书验证的证书。
  3. 权威性:根证书由全球知名的、被广泛认可的证书颁发机构(如VeriSign、GlobalSign、DigiCert等)颁发。这些机构通过严格的审核流程确保它们能够正确地管理和分发证书。

为什么需要根证书?

  1. 建立信任:根证书的存在是为了让用户和系统能够信任由其签发或间接签发的其他证书。例如,当你访问一个使用HTTPS协议的网站时,浏览器会检查该网站提供的服务器证书是否可以追溯到一个已知的根证书。
  2. 证书链:在实际应用中,根证书通常不会直接用于签发用户或服务器证书。相反,它会签发中间证书,这些中间证书再签发最终的用户或服务器证书。这种多层结构增强了系统的安全性和灵活性。

如何使用根证书?

  1. 预装:大多数操作系统和浏览器都会预装一组根证书,这些证书来自不同的证书颁发机构。当设备首次安装时,这些根证书会被自动安装,以便用户能够安全地访问互联网上的各种服务。
  2. 验证过程:当一个用户访问一个安全的网站时,浏览器会检查网站提供的证书链。它会从网站证书开始,逐级向上验证,直到找到一个预装的根证书。如果能够成功验证到最后一个根证书,则说明整个证书链是可信的。

总结

根证书是数字证书体系中的关键组成部分,它提供了信任的基础,确保了数字证书的有效性和安全性。理解根证书的工作原理对于保障网络安全至关重要。