(* Channel *) free d. (* secret message *) private free m. fun commit/2. fun open/3. equation open(commit(m,k),m,k) = m. query attacker:m phase 1. noninterf m. let alice = phase 1; new k; out(d,commit(m,k)); phase 2; out(d,(m,k)). let server = phase 1; in(d,x); phase 2; in(d,(m,k)); let (=m)=(open(x,m,k)) in 0. process alice | server