Difference between revisions of "Team:Tsinghua-A/Encryption"

(Created page with "{{Tsinghua-A}} <html> <head> <link rel="stylesheet" href="https://2019.igem.org/Template:Tsinghua-A/CSSTest?action=raw&ctype=text/css"> </head> <body> <section style="backg...")
 
Line 148: Line 148:
 
 
 
</div>
 
</div>
</div>
 
 
</section>
 
</section>
 
<div style="text-align: center;width:100%;height:auto;background-image:url(https://static.igem.org/mediawiki/2019/0/04/T--Tsinghua-A--background_long-main.jpg);"></div>
 
<div style="text-align: center;width:100%;height:auto;background-image:url(https://static.igem.org/mediawiki/2019/0/04/T--Tsinghua-A--background_long-main.jpg);"></div>
Line 155: Line 154:
 
</body>
 
</body>
  
 
</body>
 
 
</html>
 
</html>

Revision as of 03:51, 22 October 2019

 

 

Introduction

For its high storage density and stability, we can expect that DNA storage will be mainly and widely used by enterprise users and governments. And they care most is safety.

In a DNA storage system, hackers may steal information from storage end, receiving end or transmission channel. So in our project, we use two encryption strategies to protect the data stored in DNA.

Theory

Symmetric-key cryptography

Symmetric-key cryptography system uses a same key for encryption and decryption. In such an algorithm, only those who own the key can encrypt plaintext or decrypt ciphertext. Once your key is hacked, hackers can decrypt ciphertext and get your data, too. However, instead of stealing the key itself, hackers have many other ways to infer you key when you are using a static key, such as known-plaintext attacks, chosen-plaintext attacks, differential cryptanalysis and linear cryptanalysis. For example, if hackers get several plaintext-ciphertext pairs, it's easy for them to infer your key and your encryption algorithm.

In order to prevent those attacks listed above, we build a dynamic symmetric-key cryptography system to encrypt our plaintext and protect DNA fountain process using two different algorithm. The word 'dynamic' means we use a different key in every encryption process, so that those attacks listed above are theoretically impossible.

Chaotic encryption algorithm

We use chaotic encryption algorithm to generate dynamic keys. Chaotic encryption algorithm is an application of the chaos theory. In math or physics, chaos usually refers to the behavior of dynamical systems that are highly sensitive to initial conditions. Small differences in initial conditions will cause widely diverging outcomes just like butterfly effect. Chaotic system has many great feature such as aperiodicity, high sensitivity and noise similarity. So there many similarities between chaotic maps and cryptographic systems.

Logistic map is a simple but useful chaotic map.

 

[Bifurcation diagramfor the logistic map. The attractor for any value of the parameter r is shown on the vertical line at that r. from wikipedia]

Logistic map can be used to generate key with a tuple of float (u,x). After tens of iterations, the key will be similar to a pseudo-random array.

The cyphertext will be the answer of key XOR plaintext.

 

How it works

Storage end

  1. get your FILE (txt, jpg or binary file) to be encrypted,

  2. choose a KEY-TUPLE (two float: u,x),

  3. generate KEY-LIST from KEY-TUPLE using Logistic map.

  4. XOR your FILE with KEY-LIST, get ENC-FILE

  5. dna-fountain ENC-FILE, get FT-ENC-FILE

  6. look up your KEY in KEY-MAP(a float-DNA map) to get KEY-DNA(DNA sequence, with a determined primer)

  7. pack FT-ENC-FILE with KEYDNA, get the DNA-PACKAGE

     

Receiving end

  1. from DNA-PACKAGE get KEY-DNA,
  2. look up KEY-DNA in KEY-MAP to get KEY-TUPLE
  3. de-fountain FT-ENC-FILE, get ENC-FILE
  4. generate KEY-LIST from KEY-TUPLE
  5. de-encrypt ENC-FILE with KEY-LIST, get FILE

 

Evaluation criterion of cryptography algorithm

Two method are used for evaluating the security of cryptography method.

Sensitivity: If the cyphertext can’t be decrypted by a wrong key which is very close to the real key, then we consider the algorithm is of high sensitivity.

Randomness: We use information entropy to measure the randomness of ciphertext. Higher the information entropy is, less information can be read from cyphertext.

Example

Take <lena.jpg> for an example:

We use (3.8765, 0.5678) as real key tuple (u,x), and the wrong key is (3.8765, 0.567800000000001)

 

 originalencrypteddecrypt with wrong keyrandom noise
information entropy7.39467.97137.96407.9890
2D information entropy10.300413.626113.664413.8275

 

Hackers can hardly get any information form cyphertext for its information entropy is very close to random noise image.

Without the key-tuple, hackers can only search out the whole key-tuple space to get the original file. If using 17 significant digits computational accuracy (default setting of python), we can have more than 4.3x10E33 key-tuples, which is totally unsolvable by brute-force key search attack"!