Tuesday, May 18, 2010

加密介紹&指令

給未來的裕翔

先很快講一下md5sum

對任意檔案md5sum filename可以跑出一串固定長度的亂碼

這就是one-way hase

非加密, 只是拿來驗證用

接著介紹symmetric加密

symmetric的意思就是加密解密都用同一把key

那問題來了, 怎麼安全的把key傳給對方

萬一中間被誰拿到這把key

不就誰都可以解我加密過的東西了?

於是產生了asymmetric加密

asymmetric加密就是產生兩把key, private key和public key

用其中任一把解另一把加密的資料

舉例來說, 現在有兩個角色, client和server

當client對server請求https服務時

server會產生private key和public key, 簡稱server-pri & server-pub

server接著傳server-pub給client

然後client自己有把session key

利用server-pub把自己的session-key加密變成server-pub(session-key)

傳給server後, server利用server-pri解server-pub(session-key)

這樣依然有個問題

一開始client怎麼知道它請求服務的對象, 就是真正的server?

於是我們需要公正的第三方, CA

有了CA之後, 真正的sever為了要請公正的CA證明自己是真的server

填一張CSR(Certificate Service Request)給CA

裡面包含

1. Server info

2. Server pub

加上CA自己的

3. CA info

4. Expiration

然後CA對這四個資訊進行onw-way hash得到一個叫fingerprint的東東

利用CA自己的private key, 簡稱CA-pri, 來對它加密成CA-pri(fingerprint)

剛才的四個資訊+CA-pri(fingerprint)合稱D.C.(digital certificate)

回傳給server

之後, 如果有client跟server請求https服務

server就回傳給它一個D.C.(數位憑證)

那client對D.C.裡面的四個資訊進行one-way hash得到自己算的fingerprint

再使用隨處可得的CA的public key, 簡稱CA-pub

來解D.C.裡面的CA-pri(fingerprint)

比較兩個fingerprint

如果一樣, 就表示"server不但自稱就是我要找的它, CA也說就是它"

這樣就可以相信"我要找的它"

以上, 上課聽了兩次, 這次終於把它記下來了^^

屁了一堆, 接著講解怎麼操作

由於跟真的CA申請憑證要錢的, 不過就是承認我嘛......

所以我要自己當CA

到/etc/pki/tls/misc, 裡面有個叫CA的script

首先, 我要扮演server的角色, 跟CA申請一個CSR(certificate service request)

./CA -newreq

自己填需要的資料吧~ 中間會需要建server的passphrase, 要給(理由我忘了)

會產生newkey.pem(server的private key)

和newreq.pem(含有1. Server info, 2. Server pub)

我要為自己建立一個偽CA公司^^

./CA -newca

照舊, 自己填需要的資料, 這也需要建一個CA的passphrase

搞定後, 會多出一個/etc/pki/CA資料夾, 這就是我的偽CA公司^^

再來, 身為一個CA公司, 我當然要同意server跟我申請的CSR囉

操作位置依然是在/etc/pki/tls/misc

./CA -sign

它會對newreq.pem產生newcert.pem, 這就是D.C.(數位憑證)了

目前先到這裡, 因為老師也只講到這裡

註記: 老師說只要扯到private key就需要一個passphrase

註記: 一定要./CA -xxx, 不能/etc/pki/tls/misc/CA -xxx

因為CA script裡面用到很多相對位置

根據執行CA script所在位置的相對位置, 所以預設是在/etc/pki/tls/misc/底下執行

那我們就別耍酷/etc/pki/tls/misc/CA -xxx

報告完畢, 未來的裕翔一定會很感謝我^^

No comments:

Post a Comment