数据加密与解密

加密是以某种特殊的算法改变原有的信息数据使得未授权的用户即使获得了已加密的信息但因不知解密的方法仍然无法了解信息的内容。在互联网上对数据的加密主要是保证三个方面内容数据的保密性、完整性以及对方的身份验证。

安全实现的目标:

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

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

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

威胁机密性的攻击行为:

窃听

嗅探

扫描

通信量分析

威胁完整性的攻击行为

更改

伪装

重放

否认

威胁可用性的攻击行为:

拒绝服务(DOS)

安全解决方案:

技术:加密和解密;

传统的加密方法:

替代加密算法

置换加密算法

现代加密算法

块加密算法

服务:安全服务;

身份认证

访问控制机制,

加密方案:

加密算法和密钥

加密算法:

对称加密算法:

加密和解密使用同一密钥;

特性:

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

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

3.加密解密的速度较快

缺陷:

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

2.密钥分发过于困难

主流加密算法:

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

56bit密钥,664bit块

3DES:

AES: Advanced Encryption Standard,嘎吉加密标准

AES126bit         AES192bit      AES256bit

Blowfish

Twofish

IDEA

RC4,  RC6

公钥加密算法:

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

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

用途:

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

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

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

特点:

1.使用密钥对进行加密和解密,使用私钥加密的数据,必须用从中抽取出的公钥解密;使用公钥加密的数据,必须用与之对应的私钥解密

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

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

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

缺陷:

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

常用的公钥加密算法:

RSA: 加密,数字签名

DSA: digital signature algorithm,只能实现数字签名的功能,有时候也被称为DSS,Digital signature standard

ELgamal:

单向加密算法:

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

特性:

1.定长输出

2.雪崩效应

功能:

保证数据的完整性

常用算法:

md5:message digest version 5,信息摘要算法第5版

128bit定长输出

sha系列:

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

sha224

sha256

sha384

sha512

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

公钥加密;

DH算法:deffie-hellan

加密算法的联合应用:

1.通信双方互相交换证书,并到信任的CA进行证书验证;

2.发送方使用某种对称加密算法对数据进行加密,对加密后的数据使用单项加密,计算其特征值;发送方再用自己的私钥加密此特征值,以证明数据来源的可靠;发送方使用接收方的整数加密对称密钥

3.接收方在收到数据后,先是用自己的私钥解秘对称密钥,然后使用发送方的公钥揭秘特征值,再利用相同的单项加密算法,诚信结算加密数据的特征值;比较两个特征值;如果特征值一致,则表明数据完整;再用解密出来的对称密钥解密出原始数据

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

证书包括的主要内容:

拥有者名称

拥有者所提交的公钥

有效期

证书的版本号

证书的序列号

签发算法ID

签发CA的名称

主体名称

发证者的唯一标识

发证者的数字签名

扩展信息

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

证书签证机构:CA

注册机构:RA

证书吊销列表:CRL,certificatiion revoke list

证书存取库:CAB, certification access base

CA如何发挥其作用的:

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

2.双方协商加密算法

3.双方验证证书的真伪

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

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

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

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

二、SSL: secure socket layer,安全的套接字层

TLS:transport layer security,传输层安全

分层设计:

1.最底层:基础算法原语的实现;AES.MD5,SHA

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

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

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

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

1.客户端向服务器索要证书并验证

client hello发送的信息内容

支持的协议版本

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

支持的加密算法

支持的压缩算法

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

server hello发送的信息内容

确认使用的加密协议的版本号

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

确认加密算法及压缩算法

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

客户端验证服务器证书,在验证无误后,去除其公钥

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

验证发证机构(CA)

验证证书的完整性

验证证书的持有者信息

验证证书的有效期

验证证书的吊销列表

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

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

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

客户端握手结束;

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

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

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

服务器端握手结束

时间: 2024-10-24 21:18:14

数据加密与解密的相关文章

常用数据加密和解密方法

关键词:数据加密用哪种方式更好? ASP.NET(C#)常用数据加密和解密方法汇总  一.数据加密的概念 1.  基本概念 2.  基本功能 3.  加密形式 二. 数据加密的项目应用和学习 1.  媒体加密:DRM 2.  文件加密:文本加密.pdf.word 3.  数据加密:ASP.NET(C#)中的数据加密 4.  硬件加密:加密狗 三. 数据加密的发展趋势 四. 网络数据加密算法分类 1.  根本不考虑解密问题:MD5. 2.  私用密钥加密:DES.AES 3.  公用密钥加密:RS

ASP.NET(C#)常用数据加密和解密方法汇总

一.            数据加密的概念 1.  基本概念 2.  基本功能 3.  加密形式 二.            数据加密的项目应用和学习 1.  媒体加密:DRM 2.  文件加密:文本加密.pdf.word 3.  数据加密:ASP.NET(C#)中的数据加密 4.  硬件加密:加密狗 三.            数据加密的发展趋势 四.            网络数据加密算法分类 1.  根本不考虑解密问题:MD5. 2.  私用密钥加密:DES.AES 3.  公用密钥加密:

ActiveX数据加密和解密控件Xceed Encryption Library 介绍

Xceed Encryption Library 是一款ActiveX数据加密控件,支持最新的工业标准加密算法,支持对称和非对称密码学,可以对缓存.字符串.二进制数据.流数据或者文件进行加密和解密,并且不依靠微软的CryptoAPI.该产品包含在 Xceed Ultimate Suite 套包中. 具体功能: 支持强大的秘钥加密和公钥加密 支持强大的AES 128-, 192-, 256-位对称密钥加密 支持最先进的Rijndael算法.双鱼算法.RSA加密算法 支持电子密码本(ECB)和密码块

数据库数据加密与解密

MVC的练习之旅,将要进入另一个阶段了,将增加会员功能.在进入之前,一些准备工作需要做的.一步一个脚印吧.设计会员功能,其中密码字段,Insus.NET想对它进行加密.就因这个加密,还得花上一些时间来整理.Insus.NET参考MSDN网站,列出数据库加密解密例子(以下是在SQL Server 2012进行): --创建数据库主密钥 CREATE MASTER KEY ENCRYPTION BY PASSWORD ='Pass#Tutorial#word' GO --创建证书 CREATE CE

php接口数据加密、解密、验证签名代码实例

php接口数据加密.解密.验证签名 代码很简单,这里就不多废话了,直接奉上代码 <?php /** * 数据加密,解密,验证签名 * @edit http://www.lai18.com * @date 2015-07-08 **/ //header('Content-Type: text/xml; charset=utf-8'); include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'phpsec'.DIRECTORY_SEP

探讨.NET Core数据加密和解密问题

前言 一直困扰着我关于数据加密这一块,24号晚上用了接近3个小时去完成一项任务,本以为立马能解决,但是为了保证数据的安全性,我们开始去对数据进行加密,然后接下来3个小时专门去研究加密这一块,然而用着用着却发现了一点问题,于是下班回来到写这篇博客到深夜才正式解决,请往下看. 3DES数据加密 由于数据需要获取出来并显示于是只能使用对称加密,关于加密这一块网上对于.NET Framework的实现数不胜数,好像对于.NET Core这一块比较少,于是就开始进行研究.这个时候就利用DES或者Tripl

https原理:证书传递、验证和数据加密、解密过程解析

目录(?)[-] HTTPS简介 客户端发起HTTPS请求 服务端的配置 传送证书 客户端解析证书 传送加密信息 服务段解密信息 传输加密后的信息 客户端解密信息 写的太好了,就是我一直想找的内容,看了这个对https立马明白多了 http://www.cnblogs.com/zhuqil/archive/2012/07/23/2604572.html 我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议. HTTPS

php使用openssl进行Rsa长数据加密(117)解密(128) 和 DES 加密解密

PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文:解密的时候需要128个字符解密一下,然后拼接成数据. 加密: /** * 加密 * @param $originalData * @return string|void */ /*function encrypt($originalData){ // if (openssl_private_encrypt($originalData, $encryptD

IOS开发之数据加密与解密:AES256+Base64转码

AES:高级加密标准(Advanced Encryption Standard).在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准.2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一. 以上来自百度百科. 本篇采用代码的方式阐述加密