This the project for 2022Fall CMPT789.
Basically, it is the reproduction of the paper The Linux Pseudorandom Number Generator Revisited
Topic: Simulate Linux Random Number Generator (RNG)
Team members: Hugh Song, Yoyo Wang, Keye Zhou
-
pip3 install keyboard
-
sudo su
-
python3 Linux_RNG.py
-
Hint:
"Let us initialize input pool --------" "please stop if entropy counter > thread"
Action: Continuesly typing every button except the ENTER button
-
Hint:
"Entropy Count is Enough, you can press ENTER to stop"
Action: Type ENTER button
-
Remark: If raised ERROR immediately after running the code, please use different python version or operating system.
-
Global functions:
0.1. state refresh function
0.2. mixing function
0.3. extraction function
-
Classes:
1.1. noise collector
1.2. input pool
1.3. output pool
GOAL: 10-byte output
-
if ENTROPY COUNT of Output Pool > ENTROPY THREAD of Output Pool -> 2 | else -> 3
-
Linux_RNG().output() - FINISH output 10 random bytes
-
if ENTROPY COUNT of Input Pool > ENTROPY THREAD of Input Pool -> 4 | else -> 5
-
Transfer 80 bit entropy from Input Pool to Output Pool -> 1
-
Collect entropy from noise source -> 3