Il y a quelques années, lorsque j'ai commencé à utiliser ASP.net et le .NET Framework, j'ai créé un système de stockage de fichiers en ligne très simple. Ce système utilisait le cryptage Rijndael pour stocker les fichiers cryptés sur le disque dur du serveur, et un HttpHandler pour décrypter et envoyer ces fichiers au client. Etant l'un de mes premiers projets avec ASP.net et bases de données, ne comprenant pas grand-chose sur le fonctionnement de l'ensemble (tout en tombant sur le same trap described by Jeff Atwood on this subject), j'ai décidé de stocker des clés et des IV nouvellement générés avec chaque entrée de fichier dans la base de données. Pour rendre les choses un peu plus claires, le cryptage servait uniquement à protéger les fichiers contre l'accès direct au serveur, et les clés n'étaient pas générées par les mots de passe saisis par l'utilisateur.AES Cryptage et stockage des clés?
Ma question est, en supposant que je ne veux pas garder une clé pour tous les fichiers, comment devrait I stocker les clés de chiffrement pour une meilleure sécurité? Qu'est-ce qui est considéré comme la meilleure pratique? (i.e: Sur un serveur différent, sur un fichier en texte brut, crypté).
De plus, à quoi sert le vecteur d'initialisation dans ce type d'algorithme de chiffrement? Devrait-il être constant dans un système?
observation mineure : "AES est un chiffrement par bloc, il divise les données en blocs et alimente les résultats du dernier chiffrement de bloc dans le bloc suivant." Vous décrivez [CBC] (https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher-block_chaining_.28CBC.29) * une * méthode pour utiliser AES en toute sécurité. Il existe d'autres solutions sécurisées - toutes ne nécessitant pas de vecteur d'initialisation. – KovBal