一、密码学的相关概念
密码学(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头。
相关推荐
SSL协议包含握手协议、记录协议、密钥交换协议等多个子协议,其中握手协议用于建立安全连接,记录协议则处理实际的数据传输。 在Qt中,实现SSL通信主要依赖于`QTcpSocket`和`QSslSocket`类。`QTcpSocket`是基础的...
一、SSL协议基础 SSL协议主要负责在网络中建立安全的连接,通过加密技术保证数据传输的隐私性和完整性。它通过握手过程,确保双方身份的验证,并协商加密算法,为后续的数据传输提供安全保障。在易语言中,SSL_...
本文将主要关注在Java中使用MINA来实现安全套接层(SSL)和传输层安全(TLS)协议,这两个协议是网络安全通信的基础,确保数据在网络中的加密传输。 首先,理解TLS/SSL的核心概念至关重要。它们都是为网络通信提供...
本篇文章将深入探讨如何在Java环境中配置和使用SSL。 首先,我们来了解SSL的基础知识。SSL通过公钥和私钥加密机制来实现安全通信。服务器持有私钥,客户端持有公钥,数据在发送时由公钥加密,接收时由私钥解密。...
在这个"网络编程基础篇系列"中,我们将深入探讨这个主题,特别是通过Perl语言的应用。 首先,我们要了解网络编程的核心概念。网络编程主要包括客户端和服务器端的概念,它们是网络通信的两个主要角色。客户端发起...
SSL(Secure Sockets Layer)安全证书是实现HTTPS的基础,而Nginx和Tomcat是两种常用的Web服务器软件。本篇文章将详细介绍如何在Nginx和Tomcat上安装阿里云提供的免费SSL安全证书,以实现网站的HTTPS访问。 首先,...
一、SSL/TLS协议基础 SSL/TLS协议的主要目的是为网络通信提供加密传输,防止数据在传输过程中被窃取或篡改。它包括两个主要阶段:握手阶段和记录层传输阶段。握手阶段用于建立安全连接,包括身份验证、协商加密算法...
本篇文章将详细讲解基于SSL(Secure Socket Layer)的Java Socket网络通信,帮助开发者理解如何在Java中实现安全的、加密的数据传输。 SSL是一种广泛使用的网络安全协议,它为网络通信提供了数据加密、服务器身份...
在Android中,`HttpsConnection`类负责处理HTTPS协议,而`SSLSocket`及其相关类则实现SSL协议。`HttpsConnection`可以通过调用SocketFactory接口启动SSL握手过程。这一过程涉及多个类,包括`SSLSocket`、`...
"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框架下利用OpenSSL实现一个SSL服务器。 首先,我们需要理解Boost.Asio和OpenSSL的关系。Boost.Asio是Boost库的一部分,它提供了一种跨平台的方式来处理I/O操作,包括网络通信。...
本书《Java Web开发实战经典基础篇》由李兴华撰写,提供了完整的源程序,旨在帮助初学者深入理解并实践Java Web开发的核心概念。 1. **Servlet与JSP** - Servlet是Java Web开发中的核心组件,用于处理HTTP请求和...
通过学习和实践这个“网络编程基础篇系列-perl”,你将掌握Perl在网络编程中的基本技巧,包括建立连接、传输数据、处理协议以及应对网络异常。结合提供的资源,如“网络编程基础篇系列(perl).exe”可能包含的示例...
"网络编程基础篇系列"这个压缩包文件很可能是为初学者准备的一份详细教程,涵盖了网络编程的基础概念和技术。让我们深入探讨一下这个主题。 首先,我们要理解网络编程的基本概念。网络编程是指编写能够通过网络进行...
首先,了解SSL(Secure Sockets Layer)及其升级版TLS(Transport Layer Security)是网络安全的基础。它们通过加密传输,防止数据在传输过程中被窃取或篡改。在Nginx中配置HTTPS,我们需要准备两个关键文件:SSL...
首先,了解SSL/TLS(Transport Layer Security)协议的基础知识是必要的。SSL/TLS用于在两个通信实体之间建立安全的连接,防止中间人攻击,确保数据传输的隐私性和完整性。它主要涉及服务器身份验证、客户端身份验证...