openssl详解


Linux Services and Security

 OpenSSL
 OpenSSH
 dns:bind
 web:http,httpd(apache),php,mariadb(mysql)
  lamp
  nginx(tengine),lnmp
 file server: ftp,nfs,samba
 dhcp,pxe
 iptables


 

OpenSSL
    
    NIST
    保密性:数据保密性;隐私性
    完整性:数据完整性;系统完整性
    可用性

    安全攻击:
    被动攻击:窃听
    主动攻击:伪装、重放、消息篡改、拒绝服务


    安全机制:
    加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制

    安全服务:
    认证
    访问控制
    数据保密性
      连接保密性
      无连接保密性
      选择域保密性
      流量保密性
    数据完整性
    不可否认性

    密码算法和协议
      对称加密
      公钥加密(非对称加密)
      单向加密
      认证协议
      
    Linux系统:Openssl ,gpg(pgp)
    
   加密算法和协议:
     对称加密:加密解密使用同一个秘钥
        DES:Data Encrytion Standard,56位秘钥。但是在2003年被攻破
        3DES:
        AES:Advanced Encryption Standard(128bits,192bits,258,384,512bits)
        Blowfish
        Twofish
        IDEA
        RC6
        CAST5
    现在常用的3DES AES
    特性:
    1加密解密使用同一个秘钥
    2将原始数据分割成固定大小的块,逐个进行加密
    缺陷:
    1秘钥过多
    2秘钥分发
    
  公钥加密:秘钥是成对出现
    公钥:公开给所有人pubkey
    私钥:自己留存,必须保证私密性secret key
    特点:用公钥加密的数据,只能使用与之配对的私钥解密      

    数字签名:主要在于让接受方确认发送方身份  DSA  RSA
    秘钥交换 发送方用对方的公钥加密一个对称秘钥,并发送给对方
    数据加密 RSA 但是极少有人用来数据加密,速度太慢

    算法:RSA,DSA,ELGAMAL
    
  单向加密:只能加密,不能解密;提供数据指纹
     特性:定长输出、雪崩效应;
     算法:
    md5 128bits
    sha1 160bits
    sha224
    sha256
    sha384
    sha512
    功能:完整性

    秘钥交换:IKE
     公钥加密
     DH (Deffie-Hallman)    (眉眼算法)
       A:p, g
       B:p, g


      A:x
        -->p^x%g 给B
      B:y
        -->p^y%g 给A
    
       A:   p^y%g^x=p^xy%g    
       B:    p^x%g^y=p^xy%g   
    所以公共部分就是秘钥
               
    PKI:public key infrastructure
    签证机构CA
    注册机构RA
    证书吊销列表CRL
    证书存取库

    X.509 定义了证书的结构以及认证协议标准
    版本号
    序列号
    签名算法ID
    发行者名称
    有效期限
    主体名称
    主体公钥
    发行者唯一标识
    主体的唯一标识
    扩展
    发行者签名
    
SSL:Secure Socket Layer
 安全套接字层
TSL: transport layer security
1.2用的最多目前,传输层安全
    1995:SSL2.0  Netscape
    1996: SSL3.0  
    1999: TLS1.0(传输层安全)
    2006:TLS1.1 RFC4346
    2008:TLS1.2 用得比较多
    2015: TLS1.3 
    
     
    分层设计:
        1最底层:基础算法原语的实现:aes,rsa,md5
        2向上一层:各种算法的实现
            aes-128-cbc-pkcs7
        3再向上一层:组合算法实现的半成品
        4用各种组件拼装而成的各种成品密码学协议/软件:tls,ssh

OpenSSL开源项目
    三个组件
    openssl 多用途的命令行工具
    libcrypto:公共加密库
    libssl库,实现了ssl和tls
    


    openssl命令
    openssl version  显示版本号
    
    标准命令、消息摘要命令、加密命令

    标准命令
      enc,ca,req...
    
    对称加密:
      工具:openssl enc  ,gpg
      算法:3des,aes,blowfish,twofish
      
        enc命令
    eg:  openssl  enc  -e  -des3  -a  -salt -in  fstab  -out  fstab.ciphertext
        加密
         openssl  enc  -d  -des3  -a  -salt -in   fstab.ciphertext -out fstab
        输入密码  解密

        -a 基于本文 -salt  加入杂质  -e 加密  -d 解密

       其中 -des3 可以换为   openssl ? 中的那些加密方法

    实现单向加密:
     工具:md5sum  ,sha1sum  ,sha224sum , sha256sum  ..., openssl dgst

    dgst用法
    openssl dgst -md5 /path/to/somefile


   MAC: message authentication code  单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性

    机制:
    CBC-MAC
    HMAC:使用md5或sha1算法

生成用户密码:
    passwd
    openssl passwd -1 -salt 12345678  -1(数字1表示md5)

生成随机数:
    openssl  rand -base64  4 
    openssl  rand  -hex 4     字符数为num*2  4*2=8
        其中的4表示四个字节,不是长度
公钥加密
    加密:
    算法:RSA  ELGamal
    工具:gpg,openssl rsatul 
    数字签名
    算法: RSA,DSAT ELGamal
    
    秘钥交换
    算法:dh
    
    DSA:Digital Signature Algorithm
    DSS: Digital Signature Standard
    RSA:


    生成秘钥对儿:
    openssl  genrsa -out  rsakey.private  2048   
    生成了2048位的私钥,
    公钥可以从私钥中获取
    openssl  rsa -in rsakey.private -pubout 
    还要把权限去掉
    chmod og=  rsakey.private    og表示没有任何权限
    (umask 077;openssl  genrsa -out key.pri 2048)

    随机数生成器:
       熵池
    
    /dev/random  仅从熵池返回随机数;随机数用尽,会发生阻塞
    /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数。

你可能感兴趣的:(Linux进阶)