C C++
Latest commit 21fdcc2 Nov 18, 2012 @secYOUre removed dead code
Failed to load latest commit information.
design
include/encounter
src removed dead code Nov 18, 2012
test
AUTHORS
COPYING
Makefile
README
THANKS
TODO

README

                                                         ooo   ooo
                                                        d77Cb d0C0b 
encounter - cryptocounters for our PETs             ooo B133F 644E6 ooo
=======================================            dFE0b YD1P Y48P dD5Eb
                                                   E4BC9  '`   `'  0D1A1
                                                    YCP' .od2F5bo. 'Y0P
                                                      .od7D0EE7258bo.
                                                     dE1B1BE55D161570b
Copyright (c) 2006-2011 - Alfonso De Gregorio        AFB9AF979D8A55062
<adg@crypto.lo.gy>, secYOUre by SecurityPillar Ltd -  Y6F910654DD322P
All rights reserved.                                   `Y84DP"Y825P'


Encounter is a software library aimed at providing a production-grade
implementation of cryptographic counters and fostering further research
on their constructions and applications.

A cryptographic counter is a public string representing an encryption 
of a quantity, satisfying the following properties:

1. Subjects with access to the *public-key* can update the 
   encrypted counter by an arbitrary amount, by means of increment
   or decrement operations and without first decrypting the value 
   (i.e., the operation is performed over encrypted data);

2. The plaintext value is hidden from all participants except the entity
   holding some secret key;

3. The adversary can only learn if the cryptographic counter was
   updated (i.e., information about whether the counter was incremented
   or decremented is kept hidden to all participants except the
   secret-key holder and the updating entity -- honest-but-curious
   threat model).


Applications
============

Possible applications of cryptographic counters include:

- Privacy-preserving statistics gathering in a honest-but-curious 
  threat-model;
- Secure electronic voting;
- Digital Rights Management.



Mechanisms
==========

Encounter will support a number of cryptocounters schemes, with 
different security/performance trade-offs. 

To date, Encounter implements a cryptocounter based on the Paillier 
public-key cryptographic scheme - please, see below the credits section.

The Paillier PKCS is additive homomorphic cryptosystem providing
semantic security against chosen-plaintext attacks (IND-CPA)
<http://en.wikipedia.org/wiki/Paillier_cryptosystem>

Encounter provides a mean to diminish the possibility of correlations.
In fact, users can probabilistically re-encrypt Paillier-based 
cryptocounter without changing the underlying value. Please, refer to
function encounter_touch().



Credits
=======

The Paillier-based cryptocounter code is based on the implementation by
Adam Young and Moti Yung in their clever Malicious Cryptography and the
upcoming Advances in Cryptovirology <http://www.cryptovirology.com/>


Encounter implements a speed-up technique described in Paillier's

'Public-Key Cryptosystems Based on Composite Degree Residuosity Classes'
   Published in J. Stern, Ed., Advances in Cryptology  EUROCRYPT 99,
   vol. 1592 of Lecture Notes in Computer Science, pp. 223-238,
   Springer-Verlag, 1999.

 
For More
========

-  Encounter <http://plaintext.crypto.lo.gy/article/658/encounter>