# 不經意傳輸(Oblivious Transfer, OT)
不經意傳輸是一種兩方安全計算協議(Two-Party Computation)。發送者(Sender擁有一組數據,接收者(Receiver選擇其中一項進行接收。協議保證接收者能且僅能收到他選擇的那一項數據,同時發送者不知道接收者具體選擇了哪一項
OT想解決的問題:如何在保護接收者意圖(選擇了什麼)與保護發送者隱私(未被選擇的數據不洩漏)的前提下交換資訊
## OT的核心
OT通常以 $OT_k^N$ 表示,意即從$N$個輸入中選擇 $k$ 個。最基礎的模型為1-out-of-2 OT($OT_1^2$)。一個標準的 $OT_1^2$ 協議包含兩個參與者與以下階段:
1. 輸入(Inputs):發送者$S$擁有兩個消息 $(m_0, m_1)$,接收者 $R$ 擁有一個選擇位元 $\sigma \in \{0, 1\}$
1. 傳輸(Transfer):雙方執行交互協議
1. 輸出(Outputs):接收者$R$得到 $m_\sigma$;發送者$S$什麼都沒得到(Output is $\bot$)
以$OT_1^2$為例的抽象流程:
1. 發送者 $S$ 生成公鑰或相關參數傳送給 $R$
1. 接收者 $R$ 根據選擇位元 $\sigma$ 生成加密的查詢$Q$傳送給 $S$。此查詢對於 $S$ 來說是盲(Blind)的
1. 發送者 $S$ 利用 $Q$ 對 $m_0$ 和 $m_1$ 分別進行處理,產生 $c_0, c_1$ 回傳給$R$
1. 接收者 $R$ 利用私鑰資訊解密 $c_\sigma$ 得到 $m_\sigma$
過程中 $R$ 無法解密 $m_{1-\sigma}$,且 $S$ 無法分辨 $R$ 到底選擇了0還是1
## OT的性質
**正確性(Correctness)**
如果發送者與接收者都誠實執行協議,對於任意的輸入 $(m_0, m_1)$ 和 $\sigma$,接收者最終輸出的結果必然是 $m_\sigma$。即 $Output_R = m_\sigma$ 恆成立
**安全性(Security)**
OT的安全性主要包含兩個面向(Privacy):
1. 接收者隱私(Receiver Privacy):
發送者無法從協議過程中區分接收者的選擇$\sigma$。即對於發送者而言,$\sigma=0$與$\sigma=1$的視圖(View)是計算上不可區分的(Computationally Indistinguishable)
1. 發送者隱私(Sender Privacy):
接收者除了 $m_\sigma$ 之外,無法獲得關於 $m_{1-\sigma}$ 的任何資訊
**安全性模型分類**
1. 信息論安全(Information Theoretic Security):
即使攻擊者擁有無限計算能力也無法破解。但在標準模型下這通常需要假設噪聲信道
1. 計算安全(Computational Security):
基於密碼學困難假設(如 DDH, RSA, Factoring)。Naor-Pinkas 論文即是探討在此模型下的高效構建
## OT的運作機制
計算安全的OT協議通常建立在公鑰密碼學的困難問題上。以基於離散對數(Discrete Logarithm)的機制為例:
**密鑰盲化(Key Blinding):**
* 機制:接收者生成兩個公鑰 $PK_0, PK_1$。其中一個是他知道私鑰的(對應 $\sigma$),另一個是他不知道私鑰的(隨機生成或由發送者參數推導,確保無法解密)
* 隱匿性:發送者看到的 $PK_0, PK_1$ 在分佈上看起來是一樣的,無法分辨哪一個是接收者真正持有的
**雙重加密傳輸:**
* 機制:發送者使用 $PK_0$ 加密 $m_0$,使用 $PK_1$ 加密 $m_1$
* 結果:接收者只能用手中的私鑰解密其中一個密文,另一個密文因為沒有對應私鑰,在計算上無法解密
**隨機預言機與優化(Random Oracle & Optimization):**
* 為了提升效率,現代OT(如Naor-Pinkas)常結合對稱加密。使用公鑰操作交換種子(Seed),再用種子作為密鑰對大數據進行對稱加密,減少昂貴的公鑰運算
## OT的限制
OT是安全多方計算(MPC)的基礎(如用於Yao's Garbled Circuits),但存在以下成本與限制:
**計算成本(Computational Overhead)**
OT涉及公鑰密碼學操作(Exponentiation),運算速度遠慢於對稱加密。若是傳輸大量數據,直接使用公鑰 OT會非常慢
**通信開銷(Communication Complexity)**
即使接收者只想要其中1個,但發送者總需要傳送所有候選數據的密文(例如傳送$N$個密文),導致通信量至少是$O(N)$
**擴展性問題(OT Extension)**
基礎OT無法直接大量併發使用。解決方法是使用OT Extension技術,利用少量(如128次)基礎公鑰OT作為種子,配合快速的哈希函數與對稱加密,擴展出數百萬次OT
## 常見OT協議與分類
| 協議類型 | 定義 | 特點 | 適用場景 |
| -------- | -------- | -------- | -------- |
| 1-out-of-2 OT ($OT_1^2$) | 最基本的OT | 從兩個消息中選一個 | 混淆電路(Garbled Circuits)的輸入導線 |
| 1-out-of-N OT ($OT_1^N$) | 從N個中選一個 | 通信複雜度通常隨N線性增長 | 私有信息檢索(PIR)、資料庫查詢 |
| k-out-of-N OT ($OT_k^N$) | 從N個中選k個 | 允許批量選擇,Naor-Pinkas 提出了比重複k次更高效的解法 | 批量數據檢索 |
| Adaptive OT | 自適應 OT | 接收者可以分次進行查詢,後一次的選擇可以依賴前一次的結果 | 多輪交互式計算 |
## 參考資料
1. [OT(Oblivious Transfer,不经意传输)协议详解](https://zhuanlan.zhihu.com/p/424202269)
2. [Computationally Secure Oblivious Transfer](https://link.springer.com/content/pdf/10.1007/s00145-004-0102-6.pdf)
> 隨手筆記,有錯誤或需要補充的部分歡迎討論,~~還請鞭小力一點~~