240 likes | 250 Views
Puzzle Algorithms. Presented by Ed Kaiser. Papers. [1] Time-lock Puzzles and Timed-Release Crypto (1996) Ronald Rivest, Adi Shamir, David Wagner [2] Moderately Hard, Memory-bound Functions (2002) Martin Abadi, Mike Burrows, Mark Manasse, T. Wobber. Overview.
E N D
Puzzle Algorithms Presented by Ed Kaiser
Papers • [1] Time-lock Puzzles and Timed-Release Crypto (1996) Ronald Rivest, Adi Shamir, David Wagner • [2] Moderately Hard, Memory-bound Functions (2002) Martin Abadi, Mike Burrows, Mark Manasse, T. Wobber
Overview • Outline methods for accurately controlling the earliest time that an agent can access data or service
Paper 1: Time-lock Puzzles AndTimed-release Crypto • Goal is to “send information into the future”
Meet The Team Ronald L. Rivest MIT Professor • co-inventor of RSA Adi Shamir Weizmann Institute Professor • co-inventor of RSA David A. Wagner UC Berkeley Assistant Professor
Sending InformationInto The Future • Present two methods: 1) Time-lock puzzles where the answer is used as the key to decrypt cipher text 2) Using trusted agents to encrypt data and only release the key at the agreed upon time
Time-lock puzzles • Puzzle answer is the key for decryption • Use a puzzle that is sequential in solution but has a trap-door in creation; • Repeated squaring
Creating The Puzzle • Use two large prime numbers (p & q) to create a large psuedo-prime modulus n • Then the puzzle of finding b = a2t (mod n) can be broken down into two easier tasks; e = 2t (mod (p-1)(q-1)) b = ae (mod n)
Trusted Agents • Previous methods involve “escrow agents” who hold onto all or part of the secret message or key • Requires state to be maintained on agents for an indefinite period of time (possibly forever) • No lower bounds on the stability of the agents
Proposed Method • Trusted agent (i) encrypts data (y) given a desired time it should become public (t) • At time t, publish the key (Sit) allowing decryption of any messages that trusted agent encrypted for that time • Trusted agents generate keys such that earlier keys can be easily derived from them but future keys cannot
Avoiding Corruption • Break a message (M) into d smaller pieces such that only θ pieces are necessary to reconstruct it and distribute those pieces to different agents • Need greater than d-θ agents to fail for the message to be lost • Need greater than θ agents to be corrupted before the message can be released too early
Good Idea … • Recursion is a good way of disallowing parallelization • Generation of keys which give away previous keys but not future ones
... Interesting … • “Solving a puzzle should be like having a baby: two women can’t have a baby in 4.5 months”
… Bad Idea • Requires trap-door for efficient verification • Without the server storing state about client puzzles; tverification = tsolution • Not instantly solvable at the intended time • Solution time is only roughly controllable • Requires a deployed service which is willing to do work (encryption) for you, and can be DoS’d
Paper 2: Moderately Hard, Memory-bound Functions • Goal is to create a puzzle with low variation in solution time between very different CPUs by using RAM instead • Current CPUs are very variable (10x to 100x) • Current RAM is much less variable (2x to 10x)
Meet The Team Martin Abadi UC Santa Cruz Prof Mike Burrows Senior Microsoft Researcher Mark Manasse Senior Microsoft Researcher Ted Wobber Senior Microsoft Researcher
Forcing Clients To Use RAM • Create a puzzle which is easy to cheat on; • Solving the puzzle is hard for all CPUs • Creating a table in memory that facilitates easily looking up answers is possible • Define a function F() that; • Uniformly maps L bits into L bits • F-1() cannot be computed faster than a RAM access
Creating A Puzzle Using F() • Puzzle: solve F-1() k times • Use recursive puzzle: xi+1=F(xi) • Uses less data to communicate puzzle • Forces sequential solution • If F() generates cycles, or the client creates a table with “ladders”, lookups required < k • Strengthen recursion: xi+1=F(xi) XOR i • Encodes step number into each answer
Problem With Ambiguity • Possibly exists j ≠ k such that F(j) = F(k) • There could be more than one legitimate answer to the puzzle then: • Accept any valid answer • Create a checksum for the path to the intended answer
5 Puzzle Refinements • Don’t save state of each issued puzzle: use a secure hash of the answer and a server secret • Vary F() over time: to avoid trusting a single function for too long • Create a composite puzzle: more puzzles minimizes variation in solution time • Make the puzzle more vague: provide less information to make it more difficult • Use several different F(): same as #4
Good Idea … • Also suggests using recursion (“chaining”) • XORing the step number into the answer • Hashing answer and secret to reduce state on server
… Interesting … • Varying F() over time • Results show improvement, but not overwhelming success
… Bad Idea • Creating a composite puzzle • Making puzzles more vague