公開金鑰認證(英語:Public key certificate),又稱數位憑證(digital certificate)或身份憑證(identity certificate)。是用於公開金鑰基礎建設的電子檔案,用來證明公開金鑰擁有者的身份。此檔案包含了公鑰資訊、擁有者身份資訊(主體)、以及数字证书认证机构(發行者)對這份文件的數位簽章,以保證這個文件的整體內容正確無誤。擁有者憑著此檔案,可向電腦系統或其他使用者表明身分,從而對方獲得信任並授權存取或使用某些敏感的電腦服務。電腦系統或其他使用者可以透過一定的程序核實憑證上的內容,包括憑證有否過期、數位簽章是否有效,如果你信任簽發的机构,就可以信任憑證上的金鑰,憑公鑰加密與擁有者進行可靠的通訊。
简而言之,认证机构用自己的私钥对需要认证的人(或组织机构)的公钥施加数字签名并生成证书,即证书的本质就是对公钥施加数字签名。[1]
數位憑證的其中一個最主要好處是在認證擁有者身分期間,擁有者的敏感個人資料(如出生日期、身分證號碼等)並不會傳輸至索取資料者的電腦系統上。透過這種資料交換模式,擁有者既可證實自己的身分,亦不用過度披露個人資料,對保障電腦服務存取雙方皆有好處。
人們透過信任数字证书认证机构的根证书、及其使用公开密钥加密作數位簽章核發的公開金鑰認證,形成信任鏈架構,已在TLS實作並在万维网的HTTPS、在电子邮件的SMTPS和STARTTLS廣泛應用。業界現行的標準是國際電信聯盟電信標準化部門制定的X.509[2],並由IETF發行的RFC 5280詳細述明。而在不少國家/地區,都已立法承認使用數位憑證所作的數位簽章擁有等同親筆签名的法律效力(如欧洲联盟[3][4]、香港[5][6]、台灣[7]、美國、加拿大)。
證書種類
在用于小范围测试等目的的時候,用户也可以自己生成数字证书,但沒有任何可信賴的人签名,這種自签名证书通常不会被广泛信任,使用時可能會遇到電腦軟件的安全警告[8]。
根证书獲得廣泛認可,通常已預先安裝在各種軟體(包括操作系统、瀏覽器、電郵軟件等),作為信任鏈的起點,來自於公認可靠的政府機關(如香港郵政[9]、台灣網路資訊中心)、證書頒發機構公司(如DigiCert、Google[10])、非營利組織(如Let's Encrypt)等,與各大軟件商透過嚴謹的核認程序才在不同的軟件廣泛部署。由於部署程序複雜費時,需要行政人員的授權及機構法人身份的核認,一張根证书有效期可能長達二十年以上。在某些企業,也可能會在內部電腦自行安裝企業自簽的根证书,以支援内部网的企业级软件;但是這些證書可能未被廣泛認可,只在企業內部適用。
認證機構的一個重要任務就是為客戶簽發證書,雖然廣泛認可的認證機構都已擁有根证书,相對應的私鑰可用以簽署其他證書,但因為密钥管理和行政考慮,一般會先行簽發中介證書,才為客戶作數位簽署。中介證書的有效期會較根证书為短,並可能對不同類別的客戶有不同的中介證書作分工。
授權憑證又稱屬性憑證,本身沒有公鑰,必須依附在一張有效的數位憑證上才有意義,其用處是賦予相關擁有人簽發終端實體憑證的權力;某些情況下,如果只在短期內授予憑證機構簽發權力,便可以不改變(縮短)該機構本身持有的憑證的有效期。這種情況,類似於某人持有長達十年期的護照,而只透過簽發短期入境簽證,來個別賦予護照持有人額外權力。
其他不會用作簽發其他證書的,都可稱為終端實體證書,在實際的軟件中部署,以便建立加密通道時應用。
伺服器通常以域名形式在互聯網上提供服務,伺服器證書上主體的通用名稱就會是相應的域名,相關機構名稱則寫在組織或單位一欄上。伺服器證書(包括公鑰)和私鑰會安裝於伺服器(例如Apache),等待客戶端連接時協議加密細節。客戶端的軟件(如瀏覽器)會執行認證路徑驗證算法以確保安全,如果未能肯定加密通道是否安全(例如證書上的主體名稱不對應網站域名、伺服器使用了自簽證書、或加密算法不夠強),可能會警告用戶。
如果伺服器證書上主體的通用名稱(或主體別名)一欄以通配符前綴,則該證書可以用於旗下的所有子域名,特別適合較具規模、或設有多個子網站的機構一次過申領,套用於多個伺服器上;即使未來建立新的子域名,也可以套用。但通配符不可用於擴展認證證書上。
有時候,某些TLS伺服器可能會在建立加密通道時,要求客戶端提供客戶端證書,以驗證身份及控制存取權限。客戶端證書包含電子郵件地址或個人姓名,而不是主機名。但客戶端證書比較不常見,因為考慮到技術門檻及成本因素,通常都是由服務提供者驗證客戶身份,而不是依賴第三方認證機構。通常,需要使用到客戶端證書的服務都是內部网的企业级软件,他們會設立自己的內部根证书,由企業的技術人員在企業內部的電腦安裝相關客戶端證書以便使用。在公開的互聯網,大多數網站都是使用登入密碼和Cookie來驗證用戶,而不是客戶端證書。
在台灣,中華民國內政部憑證管理中心根據電子簽章法負責簽發自然人憑證,讓國民在網路使用各種政府服務[11]。
客戶端證書在RPC系統中更常見,用於驗證連接設備的許可授權。
內容欄位
一般遵從X.509格式規範的憑證,會有以下的內容,它們以欄位的方式表示[12]:
- 版本:現行通用版本是 V3
- 序號:用以辨識每一張憑證,特別在撤消憑證的時候有用
- 主體:擁有此憑證的法人或自然人身份或機器,包括:
- 發行者:以數位簽章形式簽署此憑證的数字证书认证机构
- 有效期開始時間:此憑證的有效開始時間,在此前該憑證並未生效
- 有效期結束時間:此憑證的有效結束時間,在此後該憑證作廢
- 公開金鑰用途:指定憑證上公鑰的用途,例如數位簽章、伺服器驗證、用戶端驗證等
- 公開金鑰
- 公开密钥指纹
- 數位簽章
- 主體別名:例如一個網站可能會有多個網域(www.wikipedia.org, zh.wikipedia.org, zh.m.wikipedia.org 都是維基百科)、一個組織可能會有多個網站(*.wikipedia.org, *.wikibooks.org, *.wikidata.org 都是維基媒體基金會旗下的網域),不同的網域可以一併使用同一張憑證,方便實作應用及管理
申領及使用
数字证书一般由数字证书认证机构簽发,簡單的程序如下:
- 鮑伯在自己的機器上使用密码学安全伪随机数生成器產生一對足夠強的密鑰,鮑伯的私鑰不會向任何人傳送。
- 鮑伯把他的公鑰,連同主體訊息、使用目的等組成憑證簽署請求,傳送給认证机构伊凡。
- 伊凡(用另外一些渠道)核實鮑伯的身份。
- 如果伊凡信任這個請求,他便使用鮑伯的公鑰和主體訊息,加上憑證有效期、用途等限制條件,組成憑證的基本資料。
- 伊凡用自己的私鑰对鲍勃的公钥加上数字签名并生成证书。
- 伊凡把生成的憑證傳送給鮑伯(伊凡也可以透過证书透明度公佈他簽發了新的證書)。
- 鮑伯可以隨便把憑證向外發佈。
- 鮑伯與愛麗絲事先可能互不認識,但鮑伯與愛麗絲都信任伊凡,愛麗絲使用认证机构伊凡的公钥驗證数字签名,如果验证成功,便可以信任鲍勃的公钥是真正屬於鮑伯的。[1]
- 愛麗絲可以使用憑證上的鲍勃的公鑰加密明文,得到密文並傳送給鮑伯。
- 鮑伯可以可以用自己的私鑰把密文解密,得到明文。
電子證書可以二进制或Base64形式儲存,常見的文件扩展名有 .cer、.crt、.der和.pem。如果把證書和私鑰一起儲存,則可以使用PKCS#12(.p12)格式[13]。
- DER用于二进制DER编码的证书。
- PEM用于不同类型的X.509v3文件,是以“ - BEGIN ...”前缀的ASCII(Base64)数据。
- CER和CRT几乎同义,证书可以被编码为二进制DER或ASCII PEM。
- PKCS7 文件,也被称为 P7B,通常用于 Java Keystores 和 Microsoft IIS(Windows)。它们是 ASCII 文件,可以包含证书和 CA 证书。
- PKCS12 文件,也被称为 PFX 文件,通常用于在 Micrsoft IIS(Windows)中导入和导出证书链。
審核級別
法人團體申領數位憑證的時候,可以視乎其法人的地位及其實際需要申領不同級別的憑證,認證機構會作相應的審核,越高級別的通常都牽涉越嚴謹的行政程序,及需付出更高昂的費用。各大憑證機構和网页浏览器軟件商透過CA/浏览器论坛共同建立和維護相關的指導方針[14]。
這是最基本的審核級別,如果申領代表可以證明他擁有管理某域名的權力,認證機構就可以發放域名驗證(DV)證書。認證機構通常使用自動機制(例如自動證書管理環境[15]或透過電郵確認)審核域名擁有權,所以成本也較低[16]。
如果申領代表可以證明他擁有管理某域名的權力,而且相關組織是實際存在的法人,認證機構可以發放組織驗證(OV)證書。審核程序通常需要經過人手處理。
這是最嚴格的審核級別,審核過程可能牽涉專業法律人員的調查及獨立審計人員的確認,成本也自然更高[17];成功獲得擴展驗證證書的網站,現代瀏覽器通常會在位址列以綠色表示相關機構的法人名稱及所屬國家代碼[18]。擴展驗證證書的主體名稱或主體別名上不可以有通配符。
弱點與防禦
公開金鑰基礎建設的弱點,在於人們必須循數位憑證上的信任鏈找到根證書,並信任核發根證書的数字证书认证机构,一旦憑證機構被黑客入侵,黑客可以在人們不知情下簽發了偽冒他人身份的證書,以中间人攻击進行欺詐。業界已研發不同的防禦方法,例如憑證機構可以透過证书透明度公布新簽發的電子憑證,讓大眾檢查手上收到的電子憑證是否可能未被正式授權(中間人攻擊不會「公布」他偽冒了別人簽發了欺詐憑證),網站管理員也可以定期檢查是否有不明機構發出了未被授權的憑證。另一方面,HTTPS網站可以使用HPKP指明其固定的公鑰,讓中間人的欺詐憑證無法使用。另外,而OCSP和OCSP装订也在發展中,讓用戶軟體可以透過第三方檢查憑證是否有効。
在公鑰基礎設施以外,信任網絡則採用去中心化的概念,取代了依賴數字證書認證機構的公鑰基礎設施,因為每一張電子證書在信任鏈中最終只由一個根證書授權信任,信任網絡的公鑰則可以累積多個用戶的信任。
2009年,中國互聯網絡信息中心(CNNIC)的一名員工向Mozilla申請要求将 CNNIC 加入 Mozilla 的 根證書列表[19],並且得到了批准。後來微軟也把 CNNIC加到了Windows的根證書列表裏。
2015年,因CNNIC发行的一个中级CA被发现发行了Google域名的假证书[20],许多用户选择不信任CNNIC颁发的数字证书[21]。并引起对CNNIC滥用证书颁发权力的担忧[22]。
2015年4月2日,Google宣布不再承认CNNIC所颁发的电子证书[23][24]。4月4日,继Google之后,Mozilla也宣布不再承认CNNIC所颁发的电子证书[25]。2016年8月,CNNIC官方网站已放弃自行发行的根证书,改用由DigiCert颁发的证书。
2016年,擁有奇虎360背景的中國最大CA证书签发机构沃通(WoSign)[26]及其以色列子公司StartCom,遭谷歌拒絕承認其憑證。 ]] 沃通被揭發在短短5日內發行了幾百個相同序列号的証書,以及對證書日期上造假[27]。
參見
参考文献
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.