project juno: draw passwords!
TRANSCRIPT
Juno [u∶no∶]draw passwords
연세대학교 수학과 설진석
Abstract• alternative cryptographic hash function
• image based
• using Life-Like Cellular Automata
• algorithm development
Preliminaries• Classical Mathematics
• Automata Theory
Cryptographic Hash Function
• given a function f: X → H, H = L(\w{n})
• f is called cryptographic hash function if
• Pa, b ∈ X (f(a)=f(b)) ≦ p
• for ∀h ∈ H, “answering f -1(h)” is a NP-problem
• where
• X : given set
• p : desired probability
• n : natural number
Cellular Automata• In n dimensional grid, given a
• S : set of states
• T : transition rule
• B : neighbor
• Each cell’s next state is determined by current state of the cell and neighbor applied by transition rule.
one-dimensional CA example
• each row denotes step
• each column denotes cell’s state history
Life-Like Cellular Automata
• In two-dimensional grid
• S : “alive” or “dead”
• T : “survive”, “birth”, or “death” determined by number of “alive” cells in neighbor
• B : Moore neighborhood (adjacent 8 cells)
LLCA example: Conway’s Game of Life
• rule string B3/S23
• A cell survives if 2 or 3 neighbor is alive, and births if 2 neighbor is alive. Otherwise, it dies.
Object• drawing password, rather than inserting string
• using LLCA as cryptographic hash function
Algorithm
Raw Drawing Simplify Hash via LLCA
Encode
Encoding1 0 0 00 1 1 00 0 0 10 0 0 11 1 0 1
Original Binary
8611d
Hex
8611dResult
fixed sized image = fixed sized string
LLCA as Hash?• LLCA is a function
• CA itself is a deterministic
• inverse LLCA is NP
• checking answer is P
• using “number of live neighbors”, so inverse can be calculated with non-deterministic turing machine
Limitations• sparse initial state generates sparse output
• requires minimum alive cells to be meaningful value
• infeasible to control or calculate collision probability p
Benefits and Applications• At least, it is valid cryptographic hash function
• Calculation can be parallelized
• Easy to control complexity
• changing rule string
• terminating condition
• Can be used for signature authentication, or fingerprints
Implementation
• Using coffee-script based LLCA library “Plasmid”
• http://nyamukoong.github.io/plasmid/
• Result: https://theeluwin.kr/juno/