Cryfa
Developer(s) | Morteza Hosseini, Diogo Pratas, Armando J. Pinho |
---|---|
Stable release | 2.1
/ 2018 |
Written in | C++ |
Engine | |
Operating system | Unix, Linux, Mac OS X, Windows |
Type | Bioinformatics |
License | GPLv3 |
Website | http://github.com/pratas/cryfa |
Search Cryfa on Amazon.
Cryfa.[1] is an ultra-fast offline tool for secure storage of genomic data using authentication encryption with the Advanced Encryption Standard (AES) cypher. Cryfa handles several specific file formats, such as FASTA, FASTQ, BAM/SAM and VCF. For file types FASTA and FASTQ, Cryfa is able to compact FASTA/FASTQ sequences by a factor of 3. The Cryfa package includes a key generator for security enhancements. Cryfa uses multi-thread and supports pipes for easy integration with other tools and platforms.
Method phases[edit]
The method consists in three major phases:
- Packing: it groups symbols given a specific base that is automatically computed, compacting up to three times its storage.
- Shuffling: it randomizes the order of the symbols according to a Hash function of the password, originating a stream of pseudo-high complexity.
- Encrypting: it uses the AES cipher (Advanced Encryption Standard) with 128 bits, a pseudo-random initialization vector (IV) dependent of the password.
Resistance to attacks[edit]
There are several attacks which Cryfa is resistant, nevertheless, for genomic data, the most critic are addressed:
- KPA - Known-plaintext attack: given the shuffling phase, Cryfa change the order of the expected content and structure. For example, the VCF usually begins with a "##fileformat=VCF" pattern, which enables an effective Brute-force attack attack to weak passwords.
- Low complexity attacks: given the packing and shuffling phases, Cryfa transforms the data into pseudo-high complexity data [2]
- Kolmogorov complexity attacks: species genomes are related with a certain algorithmic and statistical entropy [3]. Cryfa does not compress the data given its redundancy, but rather minimizes its representativity. Therefore, attacks exploring the authentication through redundancy are not effective.
Installation[edit]
Use the following commands:
git clone https://github.com/pratas/cryfa.git
cd cryfa
cmake .
make
Usage[edit]
./cryfa [OPTION]... -k [KEY_FILE] [-d] [IN_FILE] > [OUT_FILE]
Example[edit]
Encryption:
./cryfa -k pass.txt in.fq > comp
Decryption:
./cryfa -k pass.txt -d comp > orig.fq
License[edit]
Cryfa is under GPL v3 license.
References[edit]
- ↑ Hosseini M, Pratas D, Pinho AJ (July 2018). "Cryfa: a secure encryption tool for genomic data". Bioinformatics. doi:10.1093/bioinformatics/bty645. PMID 30020420.
- ↑ Bouillaguet, C. (2012). "Low-data complexity attacks on AES". IEEE Transactions on Information Theory. 58 (11): 7002–7017. CiteSeerX 10.1.1.295.9517. doi:10.1109/TIT.2012.2207880.
- ↑ Pratas D, Pinho AJ (May 2017). On the Approximation of the Kolmogorov Complexity for DNA Sequences. Alexandre L., Salvador Sánchez J., Rodrigues J. (eds) Pattern Recognition and Image Analysis. IbPRIA 2017. Lecture Notes in Computer Science, Vol 10255. Springer, Cham. Lecture Notes in Computer Science. 10255. pp. 259–266. doi:10.1007/978-3-319-58838-4_29. ISBN 978-3-319-58837-7. Search this book on
This article "Cryfa" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Cryfa. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.