CRGC – A Practical Framework for Constructing Reusable Garbled Circuits
In this work, we introduce two schemes to construct reusable garbled circuits (RGCs) in the semi-honest setting. Our completely reusable garbled circuit (CRGC) scheme allows the generator (party A) to construct and send an obfuscated boolean circuit along with an encoded input to the evaluator (Party B). In contrast to Yao's garbled circuit protocol, the evaluator can securely evaluate the same CRGC with an arbitrary number of inputs. As a tradeoff, CRGCs come with predictable input bit leakage. We also propose a partially reusable garbled circuit (PRGC) scheme that divides a circuit into reusable and non-reusable sections. PRGCs do not leak input bits of the generator. We benchmark our CRGC implementation against the state-of-the-art Yao's Garbled Circuit libraries EMP SH2PC and TinyGarble2. Using our framework, evaluating a CRGC is up to twenty times faster than evaluating an equivalent Yao's Garbled Circuit constructed by the two existing libraries. Our open-source library can convert any C++ function to an RGC at approx. 80 million gates per second and repeatedly evaluate a CRGC at approx. 350 million gates per second. Additionally, a compressed CRGC is approx. 75 unobfuscated boolean circuit.
READ FULL TEXT