MODULAR PROGRAMME COURSEWORK ASSESSMENT SPECIFICATION
Module Details
Module Code
UFCFT4-15-3
Run sem 3
FIRST SIT 2018/19
Module Title
Cryptography
Module Leader Emily Chui
Module Tutors Emily Chui
Component and Element Number
Program (including source code and executable) and Individual Report
Weighting: (% of the Module’s assessment)
75%
Element Description
Implementation of what have learnt in the module in terms of programs and research of topics expressed in a report
Total Assignment time
20 hours
Dates
Deliverables
Module Leader Signature
Date Issued to Students 4 June, 2019
Date to be Returned to Students TO BE CONFIRMED
Submission Place
SHAPE (Tsing Yi) (Hard Copy)(in Lab) SHAPE MOODLE (Soft Copy)
Submission Date 6 August, 2019
Submission Time
Program Sources, Compiled Programs, Report
Contents
1. Overview of the Assignment
2. Programming T ask Requirements
3. Report Requirements
4. Marking Criteria
5. Deliverables
6. Plagiarism
1. OverviewoftheAssignment
This assignment requires you to complete 4 programming tasks and to write a brief report on your findings. The programming tasks carry 80% of the marks whilst the report carries the remaining 20 marks.
Module learning outcomes are described in the module specification and the ones that are relevant to this assignment are:
• Understand and manipulate the mathematical and theoretical methods on which designs are based.
• Implement algorithms and protocols for particular coding schemes, recognising the need for efficiency in terms of delay, throughput, jitter, computing resources and quality of service.
• Use cryptographic and coding classes available in modern programming language environments, such as Java Security, to implement secure applications
• Evaluate the performance of various coding schemes under application load and change configuration parameters to optimise them
• Explain the strategies that need to be employed whilst attempting to break a cipher.
The assignment is worth 75% of the overall mark for the module. The assignment is described in more details in section 2.
This is an individual assignment.
Working on this assignment will help you to consolidate your understanding of the material that is presented in the lecture. You will also improve your general software development and problem solving skills. If you have questions about this assignment, please send email to the lecturer and discuss them in Tutorial.
2. ProgrammingTaskRequirements
2.1.Task 1. Generating and Verifying ISBN number. 8 marks
Your code should
(1) accept a 9-digit string and generate the check digit and
(2) accept a 10-digit string and determine whether or not it is a valid
ISBN number. Note that ISBN number will have X as the digit 10.
2.2.Task 2. BCH Generating and Correcting. 25 marks.
For the BCH(10,6) generator, unusable numbers must be identified. For the BCH(10,6) error corrector, single and double errors must be corrected, and more- than-two-error cases must be detected.
2.3. Task 3. Brute Force Password Cracking 15 marks
The brute force program should be able to break any password which contains a maximum of six lower-case letters and/or numbers. In order to shorten the testing time, the program should allow the user to input the length of password (1 – 6), then a SHA1 hash. The program should then display the password and the time spent to crack the hash.
2.4.Task 4. RSA Public and Private Key Generator and Cracking of RSA with known modulus value n and the public key e. 22 marks
The RSA Keys generator program should accept two prime numbers p and q and then generate a pair of keys as the public and private keys. (8 marks)
The RSA cracking program should accept the modulus n and a public key, then use the methods introduced in the lectures to find the values of p and q and the corresponding private key efficiently. Your program should display how much time you use to crack the RSA key. A cancel button should be implemented in your program if the cracking process is too long. (14 marks)
2.5. General Requirements (applied to all tasks) 10 marks
Invalid inputs to the program must be identified. For example, if the input for the ISBN number is not a 10 digit long number, a error message must be displayed.
Java should be used in the implementation of the tasks
Your code should exhibit the characteristics of professional code. For example, it should be well-structured and concise. It should be appropriately commented, variables names should be meaningful. The interface should be user friendly.
3. ReportRequirements 20marks
Write a report on what you have learnt from the above programming tasks. This is an open topic, but as a minimum you should discuss the efficiency of the algorithms used, and explain the strategies applied. For task 2.4 (i.e. RSA key cracking), you should conduct timing tests and then include your results and your analysis of these results in the report. The literatures related tasks should be referenced. There is no word limit on the report. However, as a rough guide, 700-800 words should be sufficient.
Also a clear instruction on how to install and run your programs should be included. Otherwise, you will be required to do the demonstration by yourself and marks will be deducted.
4. MarkingCriteria
See marking criteria table in Appendix on the next page.
5. DeliverablesandDemonstration
Students are required to submit the following through moodle:
1. Alistingofthesourcecode
2. Theexecutablesoftheprograms 3. Areport(inMicrosoftWord)
Students can optionally demonstrate programming tasks to tutors if time is allowed.
6. Plagiarism
While it is acceptable to discuss your assignment with your peers, this piece of work is intended as an individual assignment. Works that are substantially similar will be subject to investigation according to University regulations.
entire lines of code from the internet is strictly forbidden. You may use partial lines
Directly copying
of code from the internet. However, you must clearly reference the source.
Appendix – Marking Criteria
0-20%
21-40%
41-60%
61-80%
81-100%
Task 1 Verifying ISBN numbers
(8 marks)
Little or no attempt at the task
The code can’t compile, but it shows some correct understanding of the algorithm
Partially working.
The code has some minor logic errors
Mostly working but failing to pass a test example
Fully working and passing all random tests
Task 2 BCH(10,6) code generating, and error correcting
(25 marks)
Little or no attempt at the task
Only produced partial code for some minor functions. For example, generating BCH(10,6) code
Can detect and correct both single error and double errors for some simple cases. But code still contains logic errors
Can detect and correct not only single error and double errors but also identity more than two errors. Code is almost perfect but it fails to pass a few more complex cases
Fully working and passing all random tests cases provided by module leader. The code is robust and efficient
Task 3 Brute Force Password Cracking (15 marks)
Little or no attempt at the task
The code can’t compile, but it shows some correct understanding of brute force algorithm
The code is correctly working for smaller set of passwords, but can’t scale.
The code is almost perfect but fails to pass a few tests.
Passing all test data provided by module leader, and collecting timing results
Task 4
RSA key generation and cracking
(22 marks)
Little or no attempt at the task
The code can generate RSA keys but cannot crack RSA keys
The code is partially working, e.g. only generate RSA keys and can crack some short RSA keys but can’t scale up
The code can generate correct RSA keys and can crack some longer RSA key passwords. The code passes a few test data and is not so efficient.
The code can generate correct RSA keys and can crack longer RSA key efficiently. The code passes all test data provided by module leader
General Requirement For Programming Tasks
(10 marks)
Little comments in code.
Totally Unstructured code
Limited comments.
Some good program structure but program tasks only achieved less than 40%
Some comments. Good program structure
but program tasks only achieved less than 60%
Detailed comments. Excellent use of program structures
but program tasks only achieved less than 80%
Code quality has reached professional level, and all tasks are completed
Report
(20 marks)
No discussion; no results and/or analysis. Little evidence of insight into the implications of the work completed
Some discussion but misses the main points. Few results and/or results are unrepresentative
Little analysis.
Adequate discussion of what was learnt. Some results are presented and analysed.
Good discussion of what was learnt. Results for functions are well-presented and all are analysed
An excellent discussion of what was learnt and contextualised with reference to academic writing on the subject. Results are well- presented and analysed in depth. All programming tasks are completed.