第六章 加密与解密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

6.1 什么是加密和解密?

  加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。

6.2 加密技术二元素:算法和密钥

  算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的官方的步骤;

  密钥是用来对数据进行编码和解密的一种算法。


  在安全保密中,可通过适当的密钥加密技术和管理机制来保证网络的信息通信安全,使得未授权的用户即使获得了已加密的信息,但因不知解密方法,仍然无法了解信息内容。

6.3 为什么要加密?

  随着人类社会逐渐步入信息时代,信息安全也越来越受到关注。对计算机而言,信息表现为各种各样的数据,是否采用了适当的方法对数据进行加密,已成为保障数据安全的首要方法。为了保密,一般在网络上传输的重要数据文件都可以对其进行加密,但数据加密也不一定是为了在网络间传输文件,而是为了保证机密文件即使失窃后也不泄漏其中的重要信息。

  随着网络技术的发展,大量的数据需要在网络上传输。在网络上传输的数据存在着不安全的因素而变得危险,而且这种危险是TCP/IP协议所固有的。一些基于TCP/IP的服务(ftp,http,smtp,telnet)都是明文传输的,其机密性无法得到保证。

  数据加密在网络上的作用就是防止重要信息在网络上被拦截和窃取,一个简单的例子就是计算机口令的传输。

  计算机口令极为重要,许多安全防护体系是基于口令的,口令的泄露关系到安全体系的全面崩溃。通过网络进行登录时,所键入的口令以明文的形式被传输到服务器,而网络上的窃听是一件极为容易的事情,所以很有可能被黑客嗅探并窃得用户的口令,如果用户是root用户或administrator用户,那后果是极为严重的。

  解决这个问题的方法就是加密,加密后的口令即使被黑客获得也是不可读的,除非加密密钥或加密方式十分脆弱,很容易被黑客破解。whatever,加密的作用是使黑客不会轻易获得口令。

6.4 加密类型

  加密类型有以下几种:

    对称加密:加密解密使用同一个密钥

      DES:Data Encrption Standard,56bit

      3DES:使用3条56位的密钥对数据进行三次加密

      AES:Advanced Encrption Standard,128bit(默认)

        AES192:192bit

        AES256:256bit

        AES512:512bit

      Blowfish:一个64位分组及可变密钥长度的对称密钥分组密码算法,可用来加密64bit长度的字符串

    公钥加密:也叫非对称加密。有一对密钥,公钥(P)和私钥(S)。

      公钥隐含于私钥中,可以提取出来并公布出去。

      公钥加密算法很少用来加密数据,因为加密速度太慢,比对称加密慢1000倍。常用于做身份验证

      公钥加密能保证机密性和身份验证:

        机密性:发送方用对方的公钥加密

        身份验证:发送方用自己的私钥加密(数字签名)

      公钥加密能实现加密和签名功能:

        RSA:即能实现加密,也能实现签名

        DSA:只能实现签名

        ELGamal:商业加密算法

    单向加密:也叫散列加密,提取数据特征码,能加密不能解密,常用于做数据完整性校验

      MD4,MD5,SHA1,SHA192,SHA256,SHA384,SHA512,CRC-32(循环冗余检验码)

      单向加密的特性:

        a) 雪崩效应(输入的微小改变,将会引起结果的巨大改变)

        b) 定长输出(无论原始数据是多大,结果的长度是相同的)

          MD5:Message Digest,128位定长输出

          SHA1:Secure Hash Algorithm,160位定长输出

        c) 不可逆(无法根据特征码还原成原始数据)

6.5 密钥交换

  协商生成密码的过程叫做密钥交换(Internet Key Exchange,IKE)

  使用的是DH协议(Diffie-Hellman):

    A --> B

      p,g(大素数,生成数),在网络中传输的,公开的

    A:自己取一个随机数x

    B:自己取一个随机数y

    A:g^x%p --> B

    B:g^y%p --> A

    A:(g^y%p)^x=g^yx%p

    B:(g^x%p)^y=g^xy%p

  这最后得出的g^xy%p就是最终的密钥

6.6 PKI

  PKI:Public Key Infrastructure

  PKI的核心就是CA及其信任关系

6.6.1 CA

  CA(Certificate Authority)是数字证书认证中心的简称,是指发放、管理、废除数据证书的机构。

  CA的作用是检查证书持有者身份的合法性,并签发证书(在证书上签字),以防证书被伪造或篡改,以及对证书和密钥进行管理

6.6.2 数字证书

  数字证书实际上是存在于计算机上的一个记录,是由CA签发的一个声明,证明证书主体("证书申请者"拥有了证书后即成为"证书主体")与证书中所包含的公钥的惟一对应关系

  数字证书包含的内容:

    申请者的名称及相关信息

    申请者的地址信息

    申请者的公钥

    签发证书的CA的名称

    签发证书的CA的数字签名(用发证机关的私钥加密的特征码)

    证书有效期

  x509证书的内容:

    公钥及其有效期限

    证书的合法拥有者

    证书该如何被使用

    CA的信息

    CA签名的校验码

  CRL:证书吊销列表。CRL中记录的是已经发出去的、没有过期的但已经被撤销的证书

6.6.3 PKI的实现架构

  TLS/SSL:使用x509证书

  OpenGPG

wKioL1j1_TLTHifMAACMW66w7Wo736.jpg

 SSL:Secure Socket Layer,安全的套接字层。只是一个库,可以将http、smtp、ftp等应用层协议封装成https、smtps、ftps等

  TLS:Transport Layer Security,TLSv1版本相当于SSLv3

  SSL会话过程:

    a) TCP三次握手

    b) 客户端向服务器发起会话请求

    c) 服务器与客户端协商建立SSL会话(协商加密协议:SSLv2、SSLv3、TLS;协商加密算法)

    d) 服务器将自己的证书发给客户端

    e) 客户端验证证书是否是自己所信任的根证书颁发机构所发,证书是否完整

    f) 客户端随机生成一个会话密钥(对称密钥),用服务器的公钥进行加密,传递给服务器端

    g) 服务器端用客户端生成的对称密钥对数据进行加密,传输给客户端

6.6.4 证书申请及签署步骤

  a) 生成申请请求

  b) RA核验

  c) CA签署

  d) 获取证书

6.6.5 吊销证书

  a) 客户端获取要吊销的证书的serial

1
openssl x509 - in  /path/from/cert_file  -noout -serial -subject

  b) CA端先客户端提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致

    吊销证书:

1
openssl ca -revoke  /etc/pki/CA/newcerts/SERIAL .pem

  c) 生成吊销证书的编号(第一次吊销一个证书时)

1
echo  01 >  /etc/pki/CA/crlnumber

  d) 更新证书吊销列表

1
openssl ca -gencrl -out thisca.crl


6.7 openssl

  对称加密的实现工具有openssl和gpg两种

  openssl:OpenSSL是ssl的开源实现,是一个软件,由三部分组成:

    libcrypto:加密库

    libssl:TLS/SSL协议的实现。基于会话的实现了身份认证、数据机密性和会话完整性的TLS/SSL库

    openssl:多用途命令行工具。能够实现单向加密、对称加密、非对称加密、生成一对密钥、私有证书颁发机构等功能

  openssl:

    语法:openssl command [ command_opts ] [ command_args ]

    command:

      enc:加密/解密

        -e:加密

        -d:解密

      dgst:提取文件特征码

      passwd -1:生成密码串

      rand -base64:生成伪随机数

      req:证书注册提交管理

        -new:生成新证书签署请求

        -x509:专用于CA生成自签证书

        -key:生成请求时用到的私钥文件

        -days n:证书的有效期限

        -out /path/to/somecertfile:证书的保存路径

      x509:管理证书

        -in /path/from/cert_file -noout -text|-subject|-serial    #查看证书中的信息

      crl:管理吊销证书列表

        -in /path/from/crl_file.crl -noout -text    #查看crl文件

      ca:管理CA

  openssl实现私有CA:

    CA的配置文件:/etc/pki/tls/openssl.cnf

    a) CA生成一对密钥

1
2
3
cd  /etc/pki/CA 
( umask  077;openssl genrsa -out private /cakey .pem 2048)     #生成密钥,括号必须要
openssl rsa - in  private /cakey .pem -pubout     #提取公钥

    b) CA生成自签署证书

1
2
3
4
openssl req -new -x509 -key private /cakey .pem -out cacert.pem -days 365     #生成自签署证书
openssl x509 -text - in  cacert.pem     #读出cacert.pem证书的内容
mkdir  certs newcerts crl
touch  index.txt &&  echo  01 > serial

    c) 客户端(例如httpd服务器)生成密钥

1
2
cd  /etc/httpd  &&  mkdir  ssl &&  cd  ssl
( umask  077;openssl genrsa -out httpd.key 2048)

    d) 客户端生成证书签署请求

1
openssl req -new -key httpd.key -days 365 -out httpd.csr

    e) 客户端把证书签署请求文件发送给CA

1
scp  httpd.csr root@CA端IP: /root

    f) CA签署客户端提交上来的证书

1
openssl ca - in  /root/httpd .csr -out httpd.crt -days 365

    g) CA把签署好的证书httpd.crt发给客户端

1
scp  httpd.crt root@客户端IP: /etc/httpd/ssl/










本文转自 忘情OK  51CTO博客,原文链接:http://blog.51cto.com/itchentao/1917158,如需转载请自行联系原作者
目录
相关文章
|
存储 数据安全/隐私保护 Windows
通俗易懂的RSA加密解密指导(一)
前言 RSA加密算法是一种非对称加密算法,简单来说,就是加密时使用一个钥匙,解密时使用另一个钥匙。 因为加密的钥匙是公开的,所又称公钥,解密的钥匙是不公开的,所以称为私钥。 图片 密钥 关于RSA加密有很多文章,但几乎都只介绍了RSACryptoServiceProvider类的使用方法,如果只是走走看看,是没问题的,但真的想使用时,就会发现,你没有密钥字符串。。。 下面我们从获取密钥字符串开始逐步学习加密。 密钥字符串 每个安装过VisualStudio的电脑都可以找到一个文件—makecert.exe。 我电脑的makecert.exe地址:
通俗易懂的RSA加密解密指导(一)
|
数据安全/隐私保护
通俗易懂的RSA加密解密指导(二)
前言 RSA加密算法是一种非对称加密算法,简单来说,就是加密时使用一个钥匙,解密时使用另一个钥匙。 因为加密的钥匙是公开的,所又称公钥,解密的钥匙是不公开的,所以称为私钥。 图片 密钥 关于RSA加密有很多文章,但几乎都只介绍了RSACryptoServiceProvider类的使用方法,如果只是走走看看,是没问题的,但真的想使用时,就会发现,你没有密钥字符串。。。 下面我们从获取密钥字符串开始逐步学习加密。 密钥字符串 每个安装过VisualStudio的电脑都可以找到一个文件—makecert.exe。 我电脑的makecert.exe地址:
通俗易懂的RSA加密解密指导(二)
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂白盒AES(Chow方案)(二)
本文主要参考了文献^[1], 代码参考了^[2], 这里感谢文献作者和代码作者,如果有能力的大佬,可以自行查看原文献,个人水平有限,有哪里写的不对的地方,也欢迎读者指正。
1738 0
【密码学】一文读懂白盒AES(Chow方案)(二)
|
存储 算法 数据安全/隐私保护
【密码学】一文读懂白盒AES(Chow方案)(一)
本文主要参考了文献^[1], 代码参考了^[2], 这里感谢文献作者和代码作者,如果有能力的大佬,可以自行查看原文献,个人水平有限,有哪里写的不对的地方,也欢迎读者指正。
3930 0
【密码学】一文读懂白盒AES(Chow方案)(一)
|
安全 算法 Java
Paillier半同态加密:原理、高效实现方法和应用
《数据安全法》已于9月1日起正式实施,两个月后《个人信息保护法》也将开始施行,意味着数据安全和隐私保护方面的监管将会在年内陆续到位。在合规收紧大背景下,“数据孤岛”现象日渐明显。如何实现安全的数据流通,保护数据隐私并发挥数据的价值,支持多方的联合计算,是各大数据平台亟需解决的问题。
Paillier半同态加密:原理、高效实现方法和应用
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂XTEA加密
本篇文章,我们来看一下上一次讲过的TEA加密算法的一个升级版XTEA, 相比于TEA, XTEA的安全性显然是更高的,其中的过程要比TEA稍微复杂一点点。
1326 0
【密码学】一文读懂XTEA加密
|
安全 算法 Java
《Java编码指南:编写安全可靠程序的75条建议》—— 指南12:不要使用不安全的弱加密算法
安全敏感的应用程序必须避免使用不安全的弱加密方式。现代计算机的计算能力允许通过蛮干攻击破解这样的加密。例如,数据加密标准(Data Encryption Standard,DES)加密算法被认为是很不安全的;使用DES加密的消息,能够在一天之内被机器(如Electronic Frontier Foundation——简称EFF——的Deep Crack)蛮干攻击破解。
3239 0
|
10月前
|
前端开发 JavaScript 安全
前端JS加密对抗由浅入深-1
本文主要讲解,针对前端加密数据传输站点,如何进行动态调试以获取加密算法、秘钥,本次实验不涉及漏洞挖掘,仅为学习演示,环境为本地搭建环境
|
10月前
|
前端开发 JavaScript 安全
前端JS加密对抗由浅入深-2
前言: 本文主要讲解,针对前端非对称、多段加密数据传输站点,如何进行动态调试,如何进行安全测试。本次讲解不涉及任何漏洞方面,仅为学习探讨,该站点现已经更改加密方式,严禁非法测试!
|
算法 安全 数据安全/隐私保护
XTEA加密算法实现过程
XTEA加密算法实现过程
177 0

热门文章

最新文章