  Steganography is the task of concealing a message within a medium such that
the presence of the hidden message cannot be detected. Beyond the standard
scope of private-key steganography, steganography is also potentially
interesting from other perspectives; for example, the prospect of
steganographic parallels to components in public-key cryptography is
particularly interesting. In this project, I begin with an exploration of
public-key steganography, and I continue by condensing existing work into a
unifying design paradigm that (a) admits provably secret public- and
private-key constructions and (b) provides for a conceptual decoupling of
channel considerations and steganographic goals, ultimately implying both
universal constructions and constructions with channel-specific optimizations.
  This work is by-and-large a survey of applications of this paradigm:
specifically, I use the framework to achieve provably secure distributed
steganography, obtain new public-key steganographic constructions using
alternative assumptions, and give discussion of channel-specific optimizations
allowed by cryptography as a channel and natural language channels and
challenges facing practical deployment of steganographic systems at scale.
