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:從熵池返回隨機數;隨機數用盡,會利用軟件生成僞隨機數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章