加密解密技术基础,pki以及自建私有CA

网络安全议题,几乎是业内人士避不开的话题,要做到网络安全,主要旨在三个方面的目标:保密性,完整性和可用性。本文在此主要对基础的加密和解密技术,ssl协议,以及ssl协议的实现实例做一些简要描述和梳理。

加密和解密:

目前对于网络安全的攻击,很大部分集中在“威胁保密性的攻击”,也就是我们进场所说的数据泄露,加密和解密是目前最为直观的解决保密性问题的手段。

几种加密方式:

  • 对称加密;

特点:加密和解密使用同一个密钥;将数据分割成多个固定大小的块,逐个加密;

缺点:密钥过多(对于服务器端,需要与多人通信);密钥分发困难;

算法:DES,3DES,AES等;

  • 非对称加密;

特点:公钥加密的数据,只能够通过与之配对的私钥才能解密;反之亦然;

私钥:secret key,通过工具创建,使用者自己保存,必须要保证私密性;

公钥:pubkey,从私钥中提取而来,可以公开给所有人;

用途:数字签名;密钥交换;数据加密(非对称加密效率低,一般不用作数据加密);

算法:RSA,DSA等;

  • 单向加密:

    用途:提取数据指纹(特征码),验证数据完整性;只能加密,不能解密;

    特点:定长输出,雪崩效应;

    算法:md5,sha{1-6}等;

SSL协议和OPENSSL

secure socket layer,安全的套接字层,位于应用层和传输层之间;SSL协议由网景公司在1994年研发,目前已经发展到3.0版本,其与继任者Transport Layer Security,简称TLS都是为网络通信提供保密性和完整性的安全协议。SSL协议的1.0到3.0版本都被发现安全漏洞,所以SSL目前快要淡出,其继任者TLS快要成为事实上的标准了。

OPENSSL:SSL协议的实现。

  • 在centos 7 的OPENSSL包中,主要包含三个部分:libcrypto,libssl和openssl。前两者主要为开发者使用,我们最常用的还是openssl。
  • SSL handshake protocol:SSL握手的过程;
    • 第一阶段:client hello;C端向S端发送;

      向S端发送自己所支持的协议版本(如tls 1.2),发送一个随机数(用于生成“会话密钥”),支持的加密算法(如AES,RSA等,便于协商生成会话密钥,可以使用相同加密算法),以及支持的压缩算法;

    • 第二阶段:server hello;S端回应;

      确认使用的协议版本;S端生成一个随机数(用作生成会话密钥);确认使用何种加密算法;以及发送服务器证书;(假如S端需要验证C端,会有索要C端证书的信息发送到C端);

    • 第三阶段:C端握手结束;

      验证服务器证书,确认无误后取出公钥(验证发证机构,证书完整性,持有者,有效期,吊销列表等);验证后发送以下信息给S端:一个随机数(用于服务器公钥加密);编码变更通知(表示随后信息会以协商好的加密方法发送);C端握手结束;

    • 第四阶段:S端握手结束;

      S端受到C端发来的第三个随机数pre-master-key后,计算生成本次会话的“会话密钥”,并向C端发送信息如下:编码变更通知(表示随后信息会以协商好的加密方式发送);S端握手结束;

下面是一个简单的加密传输图示:

(图片可查看附件)

OPENSSL相关命令:标准命令,消息摘要命令,加密命令等;

主要介绍标准命令:enc,ca,req,genrsa;

  • 对称加密:openssl enc;

    支持算法:3des,aes,blowfish等;

    例:openssl enc -e -des3 -a -salt -in fstab -out
    fstab.ciphertext;将fstab文件用3des算法加密;

  • 单向加密(数据特征码):openssl dgst,gpg,md5sum等;

    例:openssl dgst -md5 /PATH/TO/SOMEFILE == md5sum /PATH/TO/SOMEFILE;两者算法一致,得到的特征码也是一样的;

    生成用户密码:openssl passwd -1 -salt 12345678;-1表示md5算法,-salt可以指定随机数;

    生成随机数:openssl rand -base64 NUM;NUM表示字节数;-base64表示文本格式;-hex表示格式为16进制;

  • 公钥加密:openssl genrsa
    • 算法:RSA(加密解密,数字签名),DH(经常用作密钥交换),DSA(数字签名);
    • 生成密钥:
      • openssl genrsa 1024;
      • openssl genrsa 1024 > /tmp/mykey2.private 1024;重定向到文件中;
      • openssl genrsa 1024 -out  /tmp/mykey2.private 1024;使用out也可以;
      • 经常用法:(usmak 077;openssl genrsa 1024 -out 
        /PATH/mykey2.private 1024)保证权限为600;
    • 提出公钥:
      • openssl rsa in /PATH/FROM/PRIVATE_KEY -pubout;
  • 系统随机数生成器:
    • /dev/random:仅从熵池返回随机数,随机数用尽,就会发生阻塞;
    • /dev/urandom:从熵池返回随机数,随机数用尽,会利用软件生成伪随机数,不会阻塞;

PKI:Public Key Infrastructure,公钥基础设施;主要包含以下四个部分:

  1. 签证机构:CA;
  2. 注册机构:RA;
  3. 证书吊销列表:CRL;
  4. 证书存取库:

自建私有CA;

  • 工具有openssl和openCA;此处以openssl为例;
  1. 构建私有CA:在确定配置为CA的服务器上生成一个自签证书,并为CA提供所需目录文件即可;

    1. 生成私钥;
  • (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

自签证书:CA需要先给自己签发证书;

  • openssl req -new -x509 -key
    /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem
    -days 3655;;
    如果不是自签证书,不加-x509即可;
    -new:生成新证书签署请求;
    -key:生成请求时用到的私有文件路径;
    -x509:生成自签格式证书,专门用于创建私有CA时使用;
    -out:生成的请求文件路径,如果是自签操作将会直接生成签署证书,没有请求这一步;
    -days:证书的有效时长,默认单位day;
    最后按照提示填好相关信息即可!

为CA提供所需目录及文件;

  • mkdir -pv /etc/pki/CA{certs,crl,newcerts};

  • touch /etc/pki/CA{serial,index.txt};
  • echo
    01 > /etc/pki/CA/serial;

需要用到证书进行安全通信的服务器,需要向CA请求签署证书,步骤如下:

  1. 生成秘钥:

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

生成签署请求:

  • openssl req -new -key http.key -out httpd.csr -days 365;

  • 填写相关信息;
  • 并把生成的httpd.csr发送到之前创建好的Ca主机上;(使用scp等工具)

私有CA签署证书(这一步由请求的CA操作)

  • openssl ca -in /PATH/TO/httpd.csr -out /etc/pki/CA/certs/httpd.crt
    -days 365;

  • 然后再将生成的证书文件发送给请求的服务器主机即可;

查看证书信息:openssl x509 -in http.crt -noout -serial -subject;-subject指看主要部分内容,-serial指查看序列号;

以上。

时间: 2024-10-06 16:21:37

加密解密技术基础,pki以及自建私有CA的相关文章

linux关于加密解密技术基础、KPI及创建私有CA

linux加密和解密技术基础.KPI及创建私有CA 一.加密方式分为:1.对称加密:加密和解密使用同一个密钥:      对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,在对称加密算法中常用的算法有:DES. 3DES.TDEA.AES.    Blowfish.Twofish          IDE.ARC6.CAST5等.    特性:      1.加密.解密使用同一个密钥:      2.强原始数据分割成固定大小的块,逐个进行加密

加密解密技术基础、PKI及创建私有CA

加密解密技术基础.PKI及创建私有CA 一.背景 随着互联网的快速发展,整个互联网中涌入了大量的用户,正所谓林子大了什么鸟都有,随之而来的就是数据的安全性得不到保障:因此就有了对数据的加密及解密. 二.安全的目标 1.目标: 信息加密的目的是为了确保所传输的信息具有保密性,不被其他人所劫持后篡改信息:如果被篡改后接收方也应该能知道,而且也应该确保没被劫持的信息接收方可以读取. 2.数据在网络中传输过程中要保证三个要点: (1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡改. (2)

加密解密技术基础、PKI、及创建私有CA

一.加密解密技术基础 (一) 安全的目标:      1.保密性,confidentiality      2.完整性,integrity         系统完整性,数据完整性      3.可用性,avaliability(二) 攻击类型:     1. 威胁保密性的攻击:窃听.通信量分析     2. 威胁完整性的攻击:更改.伪装.重放.否认     3. 威胁可用性的攻击:拒绝服务(DoS)(三) 解决方案:      技术(加密和解密).服务(用于抵御攻击的服务以及为了实现上述目标而特

加密解密技术基础,PKI以及创建私有CA

加密解密技术基础,PKI以及创建私有CA 加密算法和协议:1.对称加密:加密和解密使用同一个密钥 DES:Data Encryption Standard; 3DES:Triple DES; AES:Advanced Encryption Standard; (128bits, 192bits, 256bits, 384bits) Blowfish Twofish IDEA RC6 CAST5 特性: (1)加密.解密使用同一个密钥: (2)将原始数据分割成为固定大小的块,逐个进行加密: 缺陷:

加密解密技术基础、PKI及创建私有私有CA

Linux基础中的加密.解密及openssl 数据为什么要加密?      由于互联网刚开始时使用的人非常少,在互联网中交流信息的人都比较"单纯"几乎没有安全问题:但随着互联网的快速发展,整个互联网中涌入了大量的用户,正所谓林子大了什么鸟都有,随之而来的就是数据的安全性得不到保障:因此就有了对数据的加密及解密. 安全的目标       信息加密的目的是为了确保所传输的信息具有保密性,不被其他人所劫持后篡改信息:如果被篡改后接收方也应该能知道,而且也应该确保没被劫持的信息接收方可以读取.

加密解密技术基础及PKI

为了保证网络通信安全,就对其数据进行加密和解密,涉及了密钥分发: 网警公司为http协议通信安全研发了一个库,放在应用层和传输层中间,这个库就叫ssl安全的套接字层,ssl是一个库,是公共功能,加密解密也是协议实现的: 只要应用层的程序在研发时加入了调用ssl这个库,在通信时就会自动完成加解密,实现后续网络通信: SSL: Secure Sockets Layer http --> ssl --> https http协议调用ssl后,就变成了https协议,两者实现方式差别很大,但是加密解密

加密解密技术基础以及公钥基础设施(PKI)

网络之间的通信通过传递报文的方式实现,在传递这些报文的过程中,为了保护报文内容不随意被窃取和修改,对报文进行加密就起到了至关重要的作用. 加密和解密:传统加密方法.现代加密方法. 传统加密算法:替换加密算法.置换加密算法. 现代加密方法:现代块加密方法. 加密和解密都依赖于算法的实现,但加密的安全性不能依赖于算法本身,因为算法是公开的,人人都可以知道.所以就需要通过另一种更安全的方式实现对数据报文的封装,这就需要密钥来实现. 密钥算法和协议:对称加密.公钥加密.单向加密.认证协议. 对称加密:加

Linux学习笔记一 加密解密介绍,以及运用Openssl创建私有CA

互联网高速发展的今天,确保通信数据能够在互联网上安全可靠的传输是极为重要的.为此,各种安全算法,协议纷纷诞生.Openssl只是其中之一,Openssl为网络通信提供安全及数据完整性的一种安全协议,包括了主要的密码算法.常用的密钥和证书封装管理功能(CA)以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用 美国NIST给出了数据安全可靠传输的明确标准: 保密性: 数据保密性 隐私性 完整性: 可用性: 加密:使用加密算法对明文加工处理,转换成不可识别的代码信息,确保信息安全. 解密:运用

加密解密技术介绍和OpenSSL介绍

网络上实现安全传输是一件非常必要的事情,此篇博文主要介绍一下四种常见的加密解密技术和PKI机制以及如何通过openssl建立私有CA. 一.加密解密技术 (1)对称加密 主要加密算法: 1.DES:Data Encryption Standard 数据加密标准 加密端:将明文划分为64bits为一块,用密钥加密产生64bits的密文 解密端:还原回64bits密文 加密和解密均使用56bits的密钥 2.3DES:Triple DES:也就是进行三次DES加密 3.AES:Advanced En