Secure two-party computation, called Secure Function Evaluation (SFE), enables two mutually mistrusting parties (client & server) to evaluate an arbitrary function f on their respective private inputs x, y while revealing nothing but the result z = f (x, y). Although such generic techniques were widely believed to be inefficient, the rapidly growing speed of computers and communication networks, algorithmic improvements, automatic generation and optimizations of SFE protocols have made them usable in practical application scenarios. This thesis summarizes the state of the art in efficient techniques for SFE and presents the following advances in the design, optimization and applications of efficient SFE protocols. Circuit Optimizations and Constructions. The complexity of today's most efficient SFE protocols depends linearly on the size of the boolean circuit representation of the evaluated function. Further, recent techniques for SFE based on improved Garbled Circuits allow for very efficient secure evaluation of XOR gates. We give transformations that substantially reduce the size of boolean circuits if the costs for evaluating XOR gates are lower than for other types of gates. Our optimizations provide more efficient circuits for standard functionalities such as integer comparison and fast multiplication. Applications that benefit from our improvements are secure first-price auctions.