Distributed Point Functions and Their Applications to Secure Multi-Party Computation