Question: TCSS 4 8 7 Cryptography Practical project cryptographic library & app part 1 Version: Mar 2 5 , 2 0 2 4 Your homework in
TCSS Cryptography
Practical project cryptographic library & app part
Version: Mar
Your homework in this course consists of a programming project developed in
two parts. Make sure to turn in the Java source files, and only the source files,
for each part of the project. Note that the second part depends on extends, and
includes, the first part of the project.
You must include a report describing your solution for each part, including any
user instructions and known bugs. Your report must be typeset in PDF scans
of manually written text or other file formats are not acceptable and will
not be graded, and you will be docked points if a suitable report is
missing for each part of the project For each part of the project, all source
files and the report must be in a single ZIP file executablebytecode files
are not acceptable: you will be docked points for each such file you
submit with your homework
Each part of the project will be graded out of points as detailed below, but
there will be a total of bonus points for each part as well.
You can do your project either individually or in a group of up to but no more
students. Always identify your work in all files you turn in If you are working in
a group, both group members must upload their own copy of the project material
to Canvas, clearly identified.
Remember to cite all materials you use that is not your own work eg
implementations in other programming languages that you inspired your work
on Failing to do so constitutes plagiarism and will be reported to the Office of
Student Conduct & Academic Integrity.
Objective: implement in Java a library and an app for asymmetric encryption
and digital signatures at the bit security level NB: other programming
languages are not acceptable and will not be graded
Algorithms:
SHA derived function KMACXOF;
ECDHIES encryption and Schnorr signatures;
PART : Symmetric cryptography
All required symmetric functionality is based on the SHAKeccak machinery,
except for the external source of randomness.
Specifically, this project requires implementing the KMACXOF primitive and
the supporting functions bytepad, encodestring, leftencode, rightencode,
and the Keccak core algorithm itself as specified in the NIST Special Publication
Test vectors for all
functions derived from SHAincluding but not limited to KMACXOF can
be found at and
Additional resource: if you clearly and conspicuously provide explicit attribution
in the source files and documentation of your project failing to do so would
constitute plagiarism you can inspire your Java implementation of SHA and
the derived function SHAKEboth needed to implement cSHAKE and then
KMACXOF on MarkkuJuhani Saarinens very readable C implementation:
NB: this is
just a source of inspiration for your work and does not mean everything you
might need is in there!
Services the app must offer for part :
The app does not need to have a GUI a command line interface is acceptable
but it must offer the following services in a clear and simple fashion each item
below is one of the project parts See the detailed specification below:
points Compute a plain cryptographic hash of a given file this requires
implementing and testing cSHAKE and KMACXOF first
BONUS: points Compute a plain cryptographic hash of text input by the user
directly to the app instead of having to be read from a file
points Compute an authentication tag MAC of a given file under a given
passphrase.
BONUS: points Compute an authentication tag MAC of text input by the
user directly to the app instead of having to be read from a file under a given
passphrase.
points Encrypt a given data file symmetrically under a given passphrase.
points Decrypt a given symmetric cryptogram under a given passphrase.
The actual instructions to use the app and obtain the above services must be
part of your project report in PDF
Highlevel specification of the items above:
Notation: We adopt the notation from NIST SP : KMACXOFk m LTCSS Cryptography
Practical project cryptographic library & app part
Version: Mar
Your homework in this course consists of a programming project developed in
two parts. Make sure to turn in the Java source files, and only the source files,
for each part of the project. Note that the second part depends on extends, and
includes, the first part of the project.
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
