Skip to content

certtools/cryptopanwrapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CryptoPanWrapper

(Copyright 2018-2020 by L. Aaron Kaplan [email protected], all rights reserved)

TL;DR

This is a simple wrapper class around the following libraries:

What is Crypto-PAn?

Crypto-PAn stands for Cryptograpy-based prefix preserving Anonymization. Quoting from the original site:

"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. "

Note: technically speaking, what Crypto-PAn does, is actually pseudonymization of IP addresses. Since every IP address is mapped uniquely (1-1) onto another IP address (via AES encryption). Anonymization would be the process of mapping multiple IP addresses to the very same target IP address, efectively making the oringial IPs indistinguishable (non-reverse mappable).

So, for all purposes of GDPR, Crypto-PAn does pseudonymization. However, the original paper called it anonymization. We will use these two terms within this page synonimously (although it's actually wrong). Please just bear in mind that all we will be talkig about is actually meant to be pseudonymizaiton.

Implementations

Currently there are many implementations of the Crypto-PAn Algorithm:

The CryptoPanWrapper

This code wraps the different implementations and especially makes using David Stott's Lucent implementation useable via Python.

How to use it?

>>> from  CryptoPanWrapper import CryptoPanWrapper
>>> cp = CryptoPanWrapper(b'32-char-str-for-AES-key-and-pad.', use="yacryptopan")
>>> cp.anonymize('192.0.2.1') == '192.0.125.244')
>>> cp2 = CryptoPanWrapper(b'32-char-str-for-AES-key-and-pad.', use="pycryptopan")
>>> assert(cp2.anonymize('192.0.2.1') == '192.0.125.244')
>>> cp3 = CryptoPanWrapper(b'32-char-str-for-AES-key-and-pad.', use="cpp-cryptopan")
>>> cp3.anonymize('192.0.2.1')
...

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages