Soy bastante nuevo en esto, así que estoy seguro de que se me ha preguntado y respondido, pero no puedo encontrar una respuesta clara. Si esto ya se ha solucionado, indíqueme la dirección correcta y eliminaré esta pregunta.
Tengo un programa que deberá aceptar un nombre de usuario y contraseña del usuario. Este nombre de usuario y contraseña son para otro servidor, pero la información deberá transmitirse a unas pocas DLL antes de enviar la solicitud final al otro servidor. Mi preocupación es pasar nombres de usuario y contraseñas entre archivos DLL sin cifrado, por lo que he creado un sencillo conjunto de métodos de cifrado y descifrado utilizando la clase System.Security.Cryptography.CryptoStream de Microsoft.
Esencialmente, se realizan las siguientes operaciones.
Se ingresa una cadena simple en el método de cifrado junto con la clave de cifrado. Este método genera un IV aleatorio (8 bytes), una matriz aleatoria (8 bytes) y el cifrado de la matriz de bytes. La IV, la matriz aleatoria y el cifrado se colocan en una matriz de un solo byte y se transfieren entre DLLS.
La matriz de bytes es recibida por una DLL y se pasa a través del método de descifrado con la clave de cifrado. Este método toma la parte IV de la matriz y la parte de encriptación de la matriz, e ignora los 8 bytes aleatorios agregados (estos se agregan simplemente por razones totalmente arbitrarias). La cadena se descifra.
¿He roto accidentalmente toda la seguridad de usar un cifrado al agregar los IV a la matriz de bytes cifrada?
¿Debo usar los 8 bytes aleatorios como sal (solo, ya que los tengo de todos modos) y pasarlos con el cifrado? ¿O eso lo rompería aún más?
Tenga en cuenta que no tengo acceso directo a una lista de nombres de usuario o contraseñas, esta es una aplicación completamente externa. Solo quiero asegurarme de que la solicitud y el movimiento de los pares de nombre de usuario y contraseña estén seguros en mi final.