VIFF, the Virtual Ideal Functionality Framework

News from the changelog:

Note: VIFF was conceived as an academic project and isn't actively developed for several years now. If you're just looking for a multiparty computation implementation, we recommend that you consider SPDZ.
The VIFF dog

VIFF is a framework which allows you to specify secure multi-party computations. Current features include:

VIFF is implemented in Python using Twisted and should run on any platform where Python runs (succesfully tested on Linux, Windows, and Mac OS X). Please see the installation guide for details on the requirements.

VIFF is Free Software, licensed under the GNU LGPL. This means that you can download and use it for free and modify it to suit your needs. You are free to redistribute your modifications as long as you do it together with the modified source. You are allowed to build applications (commercial or not) that use VIFF without having to license them under the LGPL.

Use Cases

VIFF allows you to do secure multi-party computations, in which a number of parties (three or more at the moment) execute a cryptographic protocol to do some joint computation. The computation could be anything, but elections and auctions are good examples of what you would want to do with secure multi-party computations (SMPC or simply MPC if it is implied that the protocol is secure).

Using VIFF your protocol is run without the players revealing anything about their inputs. So three millionaires can determine among themselves who has, say, the most money without revealing how much they are worth to one another. So they all learn who is richest, but nothing else.

The techniques for doing this involves computations on secret shared values, but the programmer can mostly ignore this when using VIFF. Please see the example programs included in the distribution below.


The latest version of the VIFF source code can be obtained using Mercurial by the command:

hg clone

or by browsing the repository online. There you can also subscribe to a RSS or Atom feed with updates.

The repository should be mostly stable (you can check the BuildBot if you are unsure) and a snapshot can be downloaded here:

We strongly recommand that you use viff-tip because the versions below don't work with current setups.

Please see the installation guide and the VIFF API documentation in addition to the documentation included in the files above.


Please post your questions and comments on VIFF to the VIFF-devel mailing list. Any question can be sent there — VIFF is still a little rough around the edges, so please ask for help if you cannot get VIFF working! The list is archived locally, at Gmane (where you can read/post over NNTP using a newsreader) and at The Mail Archive.

VIFF is developed by a small development team. Other contributors are very welcome! Please come to the mailing list and talk to us if you want to help in any way.