What is the difference between an anonymous-encryption scheme and an authenticated-encryption scheme? I was going through Indy-SDK when these two schemes were referenced. I want to know the precise differences between the two.

Indy-SDK links for reference to:

authenticated-encryption scheme

anonymous-encryption scheme
authenticated-encryption scheme


This one takes the sender's public key $g^a$ and the recipients public key $g^b$ and using the currently available secret key ($a$ or $b$) computes $g^{ab}$ and derives a symmetric encryption key from that. This is called a static-static Diffie-Hellman key exchange. It provides authentication for the sender because only the sender knows the correct (static) $a$ to come up with the same shared secret as the receiver.


  anonymous-encryption scheme


They work the same as the authenticated one, but this time the sender picks a new $a$ for each message and includes $g^a$ as part of the ciphertext. This way anybody could have picked this $a$ - including an adversary that intercepted the ciphertext, dropped it and computed a new one. This uses a so-called static-ephemeral Diffie-Hellman key exchange and the security guarantees are not unlike those of an unsigned, encrypted PGP message.