数字证书
上面说了这么多算法,又是摘要算法,又是对称加密算法,又是非对称加密算法的。但是对于通讯中的四种威胁——截获、中断、篡改、伪造最多也就只能解决其中的两个,对于中断、和伪造威胁,只能干瞪眼。难道,就没有其他办法了吗。
对于中断,一般是网络拓扑或协议级别要解决的问题,已经超出了我们的范畴,暂时不表,我们只能做到的是当网络不可用时,传输的数据出现丢包或异常时可以进行及时的建设,这里就需要用到数据完整性的验证了。
至于,要对付攻击者“伪造”的威胁,这不仅仅是单一算法层面可以解决的问题了。
通讯模型
正如上面几节所说,伪造分为两种,一种是数据伪造,只要做好防篡改的工作,数据伪造都可以很好的防范。另外一种是伪装成某一网站,与用户进行交互,盗取用户的一些信。比较常见的如钓鱼网站、黑代理服务器等。
哪非对称加密算法的通讯模型来举个例子。客户端A在获得给自己公钥时,并没有怀疑与公钥发出方的身份,客户端A以为发给他的依然B,实际上,B发出的公钥已经被攻击者C拦截并丢弃了,C重新生成公钥伪装为B发给了客户端,后续的流程实际上都是攻击者C在于客户端A通讯,而客户端A则以为与自己通讯的是服务器B。
这个伪造的过程在平时我们的生活中也经常会碰见,比如:在实名制以前,张三买到火车票后,半路被人打劫,车票被抢。这就有点类似于遭遇了攻击者的攻击,攻击者抢走了张三的火车票(公钥Gkey),并伪造了一张可以以将乱真的车票,(重新生成公钥Gkey’)使用这张车票上火车。整个过程看似天衣无缝,攻击者获得了一张免费的车票,张三损失了一张火车票。
当然,现在这种火车票qiang劫的事件已经不太会发生了,因为已经实行了实名制。实名制的引入,给我们解决上面的“伪造”威胁提供了一个方案。火车票实名制,使用了身份证作为验证用户身份的一个证明。
那么我们在网络通讯中是否也可以引入这么个“网站身份证”呢。回答是肯定的,目前也正是这么做的,我们叫他“数字证书”。
CA
正如我们身份证是由可信任的公安局办发。数字证书也是由权威机构签发,我们叫做CA,CA会保证证书的确是发给了应该得到该证书的的人。CA也属于一个机构,他也有被人伪造的风险。所以CA一般是分级的,顶层的叫做RootCA,由他保证下面的CA的身份。
所以我们的机器里,保存着有限的几个RootCA的机构的公钥。打个比方,张三有个数字证书,是由A这个CA机构颁发的,A的身份由RootCA来保证。当浏览器与张三的网站进行通讯时,获取到了张三的数字证书,实际上这个数字证书是个嵌套的证书,里面包含着两个子证书:RootCA颁发给A的证书,和A颁发给张三网站的证书。在浏览器中保存着有限个着RootCA的公钥。使用RootCa的公钥对A证书进行验证,验证通过,使用A证书里的公钥对张三网站的证书进行验证,只有再次验证通过后,才能说张三网站的证书得到了确认。
整个验证过程是一个信任链。
数字证书里主要包含着两样东西:数字证书所有者的身份信息,数字证书所有者的公钥。为了保证证书在网络中通信不被篡改,证书里会带上这些信息的数字签名。那么对数字证书的验证就是对数字签名的验证,这就是上图中每次证书的验证都要使用到公钥的原因了。
相关推荐
DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 ...DES 加密解密算法的 C 语言实现需要理解字节与二进制转换、密钥处理、加密和解密操作以及基本操作等知识点。
Java实现的RSA加密解密算法示例 本文主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了Java RSA加密解密算法的相关实现技巧。 知识点1:RSA加密解密算法简介 RSA加密解密算法是一种非对称加密算法,由Ron...
300多种加密解密算法(C++)源代码 300多种加密解密算法(C++)源代码
本文将深入探讨如何使用C语言实现加密解密算法,并基于提供的文件信息进行讲解。 首先,C语言是一种底层编程语言,它允许直接操作内存,因此非常适合实现复杂的数学运算,如加密算法。常见的加密算法有对称加密(如...
AES,全称Advanced ...总之,C语言实现的AES加密解密算法是一个实用的工具,对于理解加密原理、开发安全软件或进行系统级编程都有很大的价值。然而,使用时应确保正确性,并结合适当的模式和协议来增强整体安全性。
经典代码(带详解) 函数authcode($string, $operation, $key, ...第六种 函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。
"java实现的RC4加密解密算法示例" RC4加密解密算法是Symmetric-key block cipher的一种,使用同一个密钥进行加密和解密。java实现的RC4加密解密算法可以通过以下步骤实现: 1. 初始化数组:创建一个大小为256的...
java实现MD5加密解密算法,java源代码~
总的来说,RSA加密解密算法在C语言中实现涉及到大整数运算、公钥私钥生成、加密解密过程等多个环节,结合适当的库可以构建出强大的安全工具。在Linux环境下,可以利用丰富的开源库来简化开发工作。通过深入理解这些...
本文还对基于Logistic系统的图像模块混沌加密解密算法的安全性进行了分析。结果表明,该算法存在安全 weakness,即生成的密钥流对每个图像块保持不变,从而使得攻击者可以使用chosen plaintext attack来恢复等效密钥...
这个" .net加密解密算法demo "提供了易于理解和使用的加密解密示例,特别适合初学者和开发者快速上手。源代码中包含了详尽的注释,使得自定义关键字成为可能,以满足不同场景下的安全需求。 首先,加密是将明文数据...
RSA加密解密算法,相当不错的例子,适合初学者参考
### 文件加密解密算法研究与实现 #### 一、引言 随着信息技术的快速发展和互联网的普及,信息安全问题变得越来越重要。特别是在企业环境中,保护重要信息免受非法访问和泄露至关重要。《文件加密解密算法研究与...
实现的AES加密解密算法,高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥
RSA加密解密算法是密码学中一种常用的加密算法,以 Ron Rivest、Adi Shamir 和 Leonard Adleman 三人命名。该算法基于大数分解问题的困难性,使用公钥加密和私钥解密的方式来保护数据的安全。 该算法的基本原理是:...
综上所述,VB6的这个加密解密程序是一个实用的工具,结合了DES和AES这两种强大的加密算法,支持用户自定义密钥,且具备文件级别的加密解密功能。它不仅提供了基本的数据安全措施,而且在VB6环境中易于理解和使用,...
此资源加密方式包括 MD2, MD5, SHA-1, HAVAL, Tiger, RIPE-MD160, MD5-MAC, HMAC, XOR-MAC, DES,IDEA, WAKE, 3-WAY, TEA, SAFER, Blowfish,SHARK, GOST, CAST-128, Square,Diamond2, Sapphire, RC2, RC5, RC6, MARS,...
总之,VB加密解密算法在保护软件、数据安全方面起着重要作用。开发者应熟悉不同类型的加密算法,了解其优缺点,并能在VB环境中熟练应用,以确保信息的安全。在实际开发过程中,结合安全策略,合理使用加密技术,可以...
在这个"很强的Java加密解密算法源码.zip"中,我们可以深入学习如何在Java中实现3DES算法来加密和解密文件。 3DES算法是一种块加密算法,它通过三次应用DES密钥来增强安全性。基本流程如下: 1. **加密过程**:输入...
加密为直接输入十六进制的(消息,密钥,1);解密为(密文,密钥,2);Index=1为加密,不为1为解密