We present Quicksilver/OCaml, an Objective Caml library for communicating data in a possibly hostile network environment without losing type safety or abstraction. It is entirely implemented at user level, i.e., without modifying the compiler or the runtime at all. The key ideas are (1) representing types by (tuples of) functions, (2) abstraction by encryption, and (3) distinction of type representations for input and output. We show by examples that the library is useful for implementing applications where not only _safety_, but also _security_ against malicious attackers is required.