安全和加密与创建签名证书

安全和加密:
NIST定义的安全属性:(美国国家标准与技术研究院)
保密性:
        数据保密性
        隐私性
完整性:不可篡改
        数据完整性
        系统完整性
高可用性: 五个9

安全攻击:STRIDE
Spoofing(假冒)     Tampering (篡改)        Repudiation (否认)
Information Disclosure (信息泄漏)   Denial of Service(拒绝服务)
Elevation of Privilege (提升权限 )

安全机制:
       加密,数字签名,访问控制,数据完整性
       认证交换,流量填充,路由控制,公证
安全服务:
        认证
        访问控制
        数据保密性
              连接保密性
              无连接保密性    UDP协议
              选择域保密性
              流量保密性
        数据完整性
        不可否认性
常用安全技术:
        认证
        授权
        安全通信
        审计
密码算法和协议:
        对称加密
        公钥加密
        单向加密
        认证协议

对称加密:加密和解密使用同一个密钥 (AES加密算法)
特性:
      1 、加密、解密使用同一个密钥,效率高
      2 、将原始数据分割成固定大小的块,逐个进行加密
缺陷:
      1、密钥过多
      2、密钥分发
      3、数据来源无法确认

非对称加密:
公钥加密:密钥是成对出现
  公钥:公开给所有人;               public key
  私钥:自己留存,必须保证其私密性; secret key
  特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
  功能:
      数字签名:主要在于让接收方确认发送方身份
      对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给
  对方
      数据加密:适合加密较小数据
      缺点:密钥长,加密解密效率低下
  算法:
      RSA (加密,数字签名),DSA (数字签名),ELGamal

实现加密:
    •  接收者
          生成公钥/ 密钥对:P 和S
          公开公钥P ,保密密钥S
    •  发送者
          使用接收者的公钥来加密消息M
          将P(M) 发送给接收者
    •  接收者
          使用密钥S来解密:M=S(P(M))
    注意:使用对称加密文件,非对称加密公钥私钥
          因为非对称加密耗时很长,公钥和私钥非常小容易解密

实现数字签名:
    •  发送者
          生成公钥/ 密钥对:P 和S
          公开公钥P,保密密钥S
          使用密钥S 来加密消息M
          发送给接收者S(M)
    •  接收者
          使用发送者的公钥来解密M=P(S(M))
          结合签名和加密 
          分离签名

单向散列:
     任意数据缩小成固定大小的“指纹”
•  任意长度输入
•  固定长度输出
•  若修改数据,指纹也会改变(“不会产生冲突”)
•  无法从指纹中重新生成数据(“单向”)
   功能:数据完整性
     常见算式
         md5: 128bits 、sha1: 160bits 、sha224、sha256 、sha384 、sha512
      常用工具
          • md5sum | sha1sum [ –check ] file     #检查是否改变
          • openssl 、gpg
          • rpm -V              #校验         

PKI: Public Key Infrastructure   公共的秘钥加密体系
        签证机构:CA (Certificate Authority) 证书颁发机构CA
        注册机构:RA           #申请注册机构RA
        证书吊销列表:CRL      #吊销列表后缀.crl
        证书存取库             #证书的后缀.cer
X.509 :定义了证书的结构以及认证协议标准
        版本号
        序列号
        签名算法
        颁发者               #CA的名字
        有效期限
        主体名称             #用户名字
        主体公钥
        CRL 分发点
        扩展信息
        发行者签名       

证书类型:      
        证书授权机构的证书
        服务器
        用户证书
获取证书两种方法:
    •  使用证书授权机构
          生成签名请求 csr  文件的后缀
          将 csr 发送给CA
          从 CA  处接收签名
    •  自签名的证书
          自已签发自己的公钥     #CA给自己签名颁发证书

安全协议:SSL 和 TLS(这是升级版)               #当前使用TLS1.2版本
          功能:机密性,认证,完整性,重放保护
两阶段协议;
           握手阶段(协商阶段)
           应用阶段

OpenSSL :开源项目
三个组件:
        openssl  :  多用途的命令行工具
        libcrypto:  加密算法库,包openssl-libs提供
        libssl   : 加密模块应用库,实现了ssl 及tls
openssl 命令:
        两种运行模式:交互模式和批处理模式
        openssl version :程序版本号
        标准命令、消息摘要命令、加密命令
        标准命令:
              enc, ca, req, …
对称加密:
        工具:openssl enc, gpg
        算法:3des, aes, blowfish, twofish
enc 命令:man enc      # 对称加密
加密:
openssl enc -e    -des3   -a -salt -in testfile -out testfile.cipher
          加密   加密算法  加盐    加密的文件      加密后输出的文件
解密:
openssl enc -d    -des3   -a -salt –in testfile.cipher -out testfile

单向加密:
    工具:md5sum, sha1sum, sha224sum,sha256sum…  openssl dgst
dgst 命令:man dgst       #hash运算
      openssl dgst -md5 [-hex 默认] /PATH/SOMEFILE
      openssl dgst -md5 testfile
      md5sum /PATH/TO/SOMEFILE
MAC: Message Authentication Code ,单向加密的一种延伸应用,
        用于实现网络通信中保证所传输数据的完整性机制
        CBC-MAC
        HMAC :使用md5 或sha1

生成用户密码:
      passwd 命令:man sslpasswd
            openssl passwd -1 -salt SALT( 最多8 位)     #-1就是md5
            openssl passwd -1 –salt centos
      生成随机数:man sslrand
            openssl rand -base64|-hex NUM
      NUM: 表示字节数;-hex 时,每个字符4位,出现的字符数为NUM*2

公钥加密:
      算法:RSA, ELGamal
      工具:gpg, openssl rsautl (man rsautl) )
  数字签名:
      算法:RSA, DSA, ELGamal
  密钥交换:
      算法:dh
      DSA : Digital Signature Algorithm
      DSS :Digital Signature Standard
      RSA :

生成密钥对儿:man genrsa            #rsa算法
 生成私钥:                      #每次执行生成的私钥都不相同
        openssl  genrsa -out  /PATH/TO/PRIVATEKEY.FILE NUM_BITS
                                                      指定多少字节2048
        (umask 077; openssl genrsa -out key.pri –des 2048)
  从私钥中提取出公钥:   #公钥不能提取私钥
         openssl rsa -in  PRIVATEKEYFILE  –pubout –out  PUBLICKEYFILE
                             私钥                         指定公钥名字
  随机数生成器:伪随机数字          #尽量去客户端生成,不要在ssh生成
          键盘和鼠标
          块设备中断
      /dev/random :仅从熵池返回随机数;随机数用尽,阻塞
      /dev/urandom :从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,

搭建CA:
1.服务器:建立CA
2.客户端(比如websrv):生成申请csr
3.申请csr发送到CA
4.CA:审核,批准,  生成crt|cer后缀的文件
5.发送到客户端
6.应用配置 https
    PKI :Public Key Infrastructure
            CA
            RA
            CRL
            证书存取库
    建立私有CA:
            OpenCA
            openssl
     证书申请及签署步骤:
               1 、生成申请请求
               2 、RA 核验
               3 、CA 签署
               4 、获取证书

vim /etc/pki/tls/openssl.cnf
dir             = /etc/pki/CA           # Where everything is kept
                                              CA的根目录
certs           = $dir/certs            # Where the issued certs are kept
证书文件                                      颁发证书的目录,需要手动更新
database        = $dir/index.txt        # database index file.
                                           数据库文件,数据会自动生成
serial          = $dir/serial           # The current serial number
                                    下一个证书编号从几开始,需要手动指定
certificate     = $dir/cacert.pem       # The CA certificate
                                              CA自己的证书签名路径
 注意:index.txt文件和serial文件需要手动创建,否则后面会报错

搭建CA和申请证书:
    创建私有CA:
            openssl 的配置文件:/etc/pki/tls/openssl.cnf
    三种策略 : 匹配、支持和可选
                匹配指要求申请填写的信息跟CA 设置 信息必须一致,支持
                指必须填写这项申请信息, 可选指可有可无
1 、创建所需要的文件
      touch /etc/pki/CA/index.txt  生成证书索引数据库文件
      echo 01 > /etc/pki/CA/serial  指定第一个颁发证书的序列号
2、 CA 自签证书
       生成私钥 :  cd /etc/pki/CA/
(umask 066; openssl genrsa -out  /etc/pki/CA/private/cakey.pem 2048)
3.生成自签名证书
openssl req -new -x509 –key
/etc/pki/CA/private/cakey.pem -days 7300 -out  /etc/pki/CA/cacert.pem
      -new:  生成新证书签署请求
      -x509:  专用于CA 生成自签证书
      -key:  生成请求时用到的私钥文件
      -days n :证书的有效期限
      -out / PATH/TO/SOMECERTFILE :  证书的保存路径
    颁发证书
    • A  在需要使用证书的主机生成证书请求
          给web 服务器生成私钥
  (umask 066; openssl genrsa -out /etc/pki/tls/private/app.key 2048)
          生成证书申请文件
 openssl req -new -key /etc/pki/CA/app.key -out etc/pki/CA/test.csr
   • B  将证书请求文件传输给CA
          scp test.csr 172.18.12.11:/root
   • C CA 签署证书,并将证书颁发给请求者
openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 365
    注意:默认国家,省,公司名称三项必须和CA 一致
    签名完成后sz导入到电脑使用
   
4 、吊销证书
    • A  在客户端获取要吊销的证书的serial
    openssl x509 -in / PATH/FROM/CERT_FILE -noout -serial -subject
    • B  在CA 上,根据客户提交的serial 与subject 信息,对比检验是
          否与index.txt 文件中的信息一致,吊销证书:
openssl ca -revoke /etc/pki/CA/newcerts/ SERIAL .pem
    • C  指定第一个吊销 证书的编号
注意:第一次更新证书吊销列表前,才需要执行
     echo 01 > /etc/pki/CA/crlnumber
  D  更新证书吊销列表
   openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem
   查看crl 文件:

   openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text

文件完整性的两种实施方式:
  被安装的文件
• MD5 单向散列
• rpm -v  package
  发行的软件包文件
• GPG 公钥签名
• rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*    #导入公钥
• rpm –checksig pakage_file_name (or -K)              #检查签名

使用gpg 实现对称加密:
    对称加密file 文件
        gpg -c file
        ls file.gpg
    在另一台主机上解密file
        gpg -o file -d file.gpg         #-o 指定解密后文件名字

使用gpg 工具实现公钥加密                #尽量在本机执行
在hostB 主机上用公钥加密,在hostA 主机上解密
   在hostA 主机上生成公钥/ 私钥对
        gpg –gen-key
   在hostA 主机上查看公钥
        gpg –list-keys
   在hostA 主机上导出公钥到wang.pubkey
        gpg -a –export -o wang.pubkey
  从hostA 主机上复制公钥文件到需加密的B 主机上
       scp wang.pubkey hostB:

在需加密数据的hostB 主机上生成公钥/ 私钥对
        gpg –list-keys
        gpg –gen-key
  在hostB 主机上导入公钥
        gpg –import wang.pubkey
        gpg –list-keys
  用从hostA 主机导入的公钥,加密hostB 主机的文件file, 生成file.gpg
        gpg -e -r wangxiaochun file                #后缀自动生成
        file file.gpg
  复制加密文件到hostA 主机
        scp fstab.gpg hostA:
  在hostA 主机解密文件
        gpg -d file.gpg
        gpg -o file -d file.gpg
  删除公钥和私钥
        gpg –delete-keys wangxiaochun
        gpg –delete-secret-keys wangxiaochun

原创文章,作者:shewei,如若转载,请注明出处:http://www.178linux.com/73199

(0)
上一篇 2017-04-11 16:52
下一篇 2017-04-11 19:21

相关推荐

  • 文件查找:locate/find

    文件查找就是在文件系统上查找符合条件的文件,工具名分别为:locate和find locate是非实时查找或数据库查找的工具;而find则是实时查找工具。 locate locate依赖于事先构建的索引。索引的构建是在系统较为空闲时自动进行(即为周期性任务),也可以手动更新数据库(updatedb) 注意:索引构建过程需要遍历整个根文件系统,极其消耗资源。 …

    Linux干货 2016-03-12
  • 04用户和组的相关配置文件总结

    1、用户 个人理解的是,给使用者一个在系统中使用的身份,即用户。 用户分两种:管理员和普通用户。 而每一个用户都有一些属性,每一个属性都是用冒号分割开来。配置文件存储在【/etc/passwd】中。 例如,sarash:x:507:508::/home/sarash:/bin/nologin 他们分别是,用户名,密码,ID号,主组ID号,注释,家目录,默认登…

    Linux干货 2016-10-24
  • 马哥教育网络班19期第七周课程练习

    第七周作业 1.创建一个10G分区,并格式化为ext4文件系统:   (1)要求甘block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl;   (2)挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@nginx ~]# fdisk /dev/sdd D…

    Linux干货 2016-06-23
  • 初学Linux之文本处理工具和正则表达

    1、各种文本工具来查看、分析、统计文本 
    2、grep 
    3、正则表达式和扩展正则表达式 
    4、egrep

    2017-12-09
  • Python函数式编程指南(四):生成器

    生成器是迭代器,同时也并不仅仅是迭代器,不过迭代器之外的用途实在是不多,所以我们可以大声地说:生成器提供了非常方便的自定义迭代器的途径。 这是函数式编程指南的最后一篇,似乎拖了一个星期才写好,嗯…… 转载请注明原作者和原文地址:) 4. 生成器(generator) 4.1. 生成器简介 首先请确信,生成器就是一种迭代器。生成器拥有next方法并且行为与迭代…

    Linux干货 2015-03-11
  • Linux程序包编译安装

    程序包编译安装:      Application-VERSION-release.src.rpm–> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装      源代码–>预处理–>编译–>汇编–>链接–>执行      源代码…

    2017-04-25