I have to choose a topic for my end-of-year school project and I need some advice. I was thinking of implementing an online tutorial materials (digital files) project. I have been researching on cryptography and read on symmetric/asymmetric algorithms. Here is what I have so far:
- The idea is about creating a system where the course materials are encrypted and can only be decrypted by students of the school's course.
- The course materials would be encrypted by AES algorithm and the AES key would be stored in the database.
- The database would contain a table with column "Course" and its corresponding "AESKey". Since it is insecure to store the AES key in clear text, I was then thinking about encrypting it using a password-derived key PBKDF2 (the password of which would be given to the students by the teacher of the course).
- Then, when the student requests the materials, he would simply provide the password for that course and then be able to retrieve the AES key.
What do you think of that idea? AND how can I make it more secure? Because I wanted to achieve some kind of multi-factor authentication but then it would be infeasible to give smart cards to each and every student! I had been thinking of encrypting the AES key using RSA public/private key method, but then there will be lots of students (Do I create a public/private key pair for each student? Sounds infeasible...) Or maybe there is some other way I can implement the RSA encryption scheme in there? I will be using C# as implementation language.
Your advice is most welcome! Thanks