\documentclass[tikz]{standalone}
\usepackage{microtype}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[scale=0.7, every node/.style={scale=0.7}]
\foreach \x in {0, 1, 2} {
% Nodes for PRF, plaintext blocks, and XORs, respectively.
\node (f\x) at ($\x*(2.5cm,0)$) [minimum size=1.25cm,rounded corners=1ex,draw] {\Large $F_k$};
\node (m\x) [above of=f\x, node distance=2cm] {$m_\x$};
\node (p\x) [above of=f\x, node distance=1.2cm, circle, draw] {};
% Draw the ``cross'' of the XORs.
\draw[-] (p\x.north) -- (p\x.south);
\draw[-] (p\x.east) -- (p\x.west);
% Arrow for one of the inputs to XOR: the plaintext block.
\draw[-latex] (m\x) -- (p\x);
% Line taking the output of XOR to the input of PRF.
\draw[-] (p\x) -- (f\x);
}
% Arrows connecting PRF output for plaintext block i, to XOR input for
% plaintext block i+1.
\foreach \x in {0, 1} {
\draw[-latex] (f\x.south) -- +(0cm,-0.3cm) -| +(1.25cm,1.85cm) -- ($(p\x.west) + (2.5cm,0)$);
}
% IV, and arrow ``inputting'' it to first XOR.
\node (m) [left of=p0, node distance = 1cm] {$0^n$};
\draw[-latex] (m) -- (p0);
% Arrow corresponding to tag output.
\draw[-latex] (f2.south) |- +(0.5cm,-0.3cm) node [anchor=west] {t};
\end{tikzpicture}
\end{document}