As the amount of digital information explodes, two new trends are emerging. First, data is increasingly being stored and managed in the "cloud", an untrusted trove of computing power and storage space for rent. Second, computer devices (e.g., cars, cell phones, medical implants) are everywhere and continuously exchanging messages. This research addresses the security issues raised by these trends by developing cryptography-based security solutions for processing large volumes of data in an untrusted setting. The main goals are (1) practical solutions for outsourcing sensitive computations to untrusted parties and (2) new methods for automatically converting a standard signature verification procedure into one that efficiently processes a batch of messages. An initial focus is to explore pairing-based solutions as a means of keeping the bandwidth overhead low. The primary technical challenges are designing formal models to capture the desired security guarantees, designing efficient systems and testing these systems in practical settings.