We propose protocols for obliviously evaluating finite-state machines, i.e.,
the evaluation is shared between the provider of the finite-state machine and
the provider of the input string in such a manner that neither party learns the
other's input, and the states being visited are hidden from both. For alphabet
size ∣Σ∣, number of states ∣Q∣, and input length n, previous
solutions have either required a number of rounds linear in n or
communication Ω(n∣Σ∣∣Q∣log∣Q∣). Our solutions require 2 rounds
with communication O(n(∣Σ∣+∣Q∣log∣Q∣)). We present two different
solutions to this problem, a two-party one and a setting with an untrusted but
non-colluding helper