Hay varias bibliotecas que permiten el cifrado autenticado en .NET.
Bouncy Castle , mencionado en una respuesta anterior, no lo es. El propio Microsoft ofrece una biblioteca de código abierto que es bastante de bajo nivel, simplemente envolviendo las API de CNG que ofrecen cifrado simétrico autenticado en Windows, llamado Seguridad de CLR .
La biblioteca de seguridad de CLR será la biblioteca más madura que encontrará, pero es de bajo nivel y, por lo tanto, puede usarse de manera incorrecta. He escrito una biblioteca de nivel superior que envuelve la Seguridad de CLR llamada Cryptocore que expone una API de cifrado simple. No cumplirá con su requisito de madurez, pero al menos debería revisarlo para ver cómo usar CLR Security correctamente.