web使用的加密集合

来源:互联网 发布:梦幻龙族2修改数据库 编辑:程序博客网 时间:2024/06/04 17:41

一、http使用的

   1.base64加密,容易破解

   2.md5摘要加密,有点难度,有一定方法。

      主要的思想是客户端用md5加密用户名,密码,自己的材料和服务器发过来的材料,发送这个摘要到服务器,服务器将记录在此的用户名密码在进行一次这样运算对比结果

二、跟密钥相关的,基本短时间无法破解。以下摘自别人的总结

一、基础知识:

      1、互联网上中间人攻击通常用的三种方式:1)窃听 2)数据篡改 3)会话劫持

       2、数据加密的常用的三种方式有:对称加密、非对称加密、单向加密。

          3ssl:secure socket layer,安全的套接字层。

          4TLSTransport Layer Security,功能类似于ssl

          5、随机数生成器:/dev/random 和 /dev/urandom 。   -salt:依赖于随机数生成器。

          6、随机数的来源:熵池和伪随机数生成器。熵池中的随机数来自块设备中断和键盘和鼠标的敲击时间间隔;伪随机数生成器中的随机数来自于熵池和软件产生。

          7openssl rand [base64] num 也可以用来生成随机数。

          8echo –n “QQ”|openssl base64,表示对QQbase64编码。

二、对称加密:

      1、加密方和解密方使用同一个密钥。

      2、加密解密的速度比较快,适合数据比较长时的使用。

      3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦。

         4、加密算法:DESData Encryption Standard)、3DESAESAdvanced Encryption Standard,支持128192256512位密钥的加密)、Blowfish

         5、加密工具:opensslgpg(pgp工具)

三、非对称加密(公钥加密):

      1、每个用户拥用一对密钥加密:公钥和私钥。

      2、公钥加密,私钥解密;私钥加密,公钥解密。

      3、公钥传输的过程不安全,易被窃取和替换。

      4、由于公钥使用的密钥长度非常长,所以公钥加密速度非常慢,一般不使用其去加密。

      5、某一个用户用其私钥加密,其他用户用其公钥解密,实现数字签名的作用。

      6、公钥加密的另一个作用是实现密钥交换。

         7、加密和签名算法:RSAELGamal

         8、公钥签名算法:DSA

         9、加密工具:gpgopenssl

四、单向加密:

     1、特征:雪崩效应、定长输出和不可逆。

     2、作用是:确保数据的完整性。

        3、加密算法:md5(标准密钥长度128位)、sha1(标准密钥长度160位)、md4CRC-32

        4、加密工具:md5sumsha1sumopenssl dgst

        5、计算某个文件的hash值,例如:md5sum/shalsum  FileName,openssl dgst –md5/-sha1 FileName

五、密钥交换的两种机制:

      1、公钥加密实现:发送方用接收方的公钥加密自己的密钥,接收方用自己的私钥解密得到发送方的密钥,逆过来亦然,从而实现密钥交换。

      2、使用DH算法:前提发送方和接受方协商使用同一个大素数P和生成数g,各自产生的随机数XY。发送方将gX次方mod P产生的数值发送给接收方,接受方将gY次方mod P产生的数值发送给发送方,发送方再对接收的结果做X次方运算,接受方对接收的结果做Y次方运算,最终密码形成,密钥交换完成。

六、同时实现数据的完整性、数据加密和身份验证所使用到的机制如下:

       假设BobRose进行通信:

          1】加密过程:

           Bob使用单向加密算法得出发送数据的特征码(用于数据完整性检测),Bob用自己的私钥加密此特征码(实现身份验证),并将此特征码置于数据的后面。Bob再生成一个密码D,用此密码加密加密过的特征码和数据(实现数据加密),此时生成的数据我们称其为Q,最后用Rose的公钥加密该密码D,并将D置于Q的后面。

          2】解密过程:

           Rose用自己的私钥解密得到D,然后用D解密得到数据和加密过得特征码,再用Bob的公钥解密此特征码,如果可以解密,则说明该数据是Bob发送的,反之,则不是。最后用单向加密算法计算该段数据的特征码,通过比较发送过来的特征码和Rose通过计算得到的特征码来确定此数据是否被篡改掉,如果特征码一致,则数据未发生改变;如果特征码不一致,则数据发生过改变。

七、openssl

       1)组件:libcrypto:加密库。

                libssl:实现ssl功能的库。

                openssl:多用途的加密工具,能够提供对称加密、公钥加密、单向加密,且可以作为一个简单的本地CA用。

       2)在对称加密中,使用openssl实现对某个文件加密:

              openssl  enc  -des3  -salt  -a  -in  plaintext  -out ciphertext.des3

          使用openssl实现解密

              openssl  enc  -d  -des3  -salt  -a  -in  ciphertext.des3  -out  plaintext

       3openssl version:查看openssl的版本信息。

       4openssl :进入openssl的命令行模式。

       5openssl speed:测试某种加密算法加密不同长度密钥的速率。

       6)在公钥加密中,openssl可以用来生成私钥。

              openssl  genrsa 指定生成的私钥长度 > 保存到的文件名  

              openssl  genrsa  [des3]  -out 保存到的文件名 指定生成的私钥长度

              在生成密钥文件的同时修改密钥文件的权限:(umask 077; openssl  genrsa指定生成的私钥长度> 保存到的文件名)

              openssl  genrsa 指定生成的私钥长度 [-des3](加密私钥文件)  >  保存到的文件名。

              openssl  genrsa  [-des3]  -out  保存到的文件名  指定生成的私钥长度

              当私钥在生成的时候,文件未加密,则可以使用如下格式对未加密的私钥文件进行加密并保存:openssl  rsa  in  未加密私钥存放的文件 –des3  -out  保存到的文件名        

   解密私钥:openssl  rsa  in  需要解密的私钥文件 –out  保存到的文件名。

       7)公钥在私钥中提取出:openssl  rsa  –in  my.key  -pubout 指定保存公钥的文件名。


三、ssl

SSL 是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性。因特网的 超文本传输协议(HTTP)使用 SSL 来实现安全的通信。

在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的。公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥。有了服务器的SSL数字证书,客户端也可以验证服务器的身份。SSL 协议的版本 1 和 2 只提供服务器认证。版本 3 添加了客户端认证,此认证同时需要客户端和服务器的数字证书。

SSL 握手

SSL 连接总是由客户端启动的。在SSL 会话开始时执行 SSL 握手。此握手产生会话的密码参数。关于如何处理 SSL 握手的简单概述,如下图所示。此示例假设已在 Web 浏览器 和 Web 服务器间建立了 SSL 连接。

SSL工作原理
图 SSL的客户端与服务器端的认证握手

(1) 客户端发送列出客户端密码能力的客户端“您好”消息(以客户端首选项顺序排序),如 SSL 的版本、客户端支持的密码对(加密套件)和客户端支持的数据压缩方法(哈希函数)。消息也包含 28 字节的随机数。

(2) 服务器以服务器“您好”消息响应,此消息包含密码方法(密码对)和由服务器选择的数据压缩方法,以及会话标识和另一个随机数。

注意:客户端和服务器至少必须支持一个公共密码对,否则握手失败。服务器一般选择最大的公共密码对。

(3) 服务器发送其SSL数字证书。(服务器使用带有 SSL 的 X.509 V3 数字证书。)

如果服务器使用 SSL V3,而服务器应用程序(如 Web 服务器)需要数字证书进行客户端认证,则客户端会发出“数字证书请求”消息。在 “数字证书请求”消息中,服务器发出支持的客户端数字证书类型的列表和可接受的CA的名称。

(4) 服务器发出服务器“您好完成”消息并等待客户端响应。

(5) 一接到服务器“您好完成”消息,客户端( Web 浏览器)将验证服务器的SSL数字证书的有效性并检查服务器的“你好”消息参数是否可以接受。

如果服务器请求客户端数字证书,客户端将发送其数字证书;或者,如果没有合适的数字证书是可用的,客户端将发送“没有数字证书”警告。此警告仅仅是警告而已,但如果客户端数字证书认证是强制性的话,服务器应用程序将会使会话失败。

(6) 客户端发送“客户端密钥交换”消息。此消息包含 pre-master secret(一个用在对称加密密钥生成中的 46 字节的随机数字),和 消息认证代码( MAC )密钥(用服务器的公用密钥加密的)。

如果客户端发送客户端数字证书给服务器,客户端将发出签有客户端的专用密钥的“数字证书验证”消息。通过验证此消息的签名,服务器可以显示验证客户端数字证书的所有权。

注意: 如果服务器没有属于数字证书的专用密钥,它将无法解密 pre-master 密码,也无法创建对称加密算法的正确密钥,且握手将失败。

(7) 客户端使用一系列加密运算将 pre-master secret 转化为 master secret,其中将派生出所有用于加密和消息认证的密钥。然后,客户端发出“更改密码规范” 消息将服务器转换为新协商的密码对。客户端发出的下一个消息(“未完成”的消息)为用此密码方法和密钥加密的第一条消息。

(8) 服务器以自己的“更改密码规范”和“已完成”消息响应。

(9) SSL 握手结束,且可以发送加密的应用程序数据。


0 0
原创粉丝点击