Virtual Ideal Functionality Framework is a framework for creating efficient and secure multi-party computations (SMPC). Players, who do not trust each other, participate in a joint computation based on their private inputs. The computation is done using a cryptographic protocol which allows them to obtain a correct answer without revealing their inputs. Operations supported include addition, multiplication, and comparison, all with Shamir secret shared outputs.
| Tags | Scientific/Engineering Mathematics Communications Security Cryptography Software Development Libraries Application Frameworks Python Modules |
|---|---|
| Operating Systems | OS Independent |
| Implementation | Python |
Recent releases


Changes: A major bug was fixed in the passive multiplication protocol in the case where 2t + 1 != n. Unit tests were updated for Python 2.6.


Changes: PyOpenSSL is now used instead of GnuTLS and this enables secure connections on Windows. The code dealing with starting a player has been made much more robust and players can now be started in any order. A player can now also be reliably shutdown. A new runtime based on homomorphic Paillier encryption supports just two players. A new protocol for equality testing with secret shared result was added.


Changes: The average time for a secure comparison was reduced by 60-70%. Comparisons now work with an actively secure multiplication protocol. A memory leak was fixed. The documentation has been converted to the new Sphinx format.


Changes: This release adds preliminary support for preprocessing and a multiplication protocol secure against active adversaries. The Runtime class has been split into several parts, and two new mixin classes provide different comparison protocols. Several coercion problems were fixed. The Runtime.callback method was renamed to Runtime.schedule_callback. VIFF was tested on Python 2.6, and some small problems were fixed. The installation guide was updated for Windows Vista.


Changes: This release implements a reliable Bracha broadcast that is secure against active adversaries. Sharings can now be asymmetric, which means that only a subset of the parties provide input. The open protocol is now also asymmetric, in the sense that only a subset of the parties receive the opened result. The behavior of field elements in Boolean expressions has been fixed. This means that "GF256(0) and GF256(1)" now returns GF256(0) instead of GF256(1). A modern implementation of the classic Yao millionaires example from 1982, which started this field of research, has been added.