The indifferentiability framework by Maurer et al. is an important and widely used framework when discussing security of hash functions. The essence of the framework is that if a hash function $\mathcal{H(\cdot)}$ is indifferentiable form a Random oracle $\mathcal{RO}$ then "any" cryptosystem $\mathcal{C(\cdot)}$ using $\mathcal{RO}$ remains secure when the latter is replaced with $\mathcal{H(\cdot)}$.
Before going any further, let's look at concrete examples. In the first example $\mathcal{C(\cdot)}$ is a signing algorithm for short, fixed length output. We could use a hash $\mathcal{H(\cdot)}$ to obtain a signing algorithm for long messages. This is also known as hash-and-sign algorithm. In the second example, $\mathcal{C(\cdot)}$ is itself a hash construction(M-D, Sponge), here $\mathcal{H(\cdot)}$ will be the underlying compression or permutation.
Remark: I wrote "any" because it was shown that plain indifferentiability doesn't give any guarantee against a multi-stage adversary. The framework can be extended to take that into account(look at resource restricted indifferentiability or context-restricted indifferentiability)
The proof is beautiful imo because it's "merely" drawing boxes. :) Moreover, the impossibility proof that $\mathcal{RO}$ cannot be in general instantiated by any $\mathcal{H(\cdot)}$ is given as a "simple" entropy calculation.
Before presenting the proof some background should be presented.
Random oracles and impossibility results
The random oracle methodology allows to design efficient and secure cryptosystems, assuming access to a random oracle. Canetti et al. showed that $\mathcal{RO}$ can in general not be instantiated any $\mathcal{H(\cdot)}$. However in practice protocols seems to remain secure. Formalizing the conditions under which the RO methodology is justify was in part the aim of the indifferentiability framework.
Indifferentiability
The framework uses systems as building blocks(Signing algorithms, Hash functions and others are represented as such). A system provides a number of interfaces that can be queried and give back answers. We are iterested in systems that provide 2 types interfaces, public and private.
Definiton: a system $\mathcal{S}$ is said to be indifferentiable form $\mathcal{T}$ if for any distinguisher system $\mathcal{D}$(with output 0 or 1) there exists the system $\mathcal{P}$ such that the advantage
$$|P[\mathcal{D}(\mathcal{S^{priv}}, \mathcal{S^{pub}}) = 1] - P[\mathcal{D}(\mathcal{T^{priv}}, \mathcal{P(T^{pub})}) = 1]|$$
is negligible.
The setup is beautifuly summarized in the following picture.
From this notion the following theorem follows:
Theorem:
$\mathcal{S}$ indifferentiable from $\mathcal{T} \iff\forall \mathcal{C(\cdot)}, \mathcal{C(S)}$ is as secure as $\mathcal{C(T)}$.
In this theorem $\mathcal{C(\cdot)}$ is a crytosystem that makes use of another resources, $\mathcal{T}$ is the ideal resource and $\mathcal{S}$ is the available resource that will be used to construct the ideal resources.
Proof:
I will present only the "$\Rightarrow$" part of the proof, the other part can be found in the paper.
The proof is bascially given by the following picture
Here $\mathcal{E}$ is a so-called environment that runs the cryptosystem and output 0 or 1. The two systems are equally secure if the output of the do not give any information which setting we are in.
As we can see, the essence of the proof is that by connecting systems we get a new Systems. In this case, this is showed using doted lines around $\mathcal{A, C, E}$, we get a new system $\mathcal{D}$. By the indifferentiability property the two cryptostystems are equally secure.