During your presentation, you can consider the following story and answer the questions.
For each step, think about what data structures are used, and what is being stored and where. How are you generating the UUID that you are storing the information at? How you will ensure confidentiality and integrity? Which keys are you using, and how are you generating and accessing them?
Alice creates a new user. How does she create a new user? When she tries to login, how will you check the given username and password pair is correct? Eve tries to log in as Alice but has the incorrect password. How do you make sure that a user cannot login with an incorrect password?
She is logged in and wants to store a file. She accesses the file. How does the file get stored in Datastore? How does a user access their file at a future time?
Alice wants to give access to Bob. How will Alice create the invitation and what will be stored in the invitation? What changes will happen, if any, when Bob accepts the invitation? How will Bob access this file in the future? Bob is not the owner of the file, but wants to share the file with David. What changes, if any, need to be made to the sharing process?
Assume Alice shared the file with Bob and Charlie, and Bob shared this file with David. Now, Alice wants to revoke Bob’s access. How can she revoke Bob’s access, what changes, if any, needs to happen on file structs?
How do you ensure that Charlie still has access to this file? How do you ensure David loses access to this file?
How do you ensure that Bob and David cannot retrieve any information about the future state of the file (check 2.2 to see a detailed explanation for revoked user adversary threat model)?
Then, Alice wants to append to the file. How can Alice append to this file efficiently in terms of bandwidth being used (check 3.7 to see a detailed explanation of the efficiency requirement)? Alice and Charlie retrieve the file. How can both of them see the most recent change?
Note that: You are not expected to present your implementation details like list of function calls, pseudocode, etc.