  These are lecture notes of a 20-hour course at the International Summer
School \emph{Mathematical Methods and Technologies in Computer Security} at
Lomonosov Moscow State University, July 9--23, 2006.
  Loosely speaking, a $T$-function is a map of $n$-bit words into $n$-bit words
such that each $i$-th bit of image depends only on low-order bits $0,..., i$ of
the pre-image. For example, all arithmetic operations (addition,
multiplication) are $T$-functions, all bitwise logical operations ($\XOR$,
$\AND$, etc.) are $T$-functions. Any composition of $T$-functions is a
$T$-function as well. Thus $T$-functions are natural computer word-oriented
functions.
  It turns out that $T$-functions are continuous (and often differentiable!)
functions with respect to the so-called 2-adic distance. This observation gives
a powerful tool to apply 2-adic analysis to construct wide classes of
$T$-functions with provable cryptographic properties (long period, balance,
uniform distribution, high linear complexity, etc.); these functions currently
are being used in new generation of fast stream ciphers. We consider these
ciphers as specific automata that could be associated to dynamical systems on
the space of 2-adic integers. From this view the lectures could be considered
as a course in cryptographic applications of the non-Archimedean dynamics; the
latter has recently attracted significant attention in connection with
applications to physics, biology and cognitive sciences.
  During the course listeners study non-Archimedean machinery and its
applications to stream cipher design.
