HIDING INFORMATION IN COMPLETENESS HOLES
NEW PERSPECTIVES IN CODE OBFUSCATION AND WATERMARKING Roberto Giacobazzi Dipartimento di Informatica Universit` a di Verona Italy
SEFM’08, Cape Town November 2008
SEFM’08 – Cape Town – p.1/37
T HE PROBLEM : HIDING AND UNVEILING IN SW ! Understanding programs - - PowerPoint PPT Presentation
H IDING I NFORMATION IN C OMPLETENESS H OLES N EW PERSPECTIVES IN CODE OBFUSCATION AND WATERMARKING Roberto Giacobazzi Dipartimento di Informatica Universit` a di Verona Italy SEFM08, Cape Town November 2008 SEFM08 Cape Town
SEFM’08 – Cape Town – p.1/37
!
!
SEFM’08 – Cape Town – p.2/37
SEFM’08 – Cape Town – p.3/37
SEFM’08 – Cape Town – p.4/37
SEFM’08 – Cape Town – p.4/37
445 10992
SEFM’08 – Cape Town – p.5/37
445 10992 141 101
SEFM’08 – Cape Town – p.5/37
SEFM’08 – Cape Town – p.6/37
SEFM’08 – Cape Town – p.6/37
SEFM’08 – Cape Town – p.6/37
SEFM’08 – Cape Town – p.6/37
SEFM’08 – Cape Town – p.6/37
SEFM’08 – Cape Town – p.6/37
SEFM’08 – Cape Town – p.6/37
SEFM’08 – Cape Town – p.6/37
Input Output τ P → τP Input Output
SEFM’08 – Cape Town – p.7/37
SEFM’08 – Cape Town – p.7/37
SEFM’08 – Cape Town – p.8/37
SEFM’08 – Cape Town – p.8/37
SEFM’08 – Cape Town – p.8/37
SEFM’08 – Cape Town – p.9/37
SEFM’08 – Cape Town – p.9/37
!" !# !$ !% !& SEFM’08 – Cape Town – p.9/37
!"#$%&'()* +, +- +. +/ +0 111111111
SEFM’08 – Cape Town – p.9/37
SEFM’08 – Cape Town – p.9/37
!
!
!
SEFM’08 – Cape Town – p.10/37
Deobfuscation Input Output Reverse Engineering user malicious SW
δ α
SEFM’08 – Cape Town – p.10/37
!
!
!
!
SEFM’08 – Cape Town – p.11/37
α γ ⊤ ⊤ α(c) γ(α(c)) c ⊥ C ⊥ A
SEFM’08 – Cape Town – p.12/37
SEFM’08 – Cape Town – p.13/37
THE INPUT/OUTPUT
f(x)
!"#$%&'$
SEFM’08 – Cape Town – p.14/37
APPROXIMATING THE INPUT
f(x)
!
!"#$%&'$
SEFM’08 – Cape Town – p.14/37
THE OUTPUT
f(x)
!"#$%&'$
SEFM’08 – Cape Town – p.14/37
THE OUTPUT
f(x)
!"#$%&'$
!
SEFM’08 – Cape Town – p.14/37
[0, +∞] [0, 10] [0, 2] [0, 0] [−∞, 0]
SEFM’08 – Cape Town – p.15/37
[0, +∞] [0, 10] [0, 2] [0, 0] [−∞, 0]
SEFM’08 – Cape Town – p.15/37
[0, +∞] [0, 10] [0, 2] [0, 0] [−∞, 0]
SEFM’08 – Cape Town – p.15/37
SEFM’08 – Cape Town – p.16/37
0− 0+ ℘(Z) . . . 1 . . . . . . . . . . . . 0+ 0− ∅ ℘(Z) {−1, −3, −4} {2, 3, 5} ∅
SEFM’08 – Cape Town – p.16/37
0− 0+ ℘(Z) . . . 1 . . . . . . . . . . . . 0+ 0− ∅ ℘(Z) {−1, −3, −4} {2, 3, 5} ∅
SEFM’08 – Cape Town – p.16/37
!
!
SEFM’08 – Cape Town – p.16/37
SEFM’08 – Cape Town – p.17/37
10
SEFM’08 – Cape Town – p.17/37
SEFM’08 – Cape Town – p.18/37
ι ι−
SEFM’08 – Cape Town – p.18/37
ι ι−
SEFM’08 – Cape Town – p.18/37
SEFM’08 – Cape Town – p.18/37
!"#$%&'& ()*'%+$'
SEFM’08 – Cape Town – p.19/37
!"#$%&'& ()*'%+$'
SEFM’08 – Cape Town – p.19/37
A P holds: Shell of A P doesn’t hold
SEFM’08 – Cape Town – p.20/37
A P holds: Core of A P doesn’t hold A P holds: Shell of A P doesn’t hold
SEFM’08 – Cape Town – p.20/37
⊤ ⊤ ⊥
⊥
SEFM’08 – Cape Town – p.21/37
⊤ ⊤ ⊥
⊥
SEFM’08 – Cape Town – p.21/37
⊤ ⊤ ⊥
⊥
SEFM’08 – Cape Town – p.21/37
⊤ ⊤ ⊥
⊥
SEFM’08 – Cape Town – p.21/37
⊤ ⊤ ⊥
⊥
SEFM’08 – Cape Town – p.21/37
⊤ ⊤ ⊥
⊥
SEFM’08 – Cape Town – p.21/37
⊤ ⊤ ⊥
⊥
SEFM’08 – Cape Town – p.21/37
⊤ ⊤ ⊥
⊥
SEFM’08 – Cape Town – p.21/37
SEFM’08 – Cape Town – p.22/37
SEFM’08 – Cape Town – p.22/37
τ(P)(ι
SEFM’08 – Cape Town – p.23/37
SEFM’08 – Cape Town – p.24/37
semantics t[SP] ⊑ SτP program P Subject Syntactic transformation τ program τP Transformed p S p S Semantic Transformed transformation t program program semantics SP Subject
SEFM’08 – Cape Town – p.25/37
η,ρ(f ) = {h : C −
η,ρ(f ) = F{h : C −
η,ρ(f ) and F↓ η,ρ(f ) are (Forward) complete
η,ρ(f ) = F{g : C −
η,ρ(g) = F↓ η,ρ(f )}
η,ρ(f ) = {g : C −
η,ρ(g) = F↑ η,ρ(f )}
η,ρ(f ) and O↓ η,ρ(f ) are generally in-complete
SEFM’08 – Cape Town – p.26/37
Minimal complete transformation from above Minimal complete transformation from below Maximal incomplete transformation from below Maximal incomplete transformation from above
SEFM’08 – Cape Town – p.26/37
⊤ ⊤ ⊥
⊥
η,ρ = λf .λx.
SEFM’08 – Cape Town – p.26/37
⊤ ⊤ ⊥
⊥
η,ρ = λf .λx.
SEFM’08 – Cape Town – p.26/37
⊤ ⊤ ⊥
⊥
η,ρ(f )(x) =
SEFM’08 – Cape Town – p.26/37
⊤ ⊤ ⊥
⊥
η,ρ(f )(x) =
SEFM’08 – Cape Town – p.26/37
ι,ι(λX. wlpx = x ∗ xι(X ))(x ∈ [10, 100]) =
SEFM’08 – Cape Town – p.27/37
SEFM’08 – Cape Town – p.27/37
SEFM’08 – Cape Town – p.27/37
SEFM’08 – Cape Town – p.27/37
α,α(λX. wlpMj ι(X ))(Φj )
SEFM’08 – Cape Town – p.28/37
SEFM’08 – Cape Town – p.29/37
SEFM’08 – Cape Town – p.29/37
SEFM’08 – Cape Town – p.29/37
SEFM’08 – Cape Town – p.30/37
SEFM’08 – Cape Town – p.30/37
η,M{
|s| }({
SEFM’08 – Cape Town – p.31/37
SEFM’08 – Cape Town – p.32/37
SEFM’08 – Cape Town – p.33/37
!
!
!
!
!
!
SEFM’08 – Cape Town – p.34/37
!
!
!
!
!
!
SEFM’08 – Cape Town – p.35/37
Private Input Public Input Public Output
η I ρ φ
SEFM’08 – Cape Town – p.36/37
Private Input Public Input Public Output
η I ρ φ
SEFM’08 – Cape Town – p.36/37
Private Input Public Input Public Output
η I ρ φ
SEFM’08 – Cape Town – p.36/37
Private Input Public Input Public Output
η I ρ φ
SEFM’08 – Cape Town – p.36/37
Private Input Public Input Public Output
η I ρ φ
SEFM’08 – Cape Town – p.36/37
Private Input Public Input Public Output
η I ρ φ
SEFM’08 – Cape Town – p.36/37
SEFM’08 – Cape Town – p.37/37