# Bibliography {#bibliography} Each paper is listed once. An ePrint number anywhere else in the manual links here. **Used in** points back at the pages that rely on that paper. ePrint PDFs that IACR posts are cached next to these pages. Publisher PDFs from Springer, ACM, and USENIX are not. [Point functions](@ref bib_sec_point) · [Generation and OT](@ref bib_sec_ot) · [Comparisons and proofs](@ref bib_sec_cmp) · [Three parties](@ref bib_sec_three) · [Grotto](@ref bib_sec_grotto) · [Protocols](@ref bib_sec_protocols) ## Point functions and trees {#bib_sec_point} ### Improvements and extensions {#bib_fss2018} Elette Boyle, Niv Gilboa, and Yuval Ishai. *Function Secret Sharing: Improvements and Extensions.* ACM CCS 2016, pp. 1292–1303. Full version, 24 July 2018. [ePrint 2018/707](https://eprint.iacr.org/2018/707) · PDF The point-function key `make_dpf` follows. Remark 3.4 is the early-stop packing: the last `ν = log2(λ / log2|G|)` levels are a lane inside the leaf, not correction words. **Used in** [First program](@ref basics) · [Evaluation](@ref evaluation) · [Guided tour](@ref tour_eval) ### Function Secret Sharing (2015) {#bib_fss2015} Elette Boyle, Niv Gilboa, and Yuval Ishai. *Function Secret Sharing.* EUROCRYPT 2015, LNCS 9057, pp. 337–367. Publisher The `4n(λ+1)`-bit key named in the manual, as recorded in the bibliography of ePrint 2018/707. This library does not generate that key. **Used in** [First program](@ref basics) · [Evaluation](@ref evaluation) ### Half-Tree {#bib_halftree} Xiaojie Guo, Kang Yang, Xiao Wang, Wenhao Zhang, Xiang Xie, Jiang Zhang, and Zheli Liu. *Half-Tree: Halving the Cost of Tree Expansion in COT and DPF.* [ePrint 2022/1431](https://eprint.iacr.org/2022/1431) · PDF `prg::aes128_ccr` selects their dealer point-key expand. Section 5.2 is a different object: two-party key generation in the COT/OLE hybrid. **Used in** [First program](@ref dpf_trees) · [Evaluation](@ref evaluation) · [Guided tour](@ref tour_trees) ### Information-theoretic DPF {#bib_itdpf} Elette Boyle, Niv Gilboa, Yuval Ishai, and Victor I. Kolobov. *Information-Theoretic Distributed Point Functions.* [ePrint 2023/028](https://eprint.iacr.org/2023/028) · PDF A statistically private 3-server DPF. `make_it_dpf3` is the additive interface on a `uint8_t` domain, not the 2-party PRG key. **Used in** [Multiparty](@ref multiparty) · [Three-server PIR](@ref app_pir3) · [Evaluation](@ref it_dpf3) ### Distributed point functions (2014) {#bib_dpf2014} Niv Gilboa and Yuval Ishai. *Distributed Point Functions and Their Applications.* EUROCRYPT 2014, LNCS 8441, pp. 640–658. Publisher Two-server keyword PIR from a point function on the keyword. **Used in** [Keyword PIR](@ref app_keyword) ## Generation and oblivious transfer {#bib_sec_ot} ### Scaling ORAM {#bib_ds} Jack Doerner and abhi shelat. *Scaling ORAM for Secure Computation.* ACM CCS 2017, pp. 523–535. [ePrint 2017/827](https://eprint.iacr.org/2017/827) · PDF The per-level correction-word opening. `geneval_*` uses that opening on the public query and does not return their reusable key. Floram's secret read and write are the same opening. **Used in** [Dealer-free keygen](@ref dealer_free) · [Guided tour](@ref tour_ds) · [Floram](@ref app_floram) ### IKNP OT extension {#bib_iknp} Yuval Ishai, Joe Kilian, Kobbi Nissim, and Erez Petrank. *Extending Oblivious Transfers Efficiently.* CRYPTO 2003, LNCS 2729, pp. 145–161. Publisher The semi-honest OT extension `dpf::iknp::sample` follows: κ base OTs, then a correlation-robust hash of the transposed matrix. IKNP is these four authors. **Used in** [Dealer-free keygen](@ref dealer_free) · [Guided tour](@ref tour_iknp) ### Simplest OT {#bib_chou} Tung Chou and Claudio Orlandi. *The Simplest Protocol for Oblivious Transfer.* LATINCRYPT 2015. Full version: [ePrint 2015/267](https://eprint.iacr.org/2015/267) · PDF The P-256 base OT under `dpf::iknp` (`base_sender` / `base_receiver`). **Used in** [Guided tour](@ref tour_iknp) ### AES S-box circuit {#bib_boyar} Joan Boyar and René Peralta. *A depth-16 circuit for the AES S-box.* [ePrint 2011/332](https://eprint.iacr.org/2011/332) · PDF The 32-AND SubBytes used by `party/oblivious_hash.hpp` (`aes_bp::and_count = 32`). **Used in** [Guided tour](@ref tour_iknp) · [Evaluation](@ref evaluation) ## Comparisons, proofs, and products {#bib_sec_cmp} ### Mixed-mode FSS {#bib_dcf} Elette Boyle, Nishanth Chandran, Niv Gilboa, Divya Gupta, Yuval Ishai, Nishant Kumar, and Mayank Rathee. *Function Secret Sharing for Mixed-Mode and Fixed-Point Secure Computation.* EUROCRYPT 2021, LNCS 12697, pp. 871–900. [ePrint 2020/1392](https://eprint.iacr.org/2020/1392) · PDF The distributed comparison function, and Figure 3's one-DCF public interval. **Used in** [Comparisons](@ref comparisons) · [Evaluation](@ref evaluation) · [Guided tour](@ref tour_dcf) ### Verifiable FSS {#bib_vdpf} Leo de Castro and Antigoni Polychroniadou. *Lightweight, Maliciously Secure Verifiable Function Secret Sharing.* EUROCRYPT 2022, pp. 150–179. [ePrint 2021/580](https://eprint.iacr.org/2021/580) · PDF The 4λ-bit correction seeds and 2λ-bit proof token, and §4's κ = 3 cuckoo packing. `make_multipoint` follows this GGM multi-point. S&P 2025 (Boyle, Gilboa, Hamilis, Ishai, and Tu) packs those bucket keys from a PCG seed. That packing is not a `multipoint_params` tweak and is not implemented here. **Used in** [Verifiability](@ref verifiability) · [Multipoint](@ref multipoint_keys) · [Keyword PIR](@ref app_keyword) · [PSI](@ref app_psi) ### ABY2.0 {#bib_aby2} Arpita Patra, Thomas Schneider, Ajith Suresh, and Hossein Yalame. *ABY2.0: Improved Mixed-Protocol Secure Two-Party Computation.* USENIX Security 2021. Full version: [ePrint 2020/1225](https://eprint.iacr.org/2020/1225) · PDF One public reconstruction per newly opened wire. **Used in** [Beaver triples](@ref beaver_triples) · [Arithmetic share runtime](@ref arith_runtime) · [Guided tour](@ref tour_beaver) ### ABY {#bib_aby} Daniel Demmler, Thomas Schneider, and Michael Zohner. *ABY — A Framework for Efficient Mixed-Protocol Secure Two-Party Computation.* NDSS 2015. [ePrint 2014/386](https://eprint.iacr.org/2014/386) Arithmetic / boolean / Yao sharing and conversions. **Used in** [Arithmetic share runtime](@ref arith_runtime) · [A boolean function of a leaf](@ref yao_leaf) ### Half-gates {#bib_halfgates} Samee Zahur, Mike Rosulek, and David Evans. *Two Halves Make a Whole: Reducing Data Transfer in Garbled Circuits using Half Gates.* EUROCRYPT 2015. [ePrint 2014/756](https://eprint.iacr.org/2014/756) Free-XOR AND rows. `yao::session` sends two blocks per AND. **Used in** [A boolean function of a leaf](@ref yao_leaf) · [Arithmetic share runtime](@ref arith_runtime) ### Garbling gadgets {#bib_garble_gadgets} Marshall Ball, Tal Malkin, and Mike Rosulek. *Garbling Gadgets for Boolean and Arithmetic Circuits.* CCS 2016. [ePrint 2016/969](https://eprint.iacr.org/2016/969) Free addition and public scaling in `(Z_m)^k`, and a unary projection of `m − 1` ciphertexts. A fan-in-`b` symmetric gate is a projection of the sum. `arith_garble.hpp` is this gadget. The session in `beaver.hpp` stays the interactive one-open product. **Used in** [Beaver triples](@ref beaver_triples) · [Arithmetic share runtime](@ref arith_runtime) ### Stacked garbling {#bib_stacked} David Heath and Vladimir Kolesnikov. *Stacked Garbling: Garbled Circuit Proportional to Longest Execution Path.* CRYPTO 2020. [ePrint 2020/973](https://eprint.iacr.org/2020/973) One XOR-stack of the branch materials. Inactive branches are rebuilt from seeds. **Used in** [A boolean function of a leaf](@ref yao_leaf) ### One-hot garbling {#bib_onehot} David Heath and Vladimir Kolesnikov. *One Hot Garbling.* CCS 2021. The same stack over `k` branches. The demux carries the inactive seeds. **Used in** [A boolean function of a leaf](@ref yao_leaf) ### FLUTE {#bib_flute} Andreas Brüggemann, Robin Hundt, Thomas Schneider, Ajith Suresh, and Hossein Yalame. *FLUTE: Fast and Secure Lookup Table Evaluations.* IEEE S&P 2023. [ePrint 2023/499](https://eprint.iacr.org/2023/499) A public LUT is a multi-fan-in inner product on ABY2.0 masked bits. Online cost is two bits per output bit. **Used in** [Beaver triples](@ref beaver_triples) · [Arithmetic share runtime](@ref arith_runtime) ### ABY3 {#bib_aby3} Payman Mohassel and Peter Rindal. *ABY3: A Mixed Protocol Framework for Machine Learning.* CCS 2018. [ePrint 2018/403](https://eprint.iacr.org/2018/403) Honest-majority 3PC, RSS, probabilistic truncation, matrix triples. **Used in** [Arithmetic share runtime](@ref arith_runtime) ### edaBits / CrypTFlow2 {#bib_edabits} Daniel Escudero, Satrajit Ghosh, Marcel Keller, Rahul Rachuri, and Peter Scholl. *Improved Primitives for MPC over Mixed Arithmetic-Binary Circuits.* CRYPTO 2020. [ePrint 2020/338](https://eprint.iacr.org/2020/338) **Used in** [Arithmetic share runtime](@ref arith_runtime) · [A boolean function of a leaf](@ref yao_leaf) ### EzPC {#bib_ezpc} Nishanth Chandran, Divya Gupta, Aseem Rastogi, Rahul Sharma, and Shardul Tripathi. *EzPC: Programmable and Efficient Secure Two-Party Computation for Machine Learning.* EuroS&P 2019. [ePrint 2017/1109](https://eprint.iacr.org/2017/1109) **Used in** [Arithmetic share runtime](@ref arith_runtime) ### Gilboa multiplication {#bib_gilboa} Niv Gilboa. *Two Party RSA Key Generation.* CRYPTO 1999, LNCS 1666, pp. 116–129. **Used in** [Arithmetic share runtime](@ref arith_runtime) ### Sharemind {#bib_sharemind} Dan Bogdanov, Sven Laur, and Jan Willemson. *Sharemind: A Framework for Fast Privacy-Preserving Computations.* ESORICS 2008, LNCS 5283, pp. 192–206. **Used in** [Arithmetic share runtime](@ref arith_runtime) ### Beaver triples {#bib_beaver} Donald Beaver. *Efficient Multiparty Protocols Using Circuit Randomization.* CRYPTO 1991, LNCS 576, pp. 420–432. Publisher The two-opening product triple, not the ABY2.0 session. **Used in** [Beaver triples](@ref beaver_triples) · [Guided tour](@ref tour_beaver) ### Bit commitment {#bib_naor} Moni Naor. *Bit Commitment Using Pseudorandomness.* Journal of Cryptology 4(2), 1991, pp. 151–158. Publisher `dpf::ppvc` binds each DPF root with this string commitment: `G(r) XOR A*rho`, under a public matrix `A`. **Used in** [Programmable vectors](@ref ppvc_manual) ## Three evaluators {#bib_sec_three} ### Three-party DPF {#bib_dpf3} Guy Zyskind, Avishay Yanai, and Alex "Sandy" Pentland. *High-Throughput Three-Party DPFs with Applications to ORAM and Digital Currencies.* [ePrint 2024/1658](https://eprint.iacr.org/2024/1658) · PDF Figure 3: each evaluator key is a pair of (2,2)-VDPF+ keys. **Used in** [Multiparty](@ref multiparty) · [Guided tour](@ref tour_dpf3) · [Three-server PIR](@ref app_pir3) · [(2,3) ledger](@ref app_ledger23) ## Grotto {#bib_sec_grotto} ### Grotto {#bib_grotto} Kyle Storrier, Adithya Vadapalli, Allan Lyons, and Ryan Henry. *Grotto: Screaming fast (2+1)-PC for Z2n via (2,2)-DPFs.* [ePrint 2023/108](https://eprint.iacr.org/2023/108) · PDF Prefix parity along one key, and Appendix D's degree-0 exact tables. Offset Horner is not that piecewise-polynomial construction. **Used in** [Grotto](@ref jet_and_ring) · [Guided tour](@ref tour_grotto) ### Wave Hello {#bib_wave} José Reis, Mehmet Ugurbil, Sameer Wagh, Ryan Henry, and Miguel de Vega. *Wave Hello to Privacy: Efficient Mixed-Mode MPC using Wavelet Transforms.* PoPETs 2025(2), pp. 697–718. Publisher · [ePrint 2025/013](https://eprint.iacr.org/2025/013) · PDF Equations (7) and (8) are the cleartext Haar and bior(5,3) lookup. `make_haar_dwt_lut` and `make_bior53_dwt_lut` evaluate those tables. The online phase pairs Haar with a deterministic Pika truncation and bior(5,3) with segment parity. **Used in** [Wavelet lookup tables](@ref dwt_luts) · [Guided tour](@ref tour_grotto) ## Protocols {#bib_sec_protocols} ### Duoram {#bib_duoram} Adithya Vadapalli, Ryan Henry, and Ian Goldberg. *Duoram: A Bandwidth-Efficient Distributed ORAM for 2- and 3-Party Computation.* USENIX Security 2023. USENIX The 3-party read and update: unit DPFs at a random index, a cyclic shift by the opened offset, and a dot product with the memory. **Used in** [3-party Duoram](@ref app_duoram) ### BitMore {#bib_bitmore} Syed Mahbub Hafiz and Ryan Henry. *A Bit More Than a Bit Is More Than a Bit Better.* PoPETs 2019(4), pp. 112–131. Publisher Section 5.2 is the `2^L`-server query: `L` independent 1-bit DPFs, one key per label bit. **Used in** [BitMore](@ref app_bitmore) ### Prio {#bib_prio} Henry Corrigan-Gibbs and Dan Boneh. *Prio: Private, Robust, and Scalable Computation of Aggregate Statistics.* NSDI 2017, pp. 259–282. USENIX The frequency count is a one-hot encoding. `dpf::field64` is this paper's Field64, via libprio. **Used in** [Prio](@ref app_prio) ### Poplar {#bib_poplar} Dan Boneh, Elette Boyle, Henry Corrigan-Gibbs, Niv Gilboa, and Yuval Ishai. *Lightweight Techniques for Private Heavy Hitters.* [ePrint 2021/017](https://eprint.iacr.org/2021/017) The incremental DPF on prefixes of one secret string. EvaluateUntil is `eval_until`. Mastic is this prefix walk with a weight payload. **Used in** [Prio](@ref app_prio) · [I-DPF max and k-th](@ref app_idpf_agg) · [Mastic](@ref app_mastic) · [Guided tour](@ref tour_eval) ### Incremental aggregation {#bib_idpfagg} Nan Cheng, Aikaterini Mitrokotsa, Feng Zhang, and Frank Hartmann. *Efficient Two-Party Secure Aggregation via Incremental Distributed Point Function.* [ePrint 2024/1190](https://eprint.iacr.org/2024/1190) Communication tracks the bit length of the domain. The max and k-th walks are `idpf_agg_max` and `idpf_agg_kth`. **Used in** [I-DPF max and k-th](@ref app_idpf_agg) ### LLAMA {#bib_llama} Kanav Gupta, Deepak Kumaraswamy, Nishanth Chandran, and Divya Gupta. *LLAMA: A Low Latency Math Library for Secure Inference.* [ePrint 2022/793](https://eprint.iacr.org/2022/793) Offset comparison and spline gates. **Used in** [LLAMA](@ref app_llama) ### Pika {#bib_pika} Sameer Wagh. *Pika: Secure Computation using Function Secret Sharing over Rings.* PoPETs 2022(4), pp. 351–377. Publisher Figure 1 is the unit-DPF table lookup. **Used in** [Pika](@ref app_pika) ### Express {#bib_express} Saba Eskandarian, Henry Corrigan-Gibbs, Matei Zaharia, and Dan Boneh. *Express: Lowering the Cost of Metadata-hiding Communication with Cryptographic Privacy.* USENIX Security 2021, pp. 1775–1792. USENIX Section 3.1 is the DPF mailbox write. **Used in** [Express](@ref app_express) · [Sabre](@ref app_sabre) ### PRAC {#bib_prac} Sajin Sasy, Adithya Vadapalli, and Ian Goldberg. *PRAC: Round-Efficient 3-Party MPC for Dynamic Data Structures.* [ePrint 2023/1897](https://eprint.iacr.org/2023/1897) One incremental DPF replaces the `lg n` point keys of a binary search. A wide leaf updates a heap node and both children. **Used in** [PRAC](@ref app_prac) ### Splinter {#bib_splinter} Frank Wang, Catherine Yun, Shafi Goldwasser, Vinod Vaikuntanathan, and Matei Zaharia. *Splinter: Practical Private Queries on Public Data.* NSDI 2017. USENIX A unit DPF selects one public group. The server dots that selector with a pre-aggregated column. **Used in** [Splinter](@ref app_splinter) ### Waldo {#bib_waldo} Emma Dauterman, Mayank Rathee, Raluca Ada Popa, and Ion Stoica. *Waldo: A Private Time-Series Database from Function Secret Sharing.* IEEE S&P 2022. [ePrint 2021/1661](https://eprint.iacr.org/2021/1661) Append-only unit DPFs, and a comparison inner product for a secret threshold. **Used in** [Waldo](@ref app_waldo) ### Sabre {#bib_sabre} Adithya Vadapalli, Kyle Storrier, and Ryan Henry. *Sabre: Sender-Anonymous Messaging with Fast Audits.* IEEE S&P 2022. The write is Express's full-domain add. The audit is a verifiable DPF proof instead of Express's `fp61` sketch. **Used in** [Sabre](@ref app_sabre) ### Batched OPRF / PSI {#bib_kkrt} Vladimir Kolesnikov, Ranjit Kumaresan, Mike Rosulek, and Ni Trieu. *Efficient Batched Oblivious PRF with Applications to Private Set Intersection.* ACM CCS 2016. [ePrint 2016/799](https://eprint.iacr.org/2016/799) Membership as an oblivious PRF. On this domain the PRF table is public and each receiver element is a unit DPF. **Used in** [Private set intersection](@ref app_psi) ### Private SUBLEQ {#bib_subleq} Jiang and Henry. MSc thesis, University of Calgary. A subtract-and-branch instruction for private function evaluation. The DPF work is a prepaid wildcard unit vector, rotated once the address is opened. **Used in** [MPC SUBLEQ](@ref app_subleq) \htmlonly