Saturday, October 5, 2019

身份基礎加密 (Identity Based Cryptography) 與 無證書加密 (Certificateless Cryptography)

身份基礎加密 (Identity Based Cryptography, IBE)
基本架構:
Alice 想與 Bob 溝通,但沒有 Bob 的 CA Public Key,
所以,他們可以找一個值得信賴的 PKG 用作中間人,儲存加密金鑰。

首先,Bob 向 PKG 註冊自己的身份資料,PKG 就會為 Bob 建立一條非對稱金鑰,並將其公開金鑰放在列表中。當 Alice 想跟 Bob 聯絡,他就可以用 Bob 的身份資料,去查 PKG 的列表,然後取得 Bob 的公開金鑰。最後便可以跟 Bob 聯絡。

另一種玩法(例如 Boneh Franklin)就更簡單,Alice 只需要取得 PKG 的 key parameters,然後在其尾加上 Bob 的 ID (例如 email, 名字)和 timestamp,就直接可以當它做 public key 來用。而解密者只需要問 PKG 取得由 master key 計算出來的 private key 即可解密。[1]

這種做法有幾大好處:
  • Alice 不用儲存全世界人的金鑰,只需找一個 PKG 問它就可以。
  • Bob 不用將自己的公開金鑰告訴全世界,只需告訴 PKG 就可以。
  • 容易理解
 但有以下的壞處:
  • 如果 PKG 的私密金鑰或 master key 泄露,所有人都會受害 (Key Escrow Problem)
  • 當人越來越多,PKG 就需要更多儲存空間,存取時間也會變慢
  • 當 PKG 故障,新成員就不能加密 (Boneh Franklin 則不能解密)
所以,有人提出了無證書加密去解決 Key Escrow Problem。

無證書加密 (Certificateless Cryptography)
基本架構:
跟 IBC 幾乎一樣,只是再加多了一項 PubKey2。
PubKey2 是由 Bob 自己在本機產生,然後只給 PKG 知道公開鑰匙,所以理論上,即使有人破解了 PKG 的私鑰,也不能完全解開密文。事實上,無證書加密並不一定用以上方法。有部分人取走了 PubKey1 和 Private1 直接用,也有人選擇加一段 random string 去 PubKey 中間。

這種做法解決了:
  • Key Escrow Problem
 但同時也帶來了:
  • 金鑰產生速度可能更慢 
  • PKG 需要的空間可能更多
魚與熊掌,確實難以兩者兼得啊!

---

Reference:

[1] https://crypto.stanford.edu/~dabo/papers/bfibe.pdf