系统安全之数据的加密和解密、CA的介绍、SSL或TLS协议简介及握手过程

网络通信需要安全
                所谓的网络通信就是进程与进程之间的通信
                        然而进程的通信一般可以分成两类:1、同一主机之间的进程通信
                                                                              2、不同主机之间的进程通信
                                                                                                                                            
            同一主机之间的通信有这些:管道、命名管道、消息队列、信号量、共享内核
            
                    管道:用于有亲缘关系(附属关系、父子关系等)的进程间通信
                    
                    命名管道:以用于无关进程之间的数据交换
                    
                    消息队列:存放在内核中的消息的链接表,由QID进行标识
                    
                    信号量:是一个计数器;用于实现进程间的互斥与同步
                    
                    共享内核:指两个及以上的进程或线程共享一个给定的内存存储区域
            
            不同主机之间的通信有这些:套接字,Socket,IP:PORT,进程地址标识,即:一个套接字就是指某个特定主机上的特定应用程序;            
                    套接字又可以分为3种:1、流套接字
                                                        2、数据报套接字
                                                        3、原始套接字

流套接字:ocket_Stream,基于TCP协议通信的套接字

数据报套接字:Socket_Dgram,基于UDP协议通信的套接字

原始套接字:裸套接字,Socket_Raw,基于更底层的协议(如:IP)通信的套接字;

安全实现的目标:
    机密性:confidenciality,保证数据信息不泄露;
    完整性:integrity,保证数据信息不被篡改;
    可用性:availability,保证数据信息的内在价值;

威胁安全的行为:
    威胁机密性的攻击行为:窃听,嗅探,通信量分析;
    威胁完整性的攻击行为:篡改,伪装,重放,否认;
    威胁可用性的攻击行为:拒绝服务(DoS),分布式拒绝服务(DDoS);

安全解决方案:技术与服务
    技术:加密和解密

加密和解密有两种方法:1、传统的:置换加密、替换加密

2、现代的:块加密

服务: 用于抵御攻击而提供的为了实现上述安全目标而特别设计的安全服务;
           1、 身份认证;
           2、访问控制;

加密方案:
    因素:1、加密算法和协议;
              2、加密密钥

加密算法和协议有:1、对称加密算法:加密和解密使用同一密钥

2、公钥加密算法(非对称加密算法):

3、单向加密算法(Hash加密算法,数据指纹算法);

4、认证协议;

加密算法的应用:
    1.通信双方互相交换各自的证书,并到信任的CA进行证书有效性认证;
    2.如果证书认证有有效,发送方使用某种协商好的对称加密算法进行数据加密;对加密后的数据进行特征值抽取;再用自己的私钥加密抽取出来的特征值,以证明数据来源可靠性;发送方利用接收方的公钥加密对称加密算法的密钥;
    3.接收方在收到数据报文之后,先用自己的私钥解密对称加密算法的密钥;然后用发送方的公钥解密被加密的特征值,以证明数据来源可靠;再利用相同的单向加密算法计算数据的特征值,比较两个特征值,以证明数据完整性;再用对称密钥解密加密的数据即可;

以CA为核心生成的一套安全架构体系:
    PKI:Public Key Infrastructure,公钥基础设施;其包含的内容:
        1.签证机构:CA
        2.注册机构:RA
        3.证书吊销列表:CRL
        4.证书存储库:CR

国际标准化组织(ISO)定义了证书的结构和认证标准:X.509协议标准:
        证书的组成包括:
            证书的版本号;
            证书的序列号;
            有效期限;
            签发算法的ID;
            签发CA的名称;
            主体的名称;
            主体的公钥;
            主体唯一标识符;
            发证者的唯一标识符;
            发证者的数字签名;
            扩展信息;

CA如何发挥作用?
    1.通信双方互相交换证书;
    2.双方验证证书的真伪;
    3.双方协商加密算法;
    4.用CA颁发的公钥解密证书的中CA的签名,能解密说明证书来源可靠;
    5.用CA的加密算法加密证书,并取得特征值;与解密出来的特征值进行比较,如果相同,说明证书完整性有保证;
    6.检查证书的有效期是否合法,如果在有效期内,则证书可用;
    7.检查证书的主体名称和此次通信的目标是否能够对应;
    8.检查证书是否被吊销;

能够实现上述安全加密功能的协议:
    SSL:Security Socket Layer,安全套接字层;
        1994年,Netscape(网景)公司最先声明并实施;
            SSL V1.0
            SSL V2.0
            SSL V3.0

TLS:Transport Layer Security,传输层安全协议;
        IETF:Internet Engineering Task Force,互联网工程项目小组;
            1999年提出TLS V1.0
            2006年提出TLS V1.1
            2008年提出TLS V1.2草案,添加了椭圆曲线加密算法;

分层设计方案:
            1.最底层:规定了基础算法的原语的实现;包括:AES, md5, sha,...
            2.向上一层:各种算法的基本实现;
            3.再向上一层:各种算法组合实现的半成品;
            4.最高层:用各种组件拼装而成的各种成品密码学协议软件;

SSL/TLS的handshake的四个阶段:
        1.客户端向服务器索要证书并验证证书;
            发送Client Hello的消息,此消息主要内容:
                支持的协议的版本,如:SSL v3.0或TLS v1.2;
                客户端生成一个随机数,稍后用于生成回话密钥;
                支持的加密算法,如:DES,3DES,AES,RSA,....
                支持的压缩算法,如:gzip,bzip2,deflate,...

2.双方协商生成会话密钥:
            发送Server Hello消息,此消息主要内容:
                确认使用的协议的版本,如:TLS v1.2
                服务器也生成一个随机数,稍后用于生成会话密钥;
                确认加密算法和压缩算法;
                服务器的证书;

3.双方采用以及生成的会话密钥进行安全加密的数据通信:
            客户端验证服务器证书,在确认无误后,取出其中的服务器公钥;
                验证服务器证书的步骤:
                    验证发证机构(CA);
                    验证证书的完整性;
                    验证证书的持有者信息;
                    验证证书的有效期;
                    验证CA的吊销列表中是否有此证书;
            客户端发送信息给服务器端;
            客户端再次生成一个随机数,用于公钥加密;
            编码格式的变更通知,表示以后的信息都将采用双方已经协商好的加密算法和压缩算法;
                客户端握手结束;

服务器收到客户端发送来的第三个随机数(Pre_Master_key),计算生成此次会话用到的会话密钥,向客户端发送相关信息;
            编码格式的变更通知,表示以后的信息都将采用双方已经协商好的加密算法和压缩算法;
                服务器端握手结束;

4.双方互相结束通信:

原文地址:http://blog.51cto.com/weidehong/2094980

时间: 2024-10-11 06:19:57

系统安全之数据的加密和解密、CA的介绍、SSL或TLS协议简介及握手过程的相关文章

数据的加密和解密初识

数据的加密和解密 加密是让数据从明文变成密文,传输过程中是密文,传送过去之后对方接收到的也是密文. 可以理解为密文就是乱码,看不出内在的任何意义,通常也都是逐位对应的. 在接收方接收到密文之后只有把它还原为原来的样子才可以理解对方说的具体是什么,此过程就叫做解密. 1.不同主机之间的进程间通信:Socket-pair,套接字对 套接字Socket的三种类型: 流套接字(Socket_Stream):基于TCP协议通信的套接字 数据报套接字(Socket_Dgram):基于UDP协议通信的套接字

数据之加密与解密

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 下面将利用Bober与Alex的通信来解释说明数据的加密和解密过程 Bober与Alex进行通信的简单过程 说明: 图中的1,2过程为Bober和Alex获取对方的签署证书: Bober获得Alex的签署证书后,验证其证书的合法性和正确性: Bober利用单向加密.对称加密以及公钥加密对自己的数据进行加密: 图中的过程3表示Bober将加密后的数据发送给Alex: Alex接收到Bober的加密

PHP 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密

<?php /* 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密 */ // 加密 $algorithm = MCRYPT_BLOWFISH; // 加密算法 $key = 'mycryptkey'; // 加密密钥 $data = '12345'; // 要加密或解密的数据 $mode = MCRYPT_MODE_CBC; // 加密或解密的模式 // 初始向量 $iv = mcrypt_create_iv(mcryp

jdk自带的MD5进行数据的加密与解密

package com.tools.util; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher;

C#数据Encrypt加密Encrypt解密的算法使用--非对称算法RSACryptoServiceProvider

C#数据加密解密的非对称算法使用---RSACryptoServiceProvider   Asymmetric algorithms--Encrypt Encrypt C#数据Encrypt加密Encrypt解密的相关算法可以参考System.Security.Cryptography,这个类库中包含MD5,SHA1,SHA256,SHA384,SHA512 MD5 and SHA256 are two of the HashAlgorithm subtypes provided by the

数据的加密和解密

当前网络环境中,数据的来往是十分密切,面对着海量的信息集合,很少有人去考虑如何去保证,或者说数据是怎么被保证安全的到达目的地的,在默认情况下,数据的发送是明文发送的,也就是说,数据的发送可以被除发送方和接收方的第三方所截获,读取信息,或者通过长年累月的数据量分析得出发送方的某些重要信息,这对于用户来说都是不可接受的,所以随着网络数据的不断发展,人们不断对数据加密进行更新换代,由一开始的传统加密,通过替换的方式加密信息,到后来的块加密算法: 现在的加密算法,如对称加密,公钥加密,作为一段时期的主要

iOS开发之 AES+Base64数据混合加密与解密

2016-04-08 09:03 编辑: liubinqww 分类:iOS开发 来源:liubinqww 投稿 4 889 "APP的数据安全已经牵动着我们开发者的心,简单的MD5/Base64等已经难以满足当下的数据安全标准,本文简单的介绍下AES与Base64的混合加密与解密" AES:高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES

TLS协议扫盲(握手,非对称加密,证书,电子签名等)

想学习TLS协议最好的方法应该是去看RFC,但如果对安全传输协议没有一些基本认识的人很难一上来就读懂RFC里面的种种细节和设计原则,所以这里为了能够进一步去弄懂TLS协议,把一些基本的知识放在这里,算是扫下盲. 1. TLS与SSL的区别:SSL是TLS的前身,TLS做出了一些使其更安全的改进.事实上,在客户端向服务器发起连接请求时,会附上的所支持的协议版本:这里的协议版本标识了是SSL或TLS(3.1为TLS) 2. TLS在真正传输过程中使用对称加密,因为对称加密效率更高.而对称加密所使用的

加密、解密原理和openssl自建CA过程详解

一.加密和解密相关知识简介 1.信息安全标准 NIST(National Institute of Standards and Technology)美国国家标准与技术研究院,制定了网络信息安全与保密的三个要素: 保密性(confidentiality):信息不泄露给非授权用户.实体或过程,或供其利用的特性.(一般包括数据保密性.隐私性.) 完整性(Integrity):数据未经授权不能进行改变的特性.即信息在存储或传输过程中保持不被修改.不被破坏和丢失的特性.(一般包括数据完整性.系统完整性.