http://blog.csdn.net/hj5182001/archive/2007/08/31/1767380.aspx
要理解ssl先要知道一些加密算法的常识.
加密算法很容易理解啦,就是把明文变成人家看不懂的东西,然后送给自己想要的送到的地方,接收方用配套的解密算法又把密文解开成明文,这样就不怕在路世上如果密文给人家截获而泄密。
加
密算法有俩大类,第一种是不基于KEY的,举个简单的例子,我要加密"fordesign"这么一串字符,就把每个字符都变成它的后一个字符,那么就
是"gpseftjhm"了,这样的东西人家当然看不明白,接收方用相反的方法就可以得到原文。当然这只是个例子,现在应该没人用这么搞笑的加密算法了
吧。
不基于KEY的加密算法好象一直用到了计算机出现。我记得古中国军事机密都是用这种方式加密的。打战的时候好象军队那些电报员也要带着密码本,也应该是用这种方式加密的。这种算法的安全性以保持算法的保密为前提。
这种加密算法的缺点太明显了,就是一旦你的加密算法给人家知道,就肯定挂。日本中途岛惨败好象就是密码给老米破了。设计一种算法是很麻烦的,一旦给人破了就没用了,这也忑浪费。
我
们现在使用的加密算法一般是基于key的,也就是说在加密过程中需要一个key,用这个key来对明文进行加密。这样的算法即使一次被破,下次改个
key,还可以继续用。key是一个什么东西呢?随便你,可以是一个随机产生的数字,或者一个单词,啥都行,只要你用的算法认为你选来做key的那玩意合
法就行。
这样的算法最重要的是:其安全性取决于key,一般来说取决于key的长度。也就是说应该保证人家在知道这个算法而不知道
key的情况下,破解也相当困难。其实现在常用的基于KEY的加密算法在网络上都可以找到,很多革命同志(都是老外)都在想办法破解基于key的加密算法
又包括俩类:对称加密和不对称加密。对称加密指的是双方使用完全相同的key, 最常见的是DES. DES3,
RC4等。对称加密算法的原理很容易理解,通信一方用KEK加密明文,另一方收到之后用同样的KEY来解密就可以得到明文。
不对称加密指双方用不同的KEY加密和解密明文,通信双方都要有自己的公共密钥和私有密钥。 举个例子比较容易理解, 我们们假设通信双方分别是A, B.
A, 拥有 KEY_A1, KEY_A2, 其中KEY_A1是A的私有密钥,KEY_A2是A的公共密钥。
B, 拥有KEY_B1, KEY_B2, 其中KEY_B1是B的私有密钥,KEY_B2是B的公共密钥。
公共密钥和私有密钥的特点是,经过其中任何一把加密过的明文,只能用另外一把才能够解开。也就是说经过KEY_A1加密过的明文,只有KEY_A2才能够解密,反之亦然。
通信过程如下:
A-------->KEY_A2------------>B
A<--------KEY_B2<------------A
这个过程叫做公共密钥交换,老外管这叫key exchange.
之后A和B就分别用对方的公共密钥加密,用自己的私有密钥解密。
一般公共密钥是要发布出去的,然后你通过自己的私有密钥加密明文,人家用你的公共密钥解密,如果能解开,那么说明你是加密人,这就是SSL使用的验证机制。
常用的不对称加密一般有RSA, DSA, DH等。我们一般使用RSA.
数字签名也是不对称加密算法的一个重要应用,理解它对于理解SSL很重要的,放在这里一起介绍一下。
签
名是什么大家都很熟悉吧?证明该东西是你写的,是你发布的,你就用签名搞定。看看那些重要文件都要头头签名。数字签名就是数字化的签名了。记得公用密钥和
私有密钥的特征吗?只有你一个人有你自己的私有密钥。而你的公用密钥是其他人都知道的 了。那么你在写完一封邮件之后,用自己的私有密钥加密自己的名字,
接收人用你的公共密钥解开一看,哦,是你发的。这就是你的数字签名过程了。
上面的解释是很简化的了,其实数字签名比这个复杂多了,但我们没有了解的必要,知道数字签名是这么一回事就可以了。
还
有一种我们需要知道的加密算法,其实我不觉得那是加密算法 ,应该叫哈希算法,英文是message digest,
是用来把任何长度的一串明文以一定规则变成固定长度的一串字符串。它在SSL中的作用也很重要,以后会慢慢提及的。一般使用的是MD5, SHA.
base64不是加密算法,但也是SSL经常使用的一种算法,它是编码方式,用来把asc码 和二进制码转来转去的。
具体的加密解密过程我们不需要了解,因为SSL根本不关心。但了解加密算法的一些基本原理是必要的,否则很难理解SSL。
对加密算法的细节有兴趣的同志,可以去网络上找这些加密算法的原理的文章和实现的程序来研究,不过先学数论吧。不懂数论看那玩意还是一头雾水。
分享到:
相关推荐
SSLclient-win-1.1.4.177可能是用于测试、诊断或者调试SSL/TLS连接的工具,比如验证服务器证书的有效性,检查支持的加密算法,或者进行性能测试。 在Windows环境下,SSLclient可能提供了命令行接口,让用户可以输入...
例如,在开发安全的网络通信协议时,SSL/TLS协议就利用了加密算法来保证数据在传输过程中的安全。 总的来说,这个“加密算法模块(VC++)”资源提供了丰富的学习材料,无论你是初学者还是经验丰富的开发者,都可以...
该工具适用于安全渗透测试人员,可以用来检测弱加密算法套件,
当客户机使用SSL加密模式连接服务器并控制服务器后,在网络中传输的所有信息都是加密过的,黑客使用sniffer等工具无法抓取到可用的数据包。从而真真正正的将远程桌面的安全进行到底。远程操作界面也出现了SSL加密的...
Bouncy Castle是一个开源项目,提供强大的加密算法实现,包括SSL/TLS协议支持,数字签名,公钥基础设施(PKI)以及密码学标准如RSA,AES等。"ext"可能指的是扩展版本,通常包含更多或更先进的加密特性。 "bcprov-ext-...
在实际应用中,Diffie-Hellman通常与其他加密算法(如AES)结合使用,以创建一个完整的加密系统。理解并能实现Diffie-Hellman密钥交换,对于提升信息安全领域的专业技能至关重要。在VC++中实现这一算法,不仅可以...
#### 一、加密算法简介 加密技术是信息安全领域的核心组成部分,其目的是保护数据的隐私性和完整性。加密算法是实现这一目标的关键工具,它们通过对原始数据进行数学运算,将数据转化为不可读的形式,确保即使数据...
利用C语言实现sha-1加密算法,与芯片DS28E01一致接口
IDEA(International Data Encryption Algorithm,国际数据加密算法)是由瑞士联邦理工学院的Lorenz Panny、Tomas Toth和Xavier Katzenberger在1990年提出的,是一种强大的分组加密算法,广泛应用于软件安全和数据...
- **RC4、RC5、RC6**:一系列流加密算法,其中RC4因其简单高效而在无线网络协议WEP和TLS/SSL中广泛应用。 - **AES(Advanced Encryption Standard)**:高级加密标准,是目前最常用的对称加密算法之一,具有较高的...
这些文件是Bouncy Castle加密库的不同版本,该库是Java平台上广泛使用的开源加密库,提供了对多种加密算法的支持,包括用于实现SSL/TLS协议的关键组件。 Bouncy Castle库分为两个主要部分:提供基本加密功能的核心...
`crypto.lib`是BoringSSL的加密库,它包含了各种加密算法的实现,如对称加密(如AES)、非对称加密(如RSA、ECDSA)、哈希函数(如SHA256)和伪随机数生成器等。这些基本加密模块是构建安全通信的基础,它们确保了...
远程服务使用SSL证书链,该证书链已使用加密弱哈希算法(例如MD2、MD4、MD5或SHA1)签名。这些签名算法很容易受到碰撞攻击。攻击者可以利用这一点生成另一个具有相同数字签名的证书,从而允许攻击者伪装成受影响的服务...
Java加密算法是信息安全领域中的重要组成部分,用于保护数据的隐私性和完整性。在Java平台上,有多种内置的加密库,如Java Cryptography Extension (JCE) 和 Java Cryptography Architecture (JCA),它们为开发者...
远程服务使用SSL证书链,该证书链已使用加密弱哈希算法(例如MD2、MD4、MD5或SHA1)签名。这些签名算法很容易受到碰撞攻击。攻击者可以利用这一点生成另一个具有相同数字签名的证书,从而允许攻击者伪装成受影响的服务...
### MD5与SHA-1加密算法(JS实现) 在现代Web开发中,用户登录时的安全性至关重要。为了保护用户的隐私和个人信息安全,开发人员通常会在客户端对用户的密码进行加密处理,而不是直接以明文形式传输。这不仅可以...
通过阅读和分析这些代码,我们可以了解到如何初始化SSL上下文、加载证书、设置加密算法、建立和处理SSL连接,以及如何处理网络I/O的异步事件。 总结,"handle-ssl-master.zip"提供的源码实例是学习和实践OpenSSL ...
OpenSSL是一个强大的安全套接层(SSL/TLS)和加密库,它提供了多种加密算法,包括AES。在OpenSSL的源码中,你可以找到关于AES加密和解密的函数,如`AES_encrypt()`和`AES_decrypt()`,以及用于密钥扩展的`AES_set_...
Java加密算法及原理是信息安全领域中的重要组成部分,用于保护数据的隐私性和完整性。在Java中,我们可以使用多种加密算法来实现数据的安全传输和存储。以下将详细介绍几种常见的Java加密算法及其工作原理。 1. **...