cfrg / draft-irtf-cfrg-voprf

Oblivious Pseudorandom Functions (OPRFs) using Prime-Order Groups
https://cfrg.github.io/draft-irtf-cfrg-voprf/#go.draft-irtf-cfrg-voprf.html
Other
39 stars 15 forks source link

Blinding blues #241

Closed chris-wood closed 3 years ago

chris-wood commented 3 years ago

Jarecki et al. have an upcoming paper at PKCS2021 that analyzes security properties of blinding mechanisms used in the 2HashDH construction. Recall, for the purposes of this issue, there are two types of blinding (using group notation to align with this specification, whereas their paper uses exponential notaton):

A generalized summary of their results, without accounting for particular application properties, is as follows.

The fundamental problem is as follows: additive blinding with a maliciously created z, i.e., one different than kG, gives the attacker a way of testing one input per OPRF interaction. Applications wherein this is possible regardless of the blinding mechanism, e.g., OPAQUE, are not affected (additive blinding is OK). However, for applications where this attacker capability does not otherwise exist, additive introduces a real weakness.

All in all, this means the choice of blinding mechanism has security implications. The draft should ideally offer a sane default for applications that know what they’re doing (see similar text in hash-to-curve), with options and guidance for applications in doing something different if their circumstances warrant it. In considering these defaults, there are a number of options on the table, accounting for code reuse, performance, and bandwidth.

Here’s what I propose we do to address this issue.

First, refactor the document slightly to permit different types of Blind and Unblind implementations. For example, Blind might be implemented using multiplicative, additive, or both types of blinding. While doing this, require that additive blinding always include the server public key in the Unblind output so that it’s folded into the Finalize computation. This would promote both types of blindings to the main part of the document, whereas additive blinding is currently specified in an appendix.

Second, map each mode to a particular implementation in the following way: