電子憑證說明
網路上的資訊安全問題: 1.竄改:傳送出去的資料,被他人修改。 2.竊聽:傳送出去的資料,被他人竊聽。 3.冒名傳送:被他人冒用名義傳送資料。 4.否認傳送:否認自己從網路上傳送資料。 因此使用加密技術以解決上述的資訊安全問題。 加密系統分為對稱式加密系統與 公開金鑰密碼系統(非對稱式加密系統)。
對稱式加密系統 對稱式加密系統是指資料傳送過程中使用相同的金鑰進行加密及解密 如圖:發文者使用010101010金鑰將明文加密成密文,收文者收到密文之後,使用010101010金鑰將密文解密成明文。
公開金鑰密碼系統(非對稱加密系統) 是指資料傳送過程中使用不同的金鑰進行加密及解密。 此金鑰對分為公開金鑰及私密金鑰,公開金鑰可以供他人取得,私密金鑰需要自行保管,兩者的關係是唯一成對的。 如圖:發文者使用收文者公鑰將明文加密,收文者收到密文之後,使用私鑰將密文解密成明文。
著名的非對稱式加密演算法 演算法 發展者 安全植基於 目的 RSA (目前國內採用) Ron Rivest,Adi Shamir,Leonard Adleman 在於將大數目因數分解 加密.簽章.金鑰交換 DSA(Digital signautre algorithm) NSA 難以計算離散對數問題 數位簽章 Diffie-Hellman 金鑰交換演算法 Whitfield Diffie,Martin Hellman 難以在有限場計算離散對數 金鑰交換 Elliptic Curve Cryptography 椭圓曲線演算法 Victor Miller(IBM) ,Neil Koblitz 椭圓曲線離散對數問題 數位簽章.加密
目前國內採用 sha-1
數位簽章(digital signature): 係專指以公開金鑰密碼技術(非對稱加密系統)密碼技術製作之電子簽章,如圖所示,一般會將數位簽章存放至磁片或IC卡。
數位簽章是如何運作呢? 如圖 張三想要傳送一份文件給李四與王五,張三將訊息原文使用他的私鑰進行加密後,將訊息密文傳送給李四與王五。 李四與王五收到訊息密文後,使用張三的公鑰將訊息密文解密,因為只有張三的公鑰才可以解開這份訊息密文,代表這份文件確實是張三所傳送的,而且沒有被竄改。
電子簽章(electronic signature): 比數位簽章的意義更廣泛,例如可以個人的生物特徵如指紋、視網膜血管分佈形狀、DNA 、 足印和行走風格、筆跡及聲紋來達到簽章之目的。
X.509 憑證運作架構
Windows下的憑證設定
Public Key Infrastructure (PKI) 我國現行 GPKI階層式架構 政府憑證總管理中心 (GRCA) 政府憑證 管理中心 (GCA) 工商憑證 管理中心 (MOEACA) 內政部憑證 管理中心 (MOICA) 組織及團體 憑證管理中心 (XCA) 政府測試 憑證管理中心 (GTestCA)
相關網址 http://grca.nat.gov.tw http://gca.nat.gov.tw http://xca.nat.gov.tw http://moica.nat.gov.tw http://gtestca.nat.gov.tw http://moeaca.nat.gov.tw 政府OID查詢網站(http://oid.nat.gov.tw)
GPKI公鑰憑証類別 政府機關(構)憑證 政府單位憑證 政府機關(構)單位伺服器應用軟體(Server AP與SSL)憑證 公司憑證 分公司憑證 商號憑證(原稱為行號憑證) 社團法人憑證 財團法人憑證 學校憑證 自然人憑證 自由職業事務所憑證(尚未提供) 行政法人憑證(尚未提供)
各類憑證主體的唯一識別代碼 政府機關(構):OID 政府單位:OID 公司:統一編號 分公司:統一編號 商號:統一編號 社團法人:OID 自然人:身分證字號後四碼、憑證主體名稱序號(注意:不是憑證序號)
X.509公鑰憑証格式 欄位名稱 說明 toBeSigned 憑證的To-Be-Signed部份(憑證的實際內容,見下表) algorithmIdentifier 簽章演算法之AlgorithmIdentifier signature CA對憑證的簽章
End-Entity公鑰憑証格式 欄位名稱 說明 version 憑證格式的版本 v3(2) serialNumber 憑證序號 signature 簽章演算法之AlgorithmIdentifier issuer 憑證簽發者( CA )的名稱 validity 憑證的有效期限(起始和終止) subject 憑證主體(發證對象)的名稱 subjectPublicKeyInfo 憑證主體的公鑰資訊 issuerUniqueIdentifier 此欄位依PKIX規定不使用 subjectUniqueIdentifier extensions X.509 v3擴充欄位
End-Entity公鑰憑証擴充欄位格式 欄位名稱 是否critical 說明 authorityKeyIdentifier FALSE CA金鑰的Key Identifier(Public Key的Hash值) subjectKeyIdentifier 憑證主體(Subject)金鑰的Key Identifier(Public Key的Hash值) keyUsage TRUE 憑證主體(Subject)金鑰的用途(簽章或是加解密) certificatePolicies 此張憑證所符合的憑證政策(GPKI憑證政策保證等級第三級) subjectAltName Optional欄位,用來記載憑證主體的Email(一般個體)或是URL(Server AP) subjectDirectoryAttribute 用來記載憑證主體之屬性資料(包括憑證類別及識別代碼等) extKeyUsage 記載憑證主體金鑰之特殊用途,此欄位只用於特殊的Server AP憑證 cRLDistributionPoints 記載憑證CRL之網址 authorityInfoAccess 記載CA憑證之網址
相關檔案副檔名 .cer,.crt 憑證檔(der) .pfx 憑證+key 檔 .pvk private key檔 .pem 用base64編碼的der format 格式檔 .crl 憑證移除清單檔
相關檔案副檔名(cont.) Certificate And Key Formats PEM Can contain all of private keys (RSA and DSA), public keys (RSA and DSA) and (x509) certificates. It is the default format for OpenSSL. It stores data Base64 encoded DER format, surrounded by ascii headers, so is suitable for text mode transfers between systems. DER Can contain all of private keys, public keys and certificates. It stored according to the ASN1 DER format. It is headerless - PEM is text header wrapped DER. It is the default format for most browsers. PKCS#12 Also known as PFX files. Can contain all of private keys, public keys and certificates. It stores in a binary format.
使用Opensll 自行製作憑證 製作 root CA 憑證 先產生private key 檔(並設定key檔的密碼) openssl genrsa -des3 -out ndhu.prikey.pem 2048 再產生憑證申請檔 openssl req -new -key ndhu.prikey.pem -out ndhu.req.pem 最後產生root CA 憑證檔((需要輸入key檔的密碼) openssl x509 -req -days 7305 -sha1 -extensions v3_ca -signkey ndhu.prikey.pem -in ndhu.req.pem -out ndhu.crt.pem
製作 由root CA 認證的憑證 先產生private key file openssl genrsa -des3 -out ccsys.prikey.pem 2048 再產生憑證申請檔 openssl req -new -key ccsys.prikey.pem -out ccsys.req.pem 設定憑證序號 Echo 1000 0000 > ndhu.srl 產生由root CA 認證的憑證檔 openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA ndhu.crt.pem -CAkey ndhu.prikey.pem -in ccsys.req.pem -out ccsys.crt.pem -CAcreateserial -CAserial ndhu.srl pvk -in ccsys.prikey.pem -out ccsys.pvk -topvk
填寫憑證申請書 Country Name (2 letter code) [AU]:TW State or Province Name (full name) [Some-State]:Taiwan Locality Name (eg, city) []:Hualien Taiwan Organization Name (eg, company) [Internet Widgits Pty Ltd]:National Dong Hwa University Organizational Unit Name (eg, section) []:Computer Center System Department Common Name (eg, YOUR name) []:National Dong Hwa University Email Address []:ccsys@mail.ndhu.edu.tw Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: 所有資料都要填英文 (ASCII 字集) 。 X.509 憑證只接受英文 ASCII 字集的字。 Country Name 一定要是大寫的雙字母國碼,臺灣是 TW ,臺灣以外的地方,請參考 ISO-3166 的標準雙字母國碼。 State Name 是國名或省名,不可以填國碼。臺灣填 Taiwan 即可。 Locality Name 是地名,填所在地縣市名即可。 Organization Name 是組織單位名稱,填公司行號,或學校局處的名稱。 Organizational Unit Name 是部門名稱,填公司部門名稱,或學校局處的單位名稱。 Common Name 是憑證的名稱。若是最上層憑證機構,請填上前面填的組織單位名稱,後面可以加上 RSA/2048 ,以便日後辨認憑證的性質。若是伺服器憑證,請填上伺服器的全名 (www.abc.com) 。若是 E-mail 憑證,請填上妳的 E-mail 。 E-mail Address 是申請單位的連絡信箱,請填上妳的聯絡用 E-mail 。 A challenge password 是申請書的密碼。不過申請書不用設密碼,所以不填。 An optional company name 是憑證代辦公司的名稱,也不用填。
設計電子憑證程式 程式必需功能 具備 SHA-1 加解密 功能 具備 RSA 金鑰加解密 功能 具備讀取系統內建憑證功能 具備 驗證憑證 是否正確及有效 功能 Windows 內建 crypt.dll 相關 library
Smart Card(IC卡)
Windows下的使用 可用來做為登入電腦的認證 Winscard.dll 為與IC卡讀卡機動作的函式庫 使用 APDU(Application Protocol Data Unit)指令控制讀卡機運作 Delphi 下的物件 PCSC component package(http://www.ppuvas.com.pl)
PC/SC structure ICC-Aware Applications Integrated Circuit Card ( ICC) Interface Device (IFD) Interface Device Handler (IFD Handler) Service Provider ICC Resource Manager IFD Handler IFD Handler IFD Handler IFD IFD IFD ICC ICC ICC
Smart card file structure
本校IC卡file structure
本校IC卡內含資訊欄位 資料名稱 長度 中文碼別 1 可判斷中文碼為 BIG5 或 IBM550 … 學校代碼 10 學校名稱 30 中文碼別 1 可判斷中文碼為 BIG5 或 IBM550 … 學校代碼 10 學校名稱 30 學制(校、院、區)代碼 學制(校、院、區)名稱 卡片序號 補發次數 卡片類別 持卡身分 2 學生、校友、教職員等身分 國籍代碼 3 學號(職員代號) 姓名 12 家長姓名 身分證字號 出生年月日 8 性別 系所代碼 年級別代碼 班別代碼 修業年限 持卡狀態 休學中、已畢業、在學中等 備註 100
APDU example 00 A4 10 48 (select parent DF (MF)) 00 A4 02 00 02 00 01 (select 0001 ef ,姓名,身分證,生日) 00 B2 02 04 10 (READ record 2 length 16byets,身分證,生日) Delphi example select_df($4810); select_ef($0002); read_record(1,7); memo1.lines.add('卡片類:'+copy(card.Answer.Str,4,2)); read_record(3,60);
APDU tool
設計smart card 結合電子憑證程式 程式必需功能 具備驅動 card reader 功能 具備驗證 smart card pin 功能 具備讀取卡內 public key 功能 具備驅動smart card 使用public key進行加解密功能 具備驅動smart card 使用private key 進行加解密功能