File system with login authentication

Assignment Help C/C++ Programming
Reference no: EM1378885

You are to implement a simple file system" with login authentication and access control. Specifically:

Construct a hash/salt/shadow based user/password creation system.
Construct a hash/salt/shadow based user authentication system.
Construct an associated file system, into which a user can log. Files can be created, read from, written to, but only in accordance with a three-level access control model.

The levels of the three-level access control model are 0, 1 and 2. 0 is dominated by 1 and 2, and 1 is dominated by 2.

You do not need to have an actual file system, simply an internal collection of records at the levels specified.

Although in practice we would use a client/server system, here we will simply simulate the transmission process. You can implement the program in C++, C or Java.

Use MD5.

You need to provide compilation instructions for your code that are compliant with conditions set by the tutor.

The initialisation details

Your program will, initially, need blank files salt.txt and shadow.txt.

Running your FileSystem with the instruction
FileSystem -i
runs the hash/salt/shadow based user/password creation system. This program should prompt for a username, something like...

Username: Bob

Check if the username exists already. If it does, terminate the program with an appropriate notification to the user. If it doesn't, request a password with something
like ...
Password: ........
Confirm Password: ........
Assuming the passwords are the same, we make a final request of the user, something like ...

User clearance (0 or 1 or 2): 1

Once we have this information we can modify the salt.txt and shadow.txt files to include this user. To salt.txt we add a line, with a generic example and a specific one for user Bob given here:

Bob:38475722
Username:Salt

where Salt is a randomly chosen string of 8 digits. The random generator should be seeded using time() and a secret key taken from the file Secret.txt. That file should be in plaintext and readable.

We also add a line to shadow.txt, with a generic example and a specific one for user

Bob given here:
Bob:dd2da44f4437d529a80809932cb3da83:0
Username:PassSaltHash:SecurityClearance

PassSaltHash is generated as the MD5 hash of the concatentation of the user's password with the salt, For example if the Password is "alphabet" and the Salt is "12345678", we would pass "alphabet12345678" to the MD5 function.

The file salt.txt is nominally associated with the client, while the file shadow.txt is nominally associated with the server, although here both the client and server are in the same program.

Logging in
Running FileSystem with no arguments will allow a user to try and log in to the file system.

Username: Bob
Password: ........

The "client" part checks if the Username is listed in the file salt.txt. If the Username is in the file then their salt value is retrieved and the PassSaltHash is generated. A message should be displayed to indicate that the salt has been retrieved.

Bob found in salt.txt
salt retrieved: Salt
hashing ...
hash value: PassSaltHash

The "server" part should now compare the PassSaltHash value with that in the file shadow.txt. If salt.txt doesn't contain an entry for the Username, or if the information in shadow.txt doesn't match the transmitted information, FileSystem should stop with appropriate error messages.

If the shadow.txt information matches, the clearance of the user is reported, and authentication is reported to be complete.

Authentication for user Bob complete.
The clearance for Bob is 1.

Once logged in ...
A list of allowed actions is now displayed
Options: (C)reate, (R)ead, (W)rite, (L)ist, (S)ave or (E)xit. (*****)
The C option will result in a request for filename and classification, from the client.

Filename: alpha
Security level (0 or 1 or 2): 0

The program should maintain a list of "files" as internal entries. If the passed file doesn't exist, it's name and classification should be added to the list. If the passed file does exist an appropriate message should be displayed and the client should re-display the menu (*****).

The R and W choices each result in a request for a filename.

Filename: alpha

Again a check is made as to whether the file exists. If the file doesn't exist an appropriate error message should be provided and the menu (*****) should be re-displayed. If the file does exist, a message informing success or failure will be displayed. Success or failure is determined by the relative clearance of the user and the classification of the file they are trying to access, in accordance with the ss-property and the star-property of the Bell-LaPadula model. Subsequently the menu (*****) should be re-displayed.

The L option lists all files in the FileServer records. The S option saves all the data to a file Files.store.

This file should always be loaded if it is available when FileServer starts without the -i argument.

The E option should exit the FileServer, after checking with the user:

Shut down the FileServer? (Y)es or (N)o

If FileServer is to be shut down, it should firstly display a list of files within it's records.

NOTE: When your program starts, before bringing up a prompt, it should report a test output of the MD5. You should call your MD5 with the string "This is a test".

MD5 ("This is a test") = ce114e4501d2f4e2dcea3e17b546f339

Reference no: EM1378885

Questions Cloud

Relative or absolute morality : Under the moral system espoused through Adolf Hitler and the Nazi party, property was stolen and destroyed; nations were invaded, looted, and pillaged;
Case write-up - montefiore medical center : Based upon the activities of the hospital's Heart Center construct a professionally presentable sample excel spreadsheet template.
The value of life principle : To what extent do you believe that the United States as a nation follows the 5-basic values? Does it follow any other priniciples? Does the addition of these other values constitute an improvement upon Humanitarian Ethics?
Case study - mercy killing and euthanasia : A twenty-four year old man named Robert who has a wife and child is paralyzed from the neck down in a motorcycle accident. He has always been very active and hates the concept of being paralyzed.
File system with login authentication : Implement a simple file system with login authentication and access control - Construct a hash/salt/shadow based user/password creation system.
Making abortion decision : Mary, thirty-eight, is married and has three children, ages ten, 15, and 18. Her husband manages a service station, and Mary has been working part-time as a bank teller.
Discussion on truthfulness : Jesusita, eighty years old and with a bad heart, is living in a convalescent hospital where she is visited regularly by her fifty-year-old son, along with other part of the family.
Morality and adultery issues : Eric, fory-five, is married to Joanne, forty-three, and they have three teenage children. Generally speaking, they have a pretty good marriage, except for their sex life. although they both know it is poor, they don't discuss it very often.
Bioethics description : ichard is a sixty-seven year-old man with terminal cancer. He has just had a lover scan and been told to visit his doctor, an oncologist, and get the results.

Reviews

Write a Review

C/C++ Programming Questions & Answers

  Write program using c language to find page fault

Write program using c language to find page fault for individual processes, group of processes and system as whole using following system call int sys_pgfltstats(pid_t pid,int flag,pf_info_struct *info).

  Write function that randomly produces maze

Write a function mazeGenerator that randomly produces a maze (in C++). The Function should take as arguments a two-dimensional 12-by-12 character array.

  Object oriented programming paradigm is better choice

Explain why object oriented programming paradigm is considered better choice than structured programming paradigm. Does it reflect our "natural" way of thinking or do you find it artificial?

  Using opengl to create a cube

Write a program in C/C++ using OpenGL to create (without using built in function) a cube by implementing translation algorithm by translating along 1. X-axis, 2.Y-axis and 3. X and Y plane

  Insert the missing code in the c program

You are to insert the missing code in the C program given for combinational equivalence checking. This program will interface with the CUDD package and will parse netlist files in ISCAS85 circuit format. Next, BDDs will be created for each circuit an..

  Illustrate example from ansi c programming language

Illustrate example from ANSI C programming language, without using nested procedures, to show the fact that "assignment-by-sharing in conjunction with quasi-dynamic object binding

  Write function compute square root together with prototype

Write a C++ function called compute together with its prototype that is passed 2 integers, A and B and returns the square root of A2+B2 ,as a double.

  Function declare that it can throw an ioexception

Every C++ function that performs file I/O will thus need to either declare that it can throw an IOException, or contain a try-catch-finally block to deal with it. Response?

  Method celsius return celsius equivalent of fahrenheit

Method Celsius return the Celsius equivalent of a Fahrenheit temperature,using the calculation Celsius = 5.0/9.0*(Fahrenheit -32); method Fahrenheit returns the Fahrenheit equivalent of a Celsius temperature, using the calculation  Fahrenheit = 9.0/5..

  Write a program that converts between app and ppm values

Write a simple program that converts between APP and PPM values

  Program to store lists of names and ages in parallel arrays

Write a C++ program that stores lists of names (the last name first) and ages in parallel arrays and sorts the names into alphabetical order keeping the ages with the correct names.

  Iterative programming problem solving approaches

Write a recursive function void reverse ( ) that reverse a sentence

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd