成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

證書透明度 Certificate Transparency 與 Fork 一致性

安全 應(yīng)用安全
證書透明度(Certificate Transparency, CT)的本質(zhì),是構(gòu)建一個公開的、只能追加、不可篡改的?日志系統(tǒng)(Log)?,用來記錄全球所有簽發(fā)的 TLS 證書。它的核心理念不是?防止?壞證書的簽發(fā),而是確保一旦簽發(fā),就一定能被?發(fā)現(xiàn)。

我們來深入聊聊 證書透明度(Certificate Transparency, CT) 。這不僅僅是一個技術(shù)方案,更是一種設(shè)計哲學(xué),教我們?nèi)绾卧诔錆M猜忌的開放網(wǎng)絡(luò)環(huán)境中,用分布式的思路構(gòu)建信任。

信任的危機:為什么需要證書透明度?

在 1995 年之前,互聯(lián)網(wǎng)上的中間人攻擊(Man-in-the-Middle, MITM)是個大問題。當(dāng)你訪問銀行網(wǎng)站時,很可能會被一個偽裝的假服務(wù)器騙走密碼,因為你無法確定你正在對話的到底是誰。

為了解決這個問題,我們引入了 證書頒發(fā)機構(gòu)(Certificate Authority, CA) 和 SSL/TLS 證書體系。這個體系的核心思想很簡單:

  1. 網(wǎng)站(比如 google.com)生成一對公私鑰。
  2. 它把自己的域名和公鑰打包,找一個大家都信任的權(quán)威機構(gòu)(CA),讓它簽名。
  3. 這個簽了名的包,就是 證書(Certificate) 。
  4. 當(dāng)你的瀏覽器訪問 google.com 時,服務(wù)器會出示這張證書。
  5. 你的瀏覽器內(nèi)置了一份它信任的 CA 列表。它會檢查證書的簽名,如果簽名來自這個列表中的某個 CA,并且證書上的域名是 google.com,瀏覽器就相信它連接的是真正的谷歌服務(wù)器。

這個模型在大多數(shù)時候都運行良好,但它有一個致命的弱點: 我們無條件地信任了 CA 。全球有上百個 CA,只要其中任何一個被黑客攻破,或者內(nèi)部出現(xiàn)惡意行為,它就可以為任何域名簽發(fā)“合法”的證書。

想象一下,一個不知名的 CA 被黑了,攻擊者用它簽發(fā)了一張 your-bank.com 的證書。然后通過 DNS 欺騙等手段,把你引向一個假冒的銀行網(wǎng)站。你的瀏覽器會看到一張“有效”的證書,于是放心地建立了連接,你的密碼就這樣被盜了。你和銀行本身可能都對此毫不知情。

這就是 CT 要解決的核心問題:CA 簽發(fā)證書的過程是一個黑盒子,出了問題我們很難發(fā)現(xiàn)。CT 的目標(biāo)就是把這個黑盒子砸開,讓一切都公開、透明。

CT 的三大核心組件與工作流程

證書透明度(Certificate Transparency, CT)的本質(zhì),是構(gòu)建一個公開的、只能追加、不可篡改的 日志系統(tǒng)(Log) ,用來記錄全球所有簽發(fā)的 TLS 證書。它的核心理念不是 防止 壞證書的簽發(fā),而是確保一旦簽發(fā),就一定能被 發(fā)現(xiàn)。

為了實現(xiàn)這個目標(biāo),CT 系統(tǒng)主要由三個角色構(gòu)成:日志服務(wù)器、監(jiān)控器和審計器。

日志服務(wù)器 (Log Server)

這是 CT 的心臟。你可以把它想象成一個公開的賬本。

  • 只能追加 (Append-only) :新的證書記錄只能添加到末尾,不能修改或刪除歷史記錄。
  • 加密保證 (Cryptographically Assured) :內(nèi)部使用一種叫 默克爾樹(Merkle Tree) 的數(shù)據(jù)結(jié)構(gòu)來組織所有證書。這棵樹的樹根(root hash)是對整個日志內(nèi)容的一個緊湊、安全的摘要。有了它,我們可以非常高效地驗證:

某張證書是否真的存在于日志中(這被稱為 包含證明 (Proof of Inclusion) )。

日志的任何兩個版本之間是否一致,即新版本是否是舊版本的純粹追加(這被稱為 一致性證明 (Consistency Proof) )。

全球有多個獨立的組織(比如 Google, Cloudflare)在運行這樣的日志服務(wù)器。為了避免單點故障和惡意行為,一個證書通常會被同時提交到多個不同的日志中。

監(jiān)控器 (Monitor)

監(jiān)控器是一個獨立的監(jiān)察服務(wù)。它的任務(wù)很簡單: 持續(xù)不斷地盯著所有已知的 CT 日志 ,下載所有新加入的證書,然后檢查里面有沒有可疑的東西。

比如,Google 公司會運行一個監(jiān)控器,專門尋找所有為 *.google.com 簽發(fā)的證書。一旦發(fā)現(xiàn)一個不是自己申請的,或者是由一個意料之外的 CA 簽發(fā)的證書,Google 的安全團隊就會立刻收到警報。同理,任何一個網(wǎng)站所有者都可以運行自己的監(jiān)控器,守護自己的域名。

審計器 (Auditor)

審計器通常內(nèi)嵌在我們的 瀏覽器 中。它的作用是在我們?nèi)粘I暇W(wǎng)時,驗證服務(wù)器提供的證書是否符合 CT 的規(guī)范。

當(dāng)瀏覽器訪問一個 HTTPS 網(wǎng)站并收到證書時,它會檢查證書中是否包含一個或多個 簽名證書時間戳(Signed Certificate Timestamp, SCT) 。

SCT 是什么?當(dāng)一個 CA 把證書提交給 CT 日志時,日志服務(wù)器會返回一個 SCT。這就像一張回執(zhí),是日志服務(wù)器對 CA 的一個 承諾 :“我收到了這張證書,并保證會在規(guī)定時間內(nèi)(通常是 24 小時)將它公開到我的日志里”。

瀏覽器(審計器)看到 SCT 后,會驗證其簽名是否來自一個它信任的日志服務(wù)器。只要驗證通過,瀏覽器就認為這張證書是“公開可審計的”,即使它還沒來得及去日志里查詢,也愿意接受它。這個機制給了日志一個短暫的緩沖期來處理證書,同時保證了沒有證書可以“私下”使用而不留痕跡。

瀏覽器如何驗證 SCT 簽名?

  1. 預(yù)置/更新的信任日志列表(Log List)
  • 大多數(shù)主流瀏覽器(Chrome、Firefox、Safari 等)會內(nèi)置一個「信任的 CT 日志服務(wù)器公鑰」列表,也會定期通過瀏覽器自身的更新機制(類似瀏覽器更新或 CRL/OCSP 更新方式)來刷新這份列表。
  1. 數(shù)字簽名檢查
  • 當(dāng)瀏覽器收到帶有 SCT 的 TLS 握手消息或證書時,就已經(jīng)拿到了 SCT(內(nèi)含:證書的哈希、時間戳、日志標(biāo)識符等)和相應(yīng)的簽名。
  • 瀏覽器在本地利用對應(yīng)日志服務(wù)器的公鑰,按照 CT 協(xié)議定義的結(jié)構(gòu)(通常是 ECDSA-over-P256 或 Ed25519 等)去驗證這段簽名。
  • 如果簽名校驗通過,就證明這個日志服務(wù)器在給定的時間點「確實」收到過這份證書,并承諾會在其公開的 Merkle Tree 里追加它。

整個過程完全在本地完成,不需要瀏覽器再去詢問任何第三方服務(wù)器。

工作流程總結(jié)

  1. CA 準備簽發(fā)一張證書。
  2. CA 將這張(預(yù))證書發(fā)送給多個 CT 日志服務(wù)器。
  3. 每個日志服務(wù)器返回一個 SCT。
  4. CA 將這些 SCT 嵌入最終的證書里(或者通過其他方式提供給服務(wù)器)。
  5. Web 服務(wù)器將帶有 SCT 的證書發(fā)送給來訪的瀏覽器。
  6. 瀏覽器(審計器)驗證 SCT 的有效性,確認這張證書的簽發(fā)行為是公開的。
  7. 與此同時,域名所有者的監(jiān)控器正在掃描 CT 日志,一旦發(fā)現(xiàn)未經(jīng)授權(quán)的證書,就會發(fā)出警報。

通過這個流程,任何一張被瀏覽器接受的證書,都必然會被置于公眾的監(jiān)督之下。攻擊者即使騙過了一個 CA,也無法阻止這張偽造的證書出現(xiàn)在公開日志中,從而被監(jiān)控器發(fā)現(xiàn)。

CT 的安全基石:分叉一致性與八卦協(xié)議

一個聰明的人可能會問:如果一個惡意的日志服務(wù)器和 CA 合謀,給我的瀏覽器看一個包含偽造證書的、特供版的日志,同時給監(jiān)控器看一個正常的、不含該證書的日志,這不就繞過整個體系了嗎?

這種行為被稱為 “equivocation” 或者 視圖分叉(View Forking) 。CT 的設(shè)計者早就考慮到了這一點,并引入了一個強大的屬性: 分叉一致性(Fork Consistency) 。

簡單來說,一個行為良好的 CT 日志(基于 Merkle Tree)必須保證,它的任何新狀態(tài)都是舊狀態(tài)的簡單追加。如果你今天看到的日志樹根是 STH_new,昨天看到的是 STH_old,那么日志服務(wù)器必須能提供一個數(shù)學(xué)證明(一致性證明),來表明 STH_new 對應(yīng)的日志包含了 STH_old 的全部內(nèi)容,并且只是在后面增加了一些新條目。

如果一個惡意日志想對你搞“特供版”,它就必須永遠維護這個為你定制的分叉。比如,它今天給你看了包含偽造證書的日志版本 A,明天為了讓你相信日志還在正常增長,它必須給你看版本 A+,后天是 A++……它不能突然給你看一個和主干日志 B 合并后的版本,因為它無法提供從 A 到 B 的一致性證明。

這意味著,這個惡意日志必須為你一個人永遠地維護一個獨特的、虛假的世界。這不僅成本高昂,而且非常脆弱。一旦你和別人交流一下你們各自看到的日志樹根(STH),或者你的瀏覽器緩存了舊的 STH,然后訪問網(wǎng)絡(luò)時發(fā)現(xiàn)新的 STH 與舊的不一致且無法提供證明,欺騙行為就會立刻敗露。

為了讓這種“交流日志樹根”的行為系統(tǒng)化,CT 的原始設(shè)計中還包含了一個 八卦協(xié)議(Gossip Protocol) 。瀏覽器和監(jiān)控器之間可以互相交換它們看到的 STH,一旦發(fā)現(xiàn)不一致,就意味著某個日志服務(wù)器在作惡。盡管在當(dāng)前的實際部署中,gossip 協(xié)議并未被廣泛實現(xiàn),但利用這一點來作惡的攻擊“非常笨拙且風(fēng)險極高”,所以系統(tǒng)在缺少它的情況下依然相當(dāng)安全。

常見問題與生產(chǎn)啟示

監(jiān)控器 (Monitor) 和審計器 (Auditor) 有什么區(qū)別?

這是理解 CT 的關(guān)鍵。

  • 審計器 (Auditor) :在你的 瀏覽器 里。它只關(guān)心 當(dāng)前 遇到的這一張證書。它通過檢查 SCT 來確認這張證書“已登記”,但它不關(guān)心日志里的其他證書。它的檢查是 被動的、個例的 。
  • 監(jiān)控器 (Monitor) :是一個 獨立的服務(wù) 。它關(guān)心的是 所有 的證書。它會完整地拉取日志,主動地、地毯式地搜索它關(guān)心的域名(比如 *.mit.edu),檢查每一張相關(guān)證書的合法性。它的檢查是 主動的、全局的 。

為什么需要多個獨立的日志服務(wù)器?

為了 去中心化 和 容錯 。如果只有一個日志,它一旦宕機,所有 CA 都無法簽發(fā)被瀏覽器接受的證書。如果它變壞了,整個系統(tǒng)就失去了意義。通過要求證書出現(xiàn)在多個獨立的日志中,CT 大大提高了系統(tǒng)的健壯性和抗審查性。

CT 有什么啟示?

  1. 信任模型 :CT 是一個典型的從“相信權(quán)威”轉(zhuǎn)變?yōu)椤斑^程可審計”的范例。在設(shè)計需要多方協(xié)作的分布式系統(tǒng)時,這是一個非常重要的思想。與其假設(shè)每個參與者都是好人,不如設(shè)計一個機制,讓每個人的行為都公開透明,作惡行為能被輕易發(fā)現(xiàn)。這正是區(qū)塊鏈等技術(shù)的核心思想之一。
  2. 審計優(yōu)于預(yù)防 :在很多場景下,完全 預(yù)防 問題的發(fā)生是不可能或成本極高的。CT 提供了一個B計劃:即使無法阻止壞證書被簽發(fā),我們也能確保它被 發(fā)現(xiàn) 。這種“檢測與響應(yīng)”的設(shè)計思路在安全、運維等領(lǐng)域非常普遍。
  3. 數(shù)據(jù)結(jié)構(gòu)的力量 :Merkle Tree 在這里起到了定海神針的作用。它用很小的成本(一個樹根哈希值)實現(xiàn)了對海量數(shù)據(jù)的完整性校驗,并提供了高效的包含/一致性證明。理解其原理對于設(shè)計需要數(shù)據(jù)校驗和同步的系統(tǒng)大有裨益。
  4. 隱私問題 :CT 也不是完美的。比如隱私問題:如果瀏覽器為了獲取“包含證明”而頻繁向日志服務(wù)器查詢某個證書,這可能會暴露用戶的瀏覽歷史。這是一個開放性問題,業(yè)界也在探索如私有信息檢索(Private Information Retrieval, PIR)等技術(shù)來緩解它。

總結(jié)

CT 的核心貢獻在于,它巧妙地利用 強制公開 和 可審計性 ,為一個原本封閉、基于絕對信任的系統(tǒng)(CA 體系)打上了一個透明的補丁。它并沒有推翻原有的體系,而是通過增加日志、監(jiān)控和審計這三個角色,讓所有參與者(CA、網(wǎng)站主、用戶)互相監(jiān)督,形成了一種新的制衡。

它的關(guān)鍵屬性是保證了盡管存在惡意,但每個人看到的都是同一份日志 (everyone sees the same log, despite malice) 。這種一致性,正是我們在構(gòu)建大型分布式系統(tǒng)時所追求的終極目標(biāo)之一。

責(zé)任編輯:武曉燕 來源: Piper蛋窩
相關(guān)推薦

2017-07-25 14:38:56

數(shù)據(jù)庫一致性非鎖定讀一致性鎖定讀

2022-12-14 08:23:30

2021-06-22 10:22:08

業(yè)務(wù)IT一致性首席信息官

2016-12-19 18:41:09

哈希算法Java數(shù)據(jù)

2021-02-05 08:00:48

哈希算法?機器

2021-02-02 12:40:50

哈希算法數(shù)據(jù)

2016-11-16 19:15:34

消息時序分布式系統(tǒng)

2020-11-24 09:03:41

一致性MySQLMVCC

2020-05-12 10:43:22

Redis緩存數(shù)據(jù)庫

2022-03-22 09:54:22

Hash算法

2021-06-30 21:13:49

CPUCache數(shù)據(jù)

2022-10-19 12:22:53

并發(fā)扣款一致性

2024-05-28 00:50:00

RedisMySQL緩存

2021-04-24 16:58:03

數(shù)據(jù)庫工具技術(shù)

2024-05-08 16:37:17

MySQLRedis數(shù)據(jù)庫

2021-09-15 07:46:42

哈希一致性哈希算法

2021-02-04 06:30:26

Python編程語言

2009-06-18 09:18:08

Oracle檢索數(shù)據(jù)數(shù)據(jù)一致性事務(wù)恢復(fù)

2021-06-11 09:21:58

緩存數(shù)據(jù)庫Redis

2021-06-03 15:27:31

RaftSOFAJRaft
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 美女黄网站视频免费 | 91久久精品国产免费一区 | 色啪网| 国产成人午夜高潮毛片 | 日日操操 | 日本一二三区电影 | 波多野结衣一区二区 | 午夜寂寞影院在线观看 | 日韩免费视频一区二区 | 正在播放国产精品 | 18av在线播放 | 一级做受毛片免费大片 | 中文字幕一区二区三区在线观看 | 日韩波多野结衣 | 在线视频中文字幕 | 免费在线一区二区三区 | 亚洲性视频网站 | 国产精品久久久久久久久久久免费看 | 久久久久久一区 | 国产精品成人一区二区三区吃奶 | 久草新在线| 国产激情自拍视频 | 精品91视频 | 日韩精品一区二区三区免费观看 | 999久久精品 | 日韩一二区 | 中文字幕在线观看 | 91精品久久久 | 91精品国产乱码久久久久久 | 在线播放一区二区三区 | 黑人久久久 | 欧美视频一区二区三区 | 成人国产在线观看 | 国产精品性做久久久久久 | 天天在线操 | 日韩欧美精品一区 | 美女久久视频 | 日批日韩在线观看 | 色悠悠久| 中文字幕的av| 鸳鸯谱在线观看高清 |