加密解密过程

1,首先来说说有关加密解密有关的信息

信息安全标准NIST(National Institute of Standards and Technology)美国国家标准与技术研究院

openssl有CIA

C:保密性:

数据保密性

隐私性

A:完整性:

数据完整性

系统完整性

I:可用性

真实性:一个实体是真实的,可被验证的。

可追溯性:一旦被攻击,能够追溯攻击源在哪

2,OSI规定的X.800

1)安全攻击:

被动攻击:窃听

主动攻击:1,伪装 2,重播 3,消息修改 4,拒绝攻击等

2)安全服务:认证

访问控制

数据保密性:

连接保密性

无连接保密性

选择域保密性

流量保密性

数据完整性

不可否认性

3)安全机制:

加密

数字签名

访问控制

数据完整性

认证交换

流量填充

路由控制

公证

4)密码算法和协议

对称加密:

DES

3DES

AES

Blowfish

Towfish

IDEA

RC6

CST5

特点:

1,加密,解密使用同一口令

2,将明文分割成固定块大小,逐个进行加密

缺点:

1,秘钥过多

2,秘钥传输:

秘钥交换,身份验证,数据完整性

公钥加密

常用算法:RSA,DSA,EIGAMAL

秘钥:public key ,secret key

p/s

单项加密:

定长输出:无论你输入的数据是多长,输出的结果都是一样长度

雪崩效应:输入的数据有一点点不同,结果会有巨大不同,主要目的在防暴力                                                                   破解

MD5:message digest,输出结果固定长度128bit

SHA1:secure hash algorithm安全的哈希算法,输出结果固定长度160bit

单向加密就是去计算一段数据的特征值,加密过程是不可逆的,是去计算一段数据的特征码,是独一无二的,用于对数据完整性的校验,无论你输入的数据是多长,输出的结果都是一样长度。

2,加密解密的过程

假设还是小黑和小白通信,双方都希望在数据的发送过程中,既能实现用户身份验证,

又能实现数据加密,还能实现数据的完整性,那该怎么办呢?

现在小黑在发送数据前,先将数据用单向加密,计算出特征值,然后再用私钥解密将特征值加密

接下来会再用产生一个一次性的密码,用小白的公钥将这个密码加密然后放在数据后,最后再用对称加密

将全部加密,这时就是密文了,到了小白那里以后,小白先用自己的私钥拿到那个密码,然后再用那个

密码解密,获得数据的特征值,然后再用单向解密计算出一个特征值,如果这两个值相同,则说明

数据完好,以上过程就实现了三重验证

以下是图解过程

3,CA

CA标准X.509又:

版本号

证书序列号

算法参数

发行者名称

有效期限

主体名称

公钥信息

发行者ID

主体ID

扩展

CA签名

CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。在SET交易中,CA不仅对持卡人、商户发放证书,还要对获款的银行、网关发放证书。

CA是证书的签发机构,它是PKI的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。

CA 也拥有一个证书(内含公钥)和私钥。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。

如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。

验证过程:用 对应小黑CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的,然后解密出一段特征码;小白在用单项加密计算小黑的证书特征码;两个特征码一致,证书是完好无缺的;然后再去验证该证书是不是小黑的,如果验证通过了,才确认是小黑的证书;然后再去看该证书是不是在有效期和吊销列表内。

4,ssl

SSL介于应用层和TCP层之间,应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。还有一种是应用层数据直接传递给传输层,不走SSL层。

如图:

Https通信

HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行三次握手,在握手过程中将确立双方加密传输数据的密码信息。

    1. 客户端发起HTTPS请求

      用户在浏览器里输入一个https网址,然后连接到server的某一端口。

  2. 服务端的配置

  这套证书其实就是一对公钥和私钥。如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

  3. 传送证书

  这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。(详情请往上看3,CA。)

  4. 客户端解析证书

  这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

  5. 传送加密信息

  这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  6. 服务段解密信息

  服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

  7. 传输加密后的信息

  这部分信息是服务段用私钥加密后的信息,可以在客户端被还原

  8. 客户端解密信息

  客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。

加密解密过程,布布扣,bubuko.com

时间: 2024-12-25 19:40:45

加密解密过程的相关文章

加密 解密过程详解及openssl自建CA  

            加密 解密过程详解及openssl自建CA 为了数据信息能够安全的传输要求数据要有一定的安全性那么数据的安全性包含哪些方面的特性呢?    NIST(美国信息安全署)做了如下的定义:    保密性:       1,数据的保密性 指的是数据或隐私不向非授权者泄漏                   2,隐私性  信息不被随意的收集    完整性:       1,数据的的完整性:信息或程序只能被指定或授权的方式改变不能被随意的             修改        

ASP.NET中的DEC加密解密过程

本文章分享自 青青果树园的博客,地址是:http://www.cnblogs.com/qqingmu/archive/2008/01/10/1034168.html 我们做网页时经常会遇到URL传输(表单提交)参数加密.例如:要进行一个用户帐号编辑,要传递用户的ID,URL如下:http://localhost/mysystem/editAccounts.aspx?ID=2但又不想让别人知道这个用户的ID为2,恶意的使用者可能还会将2修改,改为别的用户ID.加密传递的参数值可以解决问题.1.以下

golang实现aes-cbc-256加密解密过程记录

我为什么吃撑了要实现go的aes-cbc-256加密解密功能? 之前的项目是用php实现的,现在准备用go重构,需要用到这个功能,这么常用的功能上网一搜一大把现成例子,于是基于go现有api分分钟实现一对加密解密函数,你想得没错,一跑就失败,好了不废话了,go的aes-cbc实现由两个限制 1:面临两个问题 1:go秘钥长度必须是16/24/32 go源码如下,我们的秘钥长度是29,不符合啊 // NewCipher creates and returns a new cipher.Block.

https加密解密过程详解

在日常互联网浏览网页时,我们接触到的大多都是 HTTP 协议,这种协议是未加密,即明文的.这使得 HTTP 协议在传输隐私数据时非常不安全.因此,用于对 HTTP 协议传输进行数据加密,即 HTTPS . 那么我们再访问https网站时,大家知道https是安全数据加密传输,但是如果让大家仔细描述从访问打开一个网站.到数据整个加解密的流程,估计有很多朋友(可能哈)很难清晰的表达出来吧. 包括我自己描述的也会模拟两可.在此非常有必要详解下整个流程. 要点: https协议对传输内容进行加密,具有更

PKI 加密 解密过程

第一种是签名,使用私钥加密,公钥解密 第二种是加密,用公钥加密,私钥解密 如果A想给B发一个安全的保密的数据,那么应该AB各自有一个私钥,A先用B的公钥加密这段数据,再用自己的私钥加密这段加密后的数据.最后再发给B,这样确保了内容即不会被读取,也不会被篡改. 1. A用B的公钥加密数据  --加密2. A用自己的私钥加密这段加密后的数据  --签名3. B用A的公钥解密  --验证签名4. B用自己的私钥解密数据  --解密

C#对字符串的简单加密解密过程C#的SQL数据库登陆密码的加密解密加密还原直接复制代码使用即可

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; using System.IO; namespace PDAPrint { class ClassSecurityString { public static string encryptKey = "www.hanma-scan.com"; /

RSA加密算法加密与解密过程解析

1.加密算法概述 加密算法根据内容是否可以还原分为 可逆加密和非可逆加密 . 可逆加密根据其加密解密是否使用的同一个密钥而可以分为 对称加密和非对称加密. 所谓对称加密即是指在加密和解密时使用的是同一个密钥:举个简单的例子,对一个字符串C做简单的加密处理,对于每个字符都和A做异或,形成密文S.解密的时候再用密文S和密钥A做异或,还原为原来的字符串C.这种加密方式有一个很大的缺点就是不安全,因为一旦加密用的密钥泄露了之后,就可以用这个密钥破解其他所有的密文. 非对称加密在加密和解密过程中使用不同的

des加密解密——java加密,php解密

最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混杂,好不容易测试在php这边测试加密和解密成功了.为确保安卓app端提交过来的加密参数能够解密出来,给定安卓人员一个字符串,让他们把des加密后的字符串给我,在php这边解密.结果一看,加密出来的字符串跟我这边加密出来的结果不一致,自然是解密不出来. 要来java的des算法代码,研究加密的过程,其

使用X.509数字证书加密解密实务(二)-- 使用RSA证书加密敏感数据

一.  使用RSA证书加.解密敏感数据 X.509证书标准支持三种不对称加密算法:RSA, DSA, Diffie-Hellman algorithms.最常用的是RSA算法.所以本文就以前面章节使用makecert工具生成的生成的MyTestCert证书进行加密解密,这个证书具有RSA算法1024位的密钥对. Figure 12. RSA加密解密过程 1. 生成证书.分发证书 证书使用前面“使用makecert工具获得”章节生成的MyTestCert,当然也可以是从商业CA获得的证书. 你获得