---
# System prepended metadata

title: '不經意傳輸（Oblivious Transfer, OT）'
tags: [cryptography]

---

# 不經意傳輸（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)
> 隨手筆記，有錯誤或需要補充的部分歡迎討論，~~還請鞭小力一點~~