`
cakin24
  • 浏览: 1383806 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

SSL协议之基础篇

阅读更多
一、密码学的相关概念
密码学(cryptography):目的是通过将信息编码使其不可读,从而达到安全性。
明文(plain text):发送人、接受人和任何访问消息的人都能理解的消息。
密文(cipher text):明文消息经过某种编码后,得到密文消息。
加密(encryption):将明文消息变成密文消息。
解密(decryption):将密文消息变成明文消息。
算法:取一个输入文本,产生一个输出文本。
加密算法:发送方进行加密的算法。
解密算法:接收方进行解密的算法。
密钥(key):只有发送方和接收方理解的消息
对称密钥加密(Symmetric Key Cryptography):加密与解密使用相同密钥。
非对称密钥加密(Asymmetric Key Cryptography):加密与解密使用不同密钥。
 
二 DES加密算法介绍
DES算法即数据加密标准,也称为数据加密算法。
在SSL中会用到分组DES、三重DES算法等加密算法对数据进行加密。当然可以选用其他非DES加密算法,视情况而定。
 
三、密钥交换算法之Diffie-Hellman
(1)Alice与Bob确定两个大素数p和g,这两个数不用保密
(2)Alice选择另一个大随机数a,并计算A如下:A=ga mod p
(3)Alice将A发给Bob
(4)Bob  选择另一个大随机数b,并计算B如下:B=gb mod p
(5)Bob将B发给Alice
(6)计算秘密密钥K1如下:K1=Ba mod p
(7)计算秘密密钥K2如下:K2=Ab mod p
 K1=K2,因此Alice和Bob可以用其进行加解密

1、通信方Alice和通信方Bob约定g=5,p=23,g和p是公开的
2、Alice生成一个随机数a,a是保密的,如a=6
3、Alice计算g^a%p发送给Bob,g^a%p=5^6%23=8
4、Bob生成一个随机数b,b是保密的,如b=15
5、Bob计算g^b%p发送给Alice,g^b%p=5^15%23=19
6、Alice接收到g^b%p后,再使用保密的a,计算(g^b%p)^a%p=19^6%23=2
7、Bob接收到g^a%p后,再使用保密的b,计算(g^a%p)^b%p=8^15%23=2
8、这样通信方Alice和Bob得到一个相同的密钥:2
 
四、密钥交换算法之RSA
(1)选择两个大素数P、Q
(2)计算N=P*Q
(3)选择一个公钥(加密密钥)E,使其不是(P-1)与(Q-1)的因子
(4)选择私钥(解密密钥)D,满足如下条件:
          (D*E) mod (P-1)(Q-1)=1
(5)加密时,明文PT计算密文CT如下:
          CT=PTE mod N
(6)解密时,从密文CT计算明文PT如下:
          PT=CTD mod N 这也是SSL中会用一种密钥交换算法。

RSA算法中,素数P=7,Q=11,加密密钥E=7,计算解密密钥D
N=PQ=7*11=77
(P-1)(Q-1)=6*10=60
根据公式D*E ≡ 1 (mod (P-1)(Q-1))
又E=7,所以7*D ≡ 1 (mod 60),即 7D mod 60 = 1。
因为7x43=301,并且301除以6刚好余1.
所以D=43

下面是公式依据:
假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。她可以用以下的方式来产生一个公钥和一个私钥
1.随意选择两个大的质数P和Q,P不等于Q,计算N=PQ。
2.根据欧拉函数,不大于N且与N互质的整数个数为(P-1)(Q-1)
3.选择一个整数E与(P-1)(Q-1)互质,并且E小于(P-1)(Q-1)
4.用以下这个公式计算D:D*E ≡ 1 (mod (P-1)(Q-1))
5.将P和Q的记录销毁。
E是公钥,D是私钥。D是秘密的,而N是公众都知道的。Alice将她的公钥E传给Bob,而将她的私钥D藏起来。
 
五、散列算法
主要用于验证数据的完整性,即保证消息在发送之后和接收之前没有被篡改过,对于SSL中使用到的散列算法主要有MD5、SHA-1。
 
六、数字证书
数字证书其实就是一个小的计算机文件,其作用类似于我们的身份证、护照,用于证明身份,在SSL中,使用数字证书来证明自己的身份,而不是伪造的。
 
七、简单的小结
1、使用密钥交换算法交换密钥。
2、使用密钥对数据进行加密。
3、使用散列算法对数据的完整性进行验证。
4、使用数字证书证明自己的身份。
 
八、SSL介绍
安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密。
SSL是Netscape于1994年开发的,后来成为了世界上最著名的web安全机制,所有主要的浏览器都支持SSL协议。
目前有三个版本:2、3、3.1,最常用的是第3版,是1995年发布的。
 
九、SSL协议的三个特性
保密:在握手协议中定义了会话密钥后,所有的消息都被加密。
鉴别:可选的客户端认证,和强制的服务器端认证。
完整性:传送的消息包括消息完整性检查(使用MAC)。
 
十、 SSL的位置
SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。

 
  • 大小: 98 KB
  • 大小: 6.3 KB
1
2
分享到:
评论

相关推荐

    Qt实现的SSL通信客户端和服务器

    SSL协议包含握手协议、记录协议、密钥交换协议等多个子协议,其中握手协议用于建立安全连接,记录协议则处理实际的数据传输。 在Qt中,实现SSL通信主要依赖于`QTcpSocket`和`QSslSocket`类。`QTcpSocket`是基础的...

    易语言SSL_Socket通信模块源码

    一、SSL协议基础 SSL协议主要负责在网络中建立安全的连接,通过加密技术保证数据传输的隐私性和完整性。它通过握手过程,确保双方身份的验证,并协商加密算法,为后续的数据传输提供安全保障。在易语言中,SSL_...

    基于 MINA 的 TLS/SSL NIO Socket 实现(二)

    本文将主要关注在Java中使用MINA来实现安全套接层(SSL)和传输层安全(TLS)协议,这两个协议是网络安全通信的基础,确保数据在网络中的加密传输。 首先,理解TLS/SSL的核心概念至关重要。它们都是为网络通信提供...

    SSL.rar_ssl_ssl在JAVA中开发

    本篇文章将深入探讨如何在Java环境中配置和使用SSL。 首先,我们来了解SSL的基础知识。SSL通过公钥和私钥加密机制来实现安全通信。服务器持有私钥,客户端持有公钥,数据在发送时由公钥加密,接收时由私钥解密。...

    网络编程基础篇系列

    在这个"网络编程基础篇系列"中,我们将深入探讨这个主题,特别是通过Perl语言的应用。 首先,我们要了解网络编程的核心概念。网络编程主要包括客户端和服务器端的概念,它们是网络通信的两个主要角色。客户端发起...

    nginx、tomcat安装免费ssl安全证书配置

    SSL(Secure Sockets Layer)安全证书是实现HTTPS的基础,而Nginx和Tomcat是两种常用的Web服务器软件。本篇文章将详细介绍如何在Nginx和Tomcat上安装阿里云提供的免费SSL安全证书,以实现网站的HTTPS访问。 首先,...

    ssl_android.zip_TLS_android_android ssl_application_ssl/tls

    一、SSL/TLS协议基础 SSL/TLS协议的主要目的是为网络通信提供加密传输,防止数据在传输过程中被窃取或篡改。它包括两个主要阶段:握手阶段和记录层传输阶段。握手阶段用于建立安全连接,包括身份验证、协商加密算法...

    基于ssl的Java的socket网络通信

    本篇文章将详细讲解基于SSL(Secure Socket Layer)的Java Socket网络通信,帮助开发者理解如何在Java中实现安全的、加密的数据传输。 SSL是一种广泛使用的网络安全协议,它为网络通信提供了数据加密、服务器身份...

    Android SSL证书验证原理

    在Android中,`HttpsConnection`类负责处理HTTPS协议,而`SSLSocket`及其相关类则实现SSL协议。`HttpsConnection`可以通过调用SocketFactory接口启动SSL握手过程。这一过程涉及多个类,包括`SSLSocket`、`...

    p12 - p28TCP基础篇

    "p12-p28TCP基础篇" 本篇文章主要介绍了 HTTP 基础知识,包括 HTTP 的基本概念、Get 与 Post、HTTP 特性、HTTPS 与 HTTP、HTTP/1.1、HTTP/2、HTTP/3 演变等。 HTTP 基本概念 ---------------- HTTP 是超文本传输...

    网络安全之计算机网络基础篇(基础入门)

    计算机网络基础篇是网络安全领域中的一个重要组成部分,它涉及了计算机网络的构建、运作方式、协议以及安全措施等基础知识。在本篇中,将详细探讨以下几个核心知识点: 1. 计算机网络的定义和分类: 计算机网络是由...

    计算机网络高级软件编程技术 基础篇[评价可免费]

    5. **网络安全**:基础篇可能涉及基础的网络安全概念,如加密技术(SSL/TLS)、身份验证、授权以及防止常见攻击(如DDoS、中间人攻击等)的策略。 6. **网络性能优化**:包括带宽管理、减少延迟、提高吞吐量等方法...

    计算机网络编程基础篇

    本资源包名为"计算机网络编程基础篇",显然是为初学者设计的,旨在提供网络编程的基本概念、原理和技术。让我们深入探讨一下这个话题。 首先,我们要理解网络编程的基础——TCP/IP协议栈。TCP/IP模型分为四层:应用...

    boost下ssl的使用服务端

    本篇文章将深入探讨如何在Boost框架下利用OpenSSL实现一个SSL服务器。 首先,我们需要理解Boost.Asio和OpenSSL的关系。Boost.Asio是Boost库的一部分,它提供了一种跨平台的方式来处理I/O操作,包括网络通信。...

    java web开发实战经典基础篇(李兴华)全部完整源程序

    本书《Java Web开发实战经典基础篇》由李兴华撰写,提供了完整的源程序,旨在帮助初学者深入理解并实践Java Web开发的核心概念。 1. **Servlet与JSP** - Servlet是Java Web开发中的核心组件,用于处理HTTP请求和...

    网络编程基础篇系列-perl

    通过学习和实践这个“网络编程基础篇系列-perl”,你将掌握Perl在网络编程中的基本技巧,包括建立连接、传输数据、处理协议以及应对网络异常。结合提供的资源,如“网络编程基础篇系列(perl).exe”可能包含的示例...

    网络编程基础篇系列.rar

    "网络编程基础篇系列"这个压缩包文件很可能是为初学者准备的一份详细教程,涵盖了网络编程的基础概念和技术。让我们深入探讨一下这个主题。 首先,我们要理解网络编程的基本概念。网络编程是指编写能够通过网络进行...

    nginx配置https的ssl 私钥证书

    首先,了解SSL(Secure Sockets Layer)及其升级版TLS(Transport Layer Security)是网络安全的基础。它们通过加密传输,防止数据在传输过程中被窃取或篡改。在Nginx中配置HTTPS,我们需要准备两个关键文件:SSL...

    android 7.0 SSLsocket

    首先,了解SSL/TLS(Transport Layer Security)协议的基础知识是必要的。SSL/TLS用于在两个通信实体之间建立安全的连接,防止中间人攻击,确保数据传输的隐私性和完整性。它主要涉及服务器身份验证、客户端身份验证...

Global site tag (gtag.js) - Google Analytics