安全和加密與創建簽名證書

安全和加密:
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.www58058.com/73199

(0)
sheweishewei
上一篇 2017-04-11
下一篇 2017-04-11

相關推薦

  • linux時間

    linux有兩個時間:     系統時間和硬件時間 系統時間: 最簡單的使用date命令顯示當前系統的時間,命令行輸入date。 # date Thu Jun  2 17:11:48 CST 2016 date的具體使用方式:     1. date格式顯示:date …

    Linux干貨 2016-06-03
  • LVS之nat&dr

    Evernote Export 負載均衡集群設計時的要點:        (1)session保持            session sticky(ip hash)            sess…

    Linux干貨 2016-12-01
  • N25_第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@test ~]# who root     tty1         2016-12-03&nb…

    Linux干貨 2016-12-16
  • 包管理一:配置本地ISO的yum源

    故事背景:網上找了一個軟件,但是這個軟件需要依賴光盤上面的基礎包,但是這個服務器又不能上網,怎么辦? 方法:這里推薦配置本地ISO的yum源,然后yum localinstall xxx.rpm 1、yum的配置文件說明 配置文件: /etc/yum.conf:為所有倉庫提供公共配置 /etc/yum.repos.d/*.repo:為倉庫的指向提供配置 倉庫…

    Linux干貨 2016-01-05
  • Android必備的Java知識點

     Android應用程序開發是以Java語言為基礎的,所以需要有扎實的Java基礎知識。首先熟悉java基本語法,然后熟悉設計模式等。         a) Java基礎語法:看下面的《Java知識點列表》       b)設計模式:由于在Android系統的框架層當中,使用了大…

    Linux干貨 2015-04-08
  • 磁盤分區管理

    進行磁盤分區之前首先要了解什么是磁盤分區:         磁盤分區是在磁盤上劃分幾個邏輯部分,盤片一旦劃分成數個分區,不同類的目錄與文件可以存儲進不同的分區。越多分區,也就有更多不同的地方,可以將文件的性質區分得更細,按照更為細分的性質,存儲在不同的地方以管理文件;但太多分區就…

    2017-08-21
欧美性久久久久