2,167 瀏覽數

PKI

PKI(Public Key Infrastructure)
PKI 是一種新的安全技術,它由公開密鑰密碼技術,數位證書,證書發放機構 (CA:Certification Authority) 和公開密鑰的安全策略等基本成分共同組成的.我們先對密鑰密碼技術,數位證書,證書發放機構 (CA) 等來說明.

Random Number

為了產生 Key 系統必須要能隨機的產生亂碼,才能讓每次產生的 Key 值皆不同, Linux 會依據當時 mouse 的移動 keyboard 鍵值 disk I/O 運作,來決定 Random Number,而這值會存放在 /dev/random 或 /dev/urandom.

One Way Hashes

One Way Hashes 主要會產生一組固定長度字串(fingerprint or message digests),這組字串用來比對原資料是否遭到修改,它的特性如下

  1. 原資料輸入長度為可變
  2. 輸出的 fingerprint 為固定長度
  3. 當資料任何 byte 改變時, fingerprint 也會變的完全不同
  4. 我們無法依據 fingerprint 來回推成原資料,這也是為什麼稱為 One Way hash(單方向的資料運算,函數多對一的特性)

既然無法回推成原資料,那怎知資料是否正確, One Way hash 會再將資料再做一次 One Way hash 然後直接比對 fingerprint 是否一樣. md2, md5, mdc2, rmd160, sha, sha1, haval, crc-32 皆是採用 One Way hash

Linux 提供 passwd (md5),md5sum [ –check] , openssl , gpg , tripwire ,rpm -V 等工具來產生 fingerprint

Symmetric Algorithms (對稱式)

所謂的對稱式加密就是加密以及解密都是使用同一支鑰匙 (single Key),其中最典型的為 DES (Data Encryption Standard) 演算法.它使用的祕鑰長度為 56 bits (但每 8 bits 加上一個奇同位檢查,最後會形成 64 bits 的祕鑰),但這種方式鑰匙必須妥善保存,鑰匙的傳送無法透過網路,因為很容易遭有心人的擷取 DES, 3DES, Blowfish, RC2, RC4, RC5, IDEA, CAST5 皆是採用對稱式加密來運作

Linux 提供 gpg (3DES,CAST5,Blowfish),openssl 等工具來產生鑰匙(single Key)

Asymmetric (Public Key) Algorithms (非對稱式)或稱公鑰密碼演算法

非對偁式加密會使用兩把公與私鑰 (Public/Private Key), public key 會當成加密用, Private key 就會當解密用. RSA(以 RSA 的創始人Rivest,Shamir,Adelman 為命名 ),就是用 Asymmetric Encryption (非對稱式),RSA 既能用加密 (Asymmetric Encryption I )又能用在數位簽名 (Asymmetric Encryption II ),是目前提出的公鑰演算法中最容易理解和實現的.它的運作方式可分為下面幾種:

  1. Asymmetric Encryption 非對稱式加密
    • 接收端 – 會產生兩把鑰匙 (Public/Private Key), Public Key (P) 會發佈給其他人來使用,而 Private Key (S) 則自己保存.
    • 傳送端 – 傳送端會使用 (P) 將資訊 M 來加密, 並將經過加密的資料 P(M) 傳送出去.
    • 接收端 – 接收端就可以用私鑰來解密 M=S(P(M)) ;這種方式傳送者無法確定接收者的真假
  2. Asymmetric Encryption 非對稱式加密 ( 用於數位簽證 Digital Signatures )
    主要用在身份的確認,方法類似 Asymmetric Encryption 一樣會使用兩把鑰匙 (公與私 Public / Private Key), 但運作方式是由 傳送端 產生兩把鑰匙 (Public/Private Key),一樣 Private key 會當成加密用而 Public key 就會當解密用,方法如下.

    • 傳送端 – 產生兩把鑰匙 (Public/Private Key), Public Key(P) 會發佈給其他人來使用,而 Private Key (S) 則自己保存.傳送端使用自己產生的 Private key (S) 將資訊 M 來加密, 並將經過加密的資料 S(M) 傳送出去.
    • 接收端 – 接收端就可以用傳送者的公鑰來解密 M=P(S(M)) ;這種方式的接收者可以確定傳送者,但傳送者無法得知接收者是否由其他人冒充.所以產生下面這兩種方法.
  3. Combined Signature and Encryption
    運作方式結合 Asymmetric Encryption 與 Asymmetric Encryption ( 數位簽證 Digital Signatures )

    • 傳送端 – 傳送端/接收端都會產生兩把鑰匙 (Public/Private Key), Public Key (P) ,Public Key (P) 會發佈給其他人來使用,而 Private Key (S);則自己保存.傳送端會先用自己產生 Private key 加密,然後再用接收端的 Public key 加密.並將經過加密兩次的資料傳送出去
    • 接收端 – 接收端會先用產生的 Private key 解密,然後再用傳送端的 Public key 解密,就能得到資料.這樣雙方就可以確認彼此,但資料的真實性還是無法獲得保障所以產生下面的方式.
  4. Detached Signatures
    方法同 Asymmetric Encryption + 數位簽證 Digital Signatures ,但傳送者會先用 One Way Hash 將資料產生 fingerprint 並傳送給接收者,接收者就可以依據此一信息摘要 (fingerprint) 來判斷資料是否遭到修改.

    Asymmetric Encryption + 數位簽證 Digital Signatures 的方式如下
    傳送端:

    1. 傳送端先將要傳送的資料做對 One Way Hash 並產生信息摘要 (fingerprint).
    2. 傳送端使用自己的私鑰 (Prive Key) 對 fingerprint 進行加密.
    3. 傳送端隨機產生一組對稱加密密鑰 (DES密鑰),並使用這密鑰對要發送的資料進行加密.
    4. 傳送端使用接收端的公鑰 (Public Key) 將剛才 對稱加密密鑰 (DES密鑰) + 已加密的資料 + 信息摘要 (fingerprint) 加密並傳送給接收端.

    接收端:

    1. 接收端使用自己的私鑰(Private Key)對 對稱加密密鑰 (DES密鑰) + 已加密的資料 + 信息摘要 (fingerprint) 進行解密.
    2. 接收端使用對稱加密密鑰 (DES密鑰) 將 已加密的資料 進行解密.
    3. 接收端使用 傳送端的公鑰 (Public Key) 信息摘要 (fingerprint) 進行解密.
    4. 接收端 針對收到的資料 進行用相同的 one way hash ,並比較 獲得的 信息摘要 (fingerprint).
    5. 接收端運算出來的 信息摘要 (fingerprint) 與 獲得的 信息摘要 (fingerprint) 進行比較,如果一樣則表示說收到的資料沒有被修改過.

    在 DSA (Digital Signature Algorithm) 使用 Detached Signatures(數字簽證演算法),用作數字簽證標準的一部分,這種方式只能用於數字簽證,無法用在加密中,DSA 採用的 One Way Hash 為 SHA.

但這種方式缺少公正性,很容易被第三者在中間假冒,所以需要公正的第三者來處理,這就是下面要說的 CA.

CA(Certification Authority)

憑證主要是用由三項東西組成的,如下

  • 第一部分是要申請的憑證內容
  • 第二部分是 Public Key
  • 第三部分將剛才的內容(第一二部分)經過 on way hash(如:MD5 , SHA1..)再用他 Root CA 的 Private Key 加密所到的訊息摘要 (Digest Hash) . 這可確定在傳送過程資料不會遭到修改.

關於 CA 請參考 CA(Certificate Authority)

6 Replies to “PKI”

  1. 自動參照通知: 安全性 | Benjr.tw

  2. 自動參照通知: RHEL 5 – VPN | Benjr.tw

  3. 自動參照通知: WSCP – windows Secure copy | Benjr.tw

  4. 自動參照通知: Amazon 雲端服務(二) – EC2 | Benjr.tw

  5. 自動參照通知: PAM-初解 | Benjr.tw

  6. 自動參照通知: SSL | Benjr.tw

發表迴響