Name: cryptopanlib
Owner: CERT-Tools
Description: Version of David Stott's Lucent Crypto-PAn lib: useable for Python ctypes loading
Created: 2018-05-23 22:17:26.0
Updated: 2018-05-23 22:39:19.0
Pushed: 2018-05-23 22:24:38.0
Homepage: null
Size: 12
Language: C++
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Version of David Stott's Lucent Crypto-PAn lib: useable for Python ctypes loading
This README describes a modification of the Lucent C++ Implementation by David Stott of CryptoPAn. You can find the original Lucent's extension at https://www.cc.gatech.edu/computing/Networking/projects/cryptopan/lucent.shtml
These changes were done by Aaron Kaplan kaplan@cert.at
Aaron Kaplan's Code is released under an AGPL license version 3 or higher. The other parts of the code remain at their original copyright. Please see the headers in each file.
You will need
apt-get install libssl-dev
(https://packages.debian.org/stretch/libssl-dev)apt-get install build-essential
Type “make”
Test via:
thon panonymize.py
ed cryptopanlib @ <CDLL 'cryptopanlib.so', handle 56058db404f0 at 0x7faaaaaaa278>
ypted 100000 ints in 1.541809320449829 seconds. rate = 64858.863332610155
Copy the cryptopanlib.so to the place where you need it.
This code was tested under Debian Stretch. It does not work on OS X yet.
All bug reports should go to kaplan@cert.at please.
— snip — original README attached below — snip —-
This is an implementation of the cryptography based prefix-preserving trace anonymization technique described in “Prefix-Preserving IP Address Anonymization: Measurement-based Security Evaluation and a New Cryptography- based Scheme” authored by Jun Xu, Jinliang Fan, Mostafa Ammar and Sue Moon. In this implementation, we use Rijndael cipher(AES algorithm) as underlying pseudorandom function.
The package contains following files
README this file DISCLAIMER standard disclaimer rijndael.h rijndael.cpp Szymon Stefanek(stefanek@tin.it)'s C++ implementation of the
Rijndael cipher(now becomes AES) based on Vincent Rijmen and
K.U.Leuven implementation 2.4.
panonymizer.h panonymizer.cpp Our implementation of the prefix-preserving IP anonymizer
using Rijndael cipher as pseudorandom function. The two files
implement class PAnonymizer. Class PAnonymizer needs a 256-bit
key for initialization before being used to anonymize IP
addresses in prefix-preserving manner.
sample.cpp This is a sample program to illustrate the use of class
PAnonymizer. The program reads in an example trace file
"sample_trace_raw.dat", anonymizes the IP addresses in the
trace file, and output the sanitized trace file to the
standard out. You can redirect the output to a file if you
like. The key in the file are settable.
sample_trace_raw.dat This is an example raw trace file. Each line of the
trace is in the format of "time packetsize a.b.c.d", where
"a.b.c.d" is IP address. The sanitized trace has the same
format, preserving everything except the IP addresses, which
are anonymized.
sample_trace_anonymized.dat This is the output when running the sample
program upon "sample_trace_raw.dat".
Makefile The makefile to generate “sample”, the executable of
sample.cpp.
To compile the sample program “sample.cpp”, run
make all
To run the sample program, run
sample sample_trace_raw.dat
The sanitized version of “sample_trace_raw.dat” is wrote to standard output. You can redirect the output to a file and compare it with file “sample_trace_anonymized.dat”. They should be the same.
To sanitize your own traces, you need to change file “sample.cpp” to reflect your trace formats. You also need to provide your own 256-bit key in the program when creating an instance of class PAnonymizer.
Please contact Jinliang Fan(jlfan@cc.gatech.edu) if you have questions about the programs. Your comments are highly appreciated.