数据的加密和解密初识

数据的加密和解密

加密是让数据从明文变成密文,传输过程中是密文,传送过去之后对方接收到的也是密文。

可以理解为密文就是乱码,看不出内在的任何意义,通常也都是逐位对应的。

在接收方接收到密文之后只有把它还原为原来的样子才可以理解对方说的具体是什么,此过程就叫做解密。

1.不同主机之间的进程间通信:Socket-pair,套接字对

套接字Socket的三种类型:

流套接字(Socket_Stream):基于TCP协议通信的套接字

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

裸套接字,原始套接字(Socket_Ram):基于底层协议通信的套接字

2.威胁安全的行为:

威胁机密性的攻击行为:

窃听、嗅探、扫描、通信量分析

威胁完整性的攻击:

更改、伪装、重放、否认

威胁可用性的攻击:

拒绝服务(DoS)

3.安全实现的目标:

机密性:confidentiality,保证信息不泄露

完整性:integrity,保证信息不被篡改

可用性:availability,保证信息内在价值

4.安全解决方案:

技术:加密和解密

传统的加密方法:替代加密算法

现代的加密方法:块加密方法:

服务:安全服务

身份认证、访问控制机制

5.加密方案:

加密算法和密钥

加密算法

四种加密算法:

对称加密算法

公钥加密算法(非对称加密)

单向加密算法

密钥交换算法

1)对称加密算法:

加密和解密使用同一密钥

特性:

1.每对通信主机都需要保有一个相同的密钥,用于加密和解密

2.将原始的数据分隔成固定大小的块,逐个加密

3.加密和解密的速度比较快

缺陷:

1.加密解密所需要保有的密钥数量过多

2.密钥分发过于困难

主流加密算法:

DES:Data Encryption Standard,数据加密标准

56bit密钥,64bit块

3DES:triple DES

AES:Advanced Encryption Standard高级加密标准

AES128bit,AES192bit,AES256bit

Blowfish

Twofish

IDEA

RC

RC4,RC6

2)公钥加密算法:

密钥分为私钥和私钥抽取生成的公钥组成

私钥:512bit,1024bit,2048bit,4096bit,8192bit,16384bit

特点:

1.使用密钥对来加密和解密,使用私钥加密的数据必须用从中抽取出的公钥解密,同样如果使用公钥加密必须使用与之相对的私钥进行解密

私钥:通过特定的工具创建生成,由使用者自己留存,务必保证其私密性,secret key,或者private key

公钥:从私钥中提取产生,公钥可以公开给所有人使用public key

2.密钥长度比较长,加密后的数据安全等级较高

缺陷:

加密数据的时候,消耗的系统资源和时间都较多,很少用来加密大批量数据

用途:

数字签名:主要用于让接收方确认发送方的身份,使用发送方的私钥发送数据,到了接收方之后,使用发送方的公钥解密数据

密钥交换:发送数据的一方使用接受方的公钥加密对称密钥,将加密后的对称密钥发送给对方

数据加密:通常用于加密小数据

常用的公钥加密算法:

RSA:加密,数字签名

DSA:数字签名算法,Digital signature Algorithm,数字签名算法,只能实现数字签名的功能,有时候该算法被称为DSS,Digital Signature Standard

Elgamal:

3)单项加密:

只能进行加密,不能进行解密,从已知数据中提取密码指纹

特性:

1.定长输出

2.雪崩效应

功能:

保证数据的完整性

常用的算法:

md5:massage digest version 5 ,信息摘要算法的第五版

128bit定长输出

sha系列:

sha-1:secure hash algorithm,安全哈希算法,160bit定长输出

sha224

ssh256

ssh384

ssh512

4)密钥交换算法:IKE(Internet key exchange)

公钥加密

DH算法:deffie-hellman

密钥

国际标准化组织(ISO)定义了证书的结构和认证标准:X.509协议标准

证书里面包括的:

拥有者的名称

拥有者所提交的公钥信息

有效期

证书的版本号

证书的序列号

签发算法ID

签发CA的名称

主体名称

签发机构的唯一标识

签发机构的数字签名

扩展信息

PKI:public key infrastructure,公钥基础设施

证书的签证机构:CA

注册机构:RA

证书吊销列表:CRL,certification Revoke List

证书存取库:CAB,certification Access Base

CA如何发挥其作用:

1.通信双方互相交换证书,

2.双方协商加密算法

3.双方验证证书的真伪

4.CA的公钥解密证书的CA的签名,能解密说明证书来源可靠

5.同样的加密算法加密证书,取得特征值,与解密出来的特征值比较,如果相同说明证书完整性可靠

6.检查证书的有效期是否在合法范围内,如果过期则证书不被认可

7.检查证书的主体名称和此次通信的目标是否能够对应

SSL:Secure Socket Layer,安全的套接字层

TLS:Transport Layer Security,传输层安全

IETF:Internet Engineering Task Force,互联网工程项目小组

分层设计:

1.最底层:实现基础算法的原语的实现,AES,md5,sha...

2.向上一层:各种算法的基本实现

3.再向上一层:各种算法组合实现的半成品

4.最高层:各种组件拼装而成的各种成品密码学协议软件

SSL/TLS的handshake(握手)的四个阶段:

1.客户端向服务器索要证书,并验证证书是否合法

Client Hello发送的信息内容

支持的协议版本,如:TLS V1.2

客户端生成一个随机数,稍后用户生成会话密钥

支持的加密算法,如:AES,DES,RSA等

支持的压缩算法

2.双方协商生成会话密钥

Server Hello发送的信息内容

确认使用的加密协议的版本号,如 TLS V1.2

服务器生成一个随机数,稍后用于生成会话密钥

确认加密算法及压缩算法

3.双方采用已经生成的会话密钥进行安全加密的通信

客户端验证服务器证书,在确认无误后取出其公钥

验证服务器证书需要验证下述内容:

验证发证机构(CA)

验证证书的完整性

验证证书的持有者信息

验证证书的有效期

验证证书的吊销列表

客户端发送信息给服务器端

一个随机数,用于服务器上的公钥加密

编码格式变更的通知,表示随后的信息都将用双方已经协商好的加密算法和秘钥进行加密发送

客户端握手结束

4.双方互相通告握手结束的信息

服务器收到客户端发送来的此次握手阶段的第三个随机数Pre-Master-key,计算生成本次会话所用到的会话密钥,向客户端发送相关信息

编码变更通知,表示随后的信息都将用双方已经协商好的加密算法和密钥进行加密发送,

服务器端握手结束

时间: 2024-10-01 03:32:32

数据的加密和解密初识的相关文章

数据之加密与解密

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 下面将利用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

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

网络通信需要安全                所谓的网络通信就是进程与进程之间的通信                        然而进程的通信一般可以分成两类:1.同一主机之间的进程通信                                                                              2.不同主机之间的进程通信                                                              

加密解密技术—Web.config加密和解密

阅读目录 一:我们为什么要对web.config配置文件中的配置节加密? 二:怎么样加密和解密? 三:实例 四:运行效果 一:我们为什么要对web.config配置文件中的配置节加密? 因为在我们的项目中,有的配置节可能包含敏感信息,我们看下面的<connectionStrings/>配置节中包含了我们连接 数据库的用户名和密码以及IP地址,这要是暴露出去是很危险的,还有<identity/>配置节中包含了运行时使用的模拟账号的用户名和密 码,这些配置节都包含着敏感信息,我们不希望

加密、解密 &nbsp; 以及OpenSSL建立私有CA

加密.解密,以及OpenSSL建立私有CA 加密技术是互联网最常用的安全保密手段,其利用技术手段把重要的数据加密后传送,到达目的地后再用相同或不同的手段进行解密. 加密技术包括两个元素:算法和密钥 常用的加密技术:对称加密.非对称加密.单向加密 以上几种加密技术各有千秋,经常组合起来使用 1.对称加密 加密和解密使用同一个密钥,将明文分隔成固定大小的块,逐个进行加密: 常见算法:DES  3DES  Twofish  IDEA  IDEA  CAST5  RC6 Blowfish 2.非对称加密