Assignment-02-Solutions
pdf
keyboard_arrow_up
School
Carleton University *
*We aren’t endorsed by this school
Course
4810
Subject
Computer Science
Date
Jan 9, 2024
Type
Pages
15
Uploaded by CountFlagTrout38
SYSC 4810: Introduction to Network and Software Security
Module 2
Assignment
Fall 2021
Dr. J. Jaskolka
Carleton University
Department of Systems and Computer Engineering
Posted: September 23, 2021
Due: October 10, 2021
Due on Sunday, October 10, 2021 by 11:59PM
This assignment contains 15 pages (including this cover page) and 8 problems.
You are responsible for
ensuring that your copy of the assignment is complete.
Bring any discrepancy to the attention of your
instructor.
Special Instructions:
1.
Do as many problems as you can.
2. Start early as this assignment is much more time consuming than you might initially think!
3. The burden of communication is upon you. Solutions not properly explained will not be considered
correct. Part of proper communication is the appearance and layout. If we cannot “decode” what you
wrote, we cannot grade it as a correct solution.
4. You may consult outside sources, such as textbooks, but
any use
of
any source
must
be documented
in the assignment solutions.
5. You are permitted to discuss
general aspects
of the problem sets with other students in the class, but
you must hand in your own copy of the solutions.
6. Your assignment solutions are due by 11:59PM on the due date and must be submitted on
Brightspace
.
•
Late assignments will be graded with a late penalty of 20% of the full grade per day
up to 48
hours past the deadline
.
7. You are responsible for ensuring that your assignment is submitted correctly and without corruption.
Problem
1
2
3
4
5
6
7
8
Total
Points:
10
10
5
10
5
10
10
10
70
Page 1 of 15
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
In this assignment, you will participate in activities related to the operation and use of cryptographic tools and
techniques. This assignment aims to assess your understanding of the basic principles underlying the main
cryptographic concepts and technologies available today, including symmetric and asymmetric encryption,
and digital signatures.
Acknowledgment
This assignment is based off the SEED Labs: “Secret-Key Encryption Lab” and “RSA Public-Key Encryption
and Signature Lab” developed by Wenliang Du at Syracuse University.
Submission Requirements
Please read the following instructions very carefully and follow them precisely when submitting your assignment!
The following items are required for a complete assignment submission:
1.
PDF Assignment Report
: Submit a detailed report that carefully and concisely describes what
you have done and what you have observed. Include appropriate code snippets and listings, as well
as screenshots of program outputs and results. You also need to provide an adequate explanation of
the observations that are interesting or surprising. You are encouraged to pursue further investigation
beyond what is required by the assignment description.
2.
ZIP Archive of Source Code
: In addition to embedding source code listings in your assignment
report, create and submit a ZIP archive of all programs that you write for this assignment.
Please
name each of your source code files with the problem number to which they correspond (e.g., for
Problem 7(a), the source code file should be named
Problem7a.c
).
Your source code must compile
and run, producing the desired output. Also, please remember to provide sufficient comments in your
code to describe what it does and why.
3.
ZIP Archive of Screenshot Image Files
: In addition to embedding screenshots of program outputs
and results in your assignment report, create and submit a ZIP archive of all of the raw screenshot
images that you capture for this assignment.
Grading Notes
An important part of this assignment is following instructions. As such, the following grade
penalties
will
be applied for failure to comply with the submission requirements outlined above:
•
Failure to submit an Assignment Report will result in a grade of
0
for the assignment.
•
Failure to submit the Source Code files will result in deduction of
10%
of the full grade of the assignment.
•
Failure to submit the Screenshot Image files will result in deduction of
10%
of the full grade of the
assignment.
•
Failure of Source Code to compile/run will result in a grade of
0
for the corresponding problem(s).
•
Failure to submit any deliverable in the required format (PDF or ZIP) will result in deduction of
5%
of the full grade of the assignment.
Page 2 of 15
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
Part I
Assignment Challenge
1
Introduction
Imagine that you are an employee of a computer security consulting firm. Your consulting firm has recently
been approached and contracted by a medical imaging clinic, called
MedView Imaging
, that cooperates with
local physicians offices and hospitals to provide diagnostic medical imaging services.
MedView Imaging
has
requested recommendations to help them decide on the specific cryptographic mechanisms to employ in their
new information management systems.
You have been assigned as the lead investigator for this contract
and are responsbile for preparing a report to fulfill the contractual obligations of your consulting firm with
MedView Imaging
. The details of these contractual obligations are provided in the sections below.
The different parts of this assignment are designed to guide your investigation into the client’s concerns. At
the end of the assignment, you will be required to summarize your findings and provide recommendations
to
MedView Imaging
addressing their concerns.
2
Context
MedView Imaging
specializes in diagnostic medical imaging (see Figure
1
).
Diagnostic imaging includes
ultrasound, computed tomography (CT) scans, X-rays (including mammography), magnetic resonance
imaging (MRI), nuclear medicine imaging, and positron emission tomography (PET). When patients are
referred by physicians for diagnostic medical imaging services, radiologists at
MedView Imaging
perform the
required imaging service and provide a preliminary diagnosis. The images that are obtained from the service
are stored in a central database, along with a short description indicating the nature of the diagnosis from
the radiologist. When required, the images and diagnostic notes are sent to the attending physician so that
appropriate treatments can be prescribed.
Protected health information (PHI) refers to the demographic information, medical histories, test and
laboratory results, mental health conditions, insurance information and other data that a healthcare
professional collects to identify an individual and determine appropriate care.
Because
MedView Imaging
is capturing, transmitting, and storing sensitive PHI, it requires a cryptographic solution to protect the
confidentiality of the information. However,
MedView Imaging
is currently undecided on the specific encryption
algorithms and associated parameters.
Figure 1:
MedView Imaging
specializes in diagnostic medical imaging.
Page 3 of 15
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
- Access to all documents
- Unlimited textbook solutions
- 24/7 expert homework help
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
Furthermore,
MedView Imaging
needs to ensure that the messages that are received by the central database
and subsequently sent to the physicians are authentic and that they cannot be altered in transit. This must
be done to avoid any issues related to incorrectly diagnosing and prescribing incorrect treatments to patients.
For this purpose, they have considered using digital signatures, but are unsure whether this solution will be
suitable for satisfying their security requirements.
MedView Imaging
has expressed the following requirements and constraints of their system, which must be
considered in the eventual choices of cryptographic mechanisms.
1. Medical images from an imaging service (e.g., CT, X-ray, MRI, etc.) must be transmitted to the central
database. These transmissions must be encrypted.
2. Messages received by the central database and sent to a physician must be authenticated to ensure
that they are from a trusted imaging unit and radiologist, and that the contents of the message have
not been altered in transit.
3. Performance should be considered, but security is more important as there are serious consequences if
PHI is mishandled.
4. Key distribution and management is not an issue and will be determined based on the recommendations
and eventual selections of the cryptographic mechanisms.
5. The information systems should comply with the
Health Insurance Portability and Accountability Act
and NIST Cybersecurity Special Publication 1800-24,
Securing Picture Archiving and Communication
System
, but verifying and validating compliance with these documents is outside the scope of this
contract.
3
Obligations
At the end of this assignment, you will be required to address the following concerns of
MedView Imaging
:
1. Provide a recommendation for a cryptographic solution to protect the confidentiality of the PHI (e.g.,
medical images, diagnostic notes, etc.).
The recommendation should include a type of encryption,
algorithm, key lengths, cipher modes, etc. Your recommendation must be justified with experimental
results.
2. Provide a recommendation for message authentication. The client has expressed interest in using digital
signatures. You should explain the suitability of this choice by discussing the potential issues with this
choice. If you deem the choice of digital signatures to be unsuitable, recommend an alternative solution.
In any case, your recommendation must be justified with experimental results, or a detailed discussion
of the strengths and limitations of your recommendation.
Page 4 of 15
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
Part II
Environment Setup
This assignment will be conducted using a pre-built virtual machine (VM) image. All of the necessary tools,
software, and libraries that are needed for the assignment have been installed on the virtual machine image.
We will assume that you already have a virtual machine set up from the Module 1 Assignment. If you have
not yet completed the Module 1 Assignment, you will need to do so before continuing with this assignment.
*Important Note*
It is essential that you set up the virtual machine as early as possible to ensure that
you have time to address any technical difficulties that you may face. The instructor and the TA will not
be able to provide adequate technical support close to the assignment due date.
Page 5 of 15
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
Part III
Symmetric Cryptography
1
Introduction
The most commonly used symmetric encryption algorithms such as DES, 3DES and AES are block ciphers.
Block ciphers process plaintext input in fixed-size blocks and produce a block of ciphertext of equal size for
each plaintext block. In the case of DES and 3DES, the block length is 64 bits, and for AES the block size
is 128 bits. For longer amounts of plaintext, it is necessary to break the plaintext into blocks (padding the
last block if necessary). To apply a block cipher in a variety of applications, five modes of operation have
been defined and are intended to cover virtually all the possible applications of encryption for which a block
cipher could be used. These modes are intended for use with any symmetric block cipher.
In this part of the assignment, you will becomes familiar with fundamental concepts of symmetric encryption,
including symmetric encryption algorithms and symmetric block cipher modes using
openssl
.
2
Background
The
openssl enc
command can be used to encrypt and decrypt files.
$ openssl enc -ciphertype -e -in plain.txt -out cipher.txt -K key -iv intial_vector
•
-ciphertype
stands for the cipher and mode to be used.
Examples:
-aes-128-cbc
,
-bf-cbc
,
-aes-128-cfb
, etc.
•
plain.txt
is the input file to be encrypted
•
cipher.txt
is the output file containing the ciphertext resulting from the encryption
•
key
is the key used for encryption (in hexadecimal). Example:
00112233445566778899AABBCCDDEEFF
•
initial_vector
is the initialization vector to be used (in hexadecimal). Example:
0102030405060708
Some common options for the
openssl enc
command are provided below:
-in <file>
input file
-out <file>
output file
-e
encrypt
-d
decrypt
-K/-iv
key/initialization vector in hexadecimal
-[pP]
print the key/initialization vector (then exit -P)
You can find the meaning of the command-line options and all of the supported cipher types by typing
man enc
or
man openssl
.
Page 6 of 15
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
- Access to all documents
- Unlimited textbook solutions
- 24/7 expert homework help
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
3
Problems and Tasks
Problem 1
[10 points]
Symmetric Encryption using Different Ciphers and Modes:
This experiment will enable you to
the behaviour of different ciphers and modes of poperation when using symmetric encryption algorithms.
To complete this problem, do the following:
(a) [1 point]
Create a plaintext file
: You can populate the file with any contents you would like.
For example, the contents of the file may be: “This is a confidential message intended only for my
friend.” Do not forget to describe the file and its contents in your report.
(b) [4 points]
Encrypt the file
: Using the
openssl enc
command, encrypt the file that you created.
Do this using at least THREE (3) different cipher types but use the same key and initialization
vector. Be sure to clearly state the ciphers and the chosen modes that you have selected.
(c) [5 points]
Verify the output
: Once the files are encrypted, most of the data in the file will not
be printable. To observe the contents of the output file, use the command-line hex viewing tool
xxd
as follows:
$ xxd cipher.txt
Explain your findings and clearly identify what you notice about each of the ciphertexts that are
generated.
Solution:
(a) Award 1 point for describing the plaintext file and its contents. (b) Award 1 point
for an adequate description of the process for encrypting the file (with screenshots and/or code
snippets) for each of the selected ciphers (3 points total).
Award 1 point for clearly stating the
selected ciphers and modes. (c) Award 1 point for an adequate description of the process for viewing
the encrypted contents of the file (with screenshots and/or code snippets) for each of the selected
ciphers (3 points total). Award 2 points for an appropriate explanation of the findings.
Students should identify that although the plaintext, key, and initialization vector are all the same,
we get different ciphertexts for different choices of ciphers and different modes of operations (even
for the same cipher).
Problem 2
[10 points]
Encryption Mode:
ECB vs. CBC:
MedView Imaging
needs to store encrypted images from an
imaging service (e.g., CT, X-ray, MRI, etc.) in its central database. The files
brain1.bmp
and
brain2.bmp
each contain a sample MRI image from a brain scan and can be downloaded from the assignment
resources for this assignment on Brightspace. We would like to encrypt these images, so people without
the encryption keys cannot know what is in the image. To complete this problem, do the following:
(a) [2 points]
Encrypt
the
file
:
Using the
openssl enc
command as in Problem 1,
encrypt
brain1.bmp
using the ECB (Electronic Code Book) and CBC (Cipher Block Chaining) modes
using the AES-128 bit cipher.
(b) [1 point]
Replace the encrypted headers
: We need to treat the encrypted image as an image,
and use an image viewing software to display it. However, for the
.bmp
file, the first 54 bytes contain
the header information about the image. This header must be set correctly so the encrypted file
can be treated as a legitimate
.bmp
file. We will replace the header of the encrypted image with
that of the original image. We can use the
bless
hex editor tool (already installed on the virtual
machine) to directly modify binary files. We can also use the following commands to get the header
from
p1.bmp
, the data from
p2.bmp
(from offset 55 to the end of the file), and then combine the
header and data together into a new file as follows:
Page 7 of 15
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
$ head -c 54 p1.bmp > header
$ tail -c +55 p2.bmp > body
$ cat header body > new.bmp
(c) [2 points]
View the encrypted images and draw conclusions
: Display the encrypted image
using an image viewing program; an image viewer program called
eog
is installed on the virtual
machine.
Can you derive any useful information about the original image from the encrypted
picture? Explain your observations.
(d) [5 points] Repeat Parts (a)-(c) using
brain2.bmp
and report your observations.
Do you notice
anything different about the results with respect to the original image?
Solution:
(a) Award 1 point for an adequate description of the process for encrypting the file (with
screenshots and/or code snippets) for each of the cipher modes (2 points total). (b) Award 1 point for
an adequate description of the process of replacing the encrypted headers (with screenshots and/or
code snippets) for each file. (c) Award 2 points for an appropriate explanation of the findings (with
screenshots and/or code snippets). (d) Award 5 points for a suitable description of the activities as
in Parts (a)-(c).
Students should identify that when encrypting with ECB mode, we can still make out some parts
of the image, because some patterns of data are still visible.
This is because ECB mode always
encrypts the same plaintext to the same ciphertext for a given key, hence patterns of colour are still
visible.
On the other hand, when encrypting with CBC mode, the data resembles random noise,
and no patterns are visibly discernable. This is because CBC mode utilizes the data encrypted in
the previous block to encrypt the current block, hence, all blocks with identical plaintext will not
generate the same ciphertext.
Page 8 of 15
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
Part IV
Asymmetric Cryptography
1
Introduction
RSA (Rivest Shamir Adleman) is one of the first public-key cryptosystems and is widely used for secure
communication. The RSA algorithm first generates two large random prime numbers, and then use them
to generate public and private key pairs, which can be used to do encryption, decryption, digital signature
generation, and digital signature verification. The RSA algorithm is built upon number theories, and it can
be quite easily implemented with the support of libraries.
In this part of the assignment, you will gain hands-on experience with asymmetric cryptography and
the RSA algorithm by generating public/private keys, performing encryption/decryption, and signature
generation/verification. Essentially, you will be implementing the RSA algorithm using the C programming
language.
2
Background
The RSA algorithm involves computations on large numbers.
These computations cannot be directly
conducted using simple arithmetic operators in programs, because those operators can only operate on
primitive data types, such as 32-bit integer and 64-bit long integer types. The numbers involved in the RSA
algorithms are typically more than 512 bits long.
For example, to multiply two 32-bit integer numbers
a
and
b
, we just need to use
(
a
×
b
)
in our program. However, if they are big numbers, we cannot do that
anymore; instead, we need to use an algorithm (i.e., a function) to compute their products.
There are several libraries that can perform arithmetic operations on integers of arbitrary size.
In this
assignment, we will use the Big Number library provided by
openssl
.
To use this library, we will define
each big number as a
BIGNUM
type, and then use the APIs provided by the library for various operations,
such as addition, multiplication, exponentiation, modular operations, etc.
2.1
BIGNUM APIs
All of the big number APIs can be found from
https://linux.die.net/man/3/bn
.
In the following, we
describe some of the APIs that are needed for this assignment.
•
Some of the library functions require temporary variables. Since dynamic memory allocation to create
BIGNUMs is quite expensive when used in conjunction with repeated subroutine calls, a
BN_CTX
structure is created to hold
BIGNUM
temporary variables used by library functions. We need to create
such a structure, and pass it to the functions that require it.
BN_CTX *ctx = BN_CTX_new();
•
Initialize a
BIGNUM
variable
BIGNUM *a = BN_new();
•
There are a number of ways to assign a value to a
BIGNUM
variable.
// Assign a value from a decimal number string
BN_dec2bn(&a,
"12345678901112231223"
);
// Assign a value from a hex number string
BN_hex2bn(&a,
"2A3B4C55FF77889AED3F"
);
Page 9 of 15
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
- Access to all documents
- Unlimited textbook solutions
- 24/7 expert homework help
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
// Generate a random number of 128 bits
BN_rand(a, 128, 0, 0);
// Generate a random prime number of 128 bits
BN_generate_prime_ex(a, 128, 1, NULL, NULL, NULL);
•
Print out a big number.
void
printBN(
char
*msg, BIGNUM * a) {
// Convert the BIGNUM to number string
char
* number_str = BN_bn2dec(a);
// Print out the number string
printf(
"%s %s\n"
, msg, number_str);
// Free the dynamically allocated memory
OPENSSL_free(number_str);
}
•
Compute
res
=
a
−
b
and
res
=
a
+
b
:
BN_sub(res, a, b);
BN_add(res, a, b);
•
Compute
res
=
a
×
b
. It should be noted that a
BN_CTX
structure is needed in this API.
BN_mul(res, a, b, ctx);
•
Compute
res
= (
a
×
b
) mod
n
:
BN_mod_mul(res, a, b, n, ctx);
•
Compute
res
=
a
c
mod
n
:
BN_mod_exp(res, a, c, n, ctx);
•
Compute modular multiplicative inverse, i.e., given
a
, find
b
, such that
(
a
×
b
) mod
n
= 1
.
BN_mod_inverse(b, a, n, ctx);
2.2
A Complete Example
The following code sample shows a complete example where we initialize three
BIGNUM
variables,
a
,
b
, and
n
.
We then compute
(
a
×
b
)
and
(
a
b
mod
n
)
.
/* bn_sample.c */
#include
<stdio.h>
#include
<openssl/bn.h>
#define
NBITS 256
void
printBN(
char
*msg, BIGNUM * a) {
// Use BN_bn2hex(a) for hex string
// Use BN_bn2dec(a) for decimal string
char
* number_str = BN_bn2hex(a);
printf(
"%s %s\n"
, msg, number_str);
OPENSSL_free(number_str);
}
Page 10 of 15
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
int
main () {
BN_CTX *ctx = BN_CTX_new();
BIGNUM *a = BN_new();
BIGNUM *b = BN_new();
BIGNUM *n = BN_new();
BIGNUM *res = BN_new();
// Initialize a, b, n
BN_generate_prime_ex(a, NBITS, 1, NULL, NULL, NULL);
BN_dec2bn(&b,
"273489463796838501848592769467194369268"
);
BN_rand(n, NBITS, 0, 0);
// res = a*b
BN_mul(res, a, b, ctx);
printBN(
"a*b = "
, res);
// res = a^b mod n
BN_mod_exp(res, a, b, n, ctx);
printBN(
"a^b mod n = "
, res);
return
0;
}
Compilation
We can use the following command to compile
bn_sample.c
.
$ gcc bn_sample.c -lcrypto
NOTE
: the character after
-
is the letter
ℓ
, not the number 1; it tells the compiler to use the
crypto
library.
3
Problems and Tasks
Problem 3
[5 points]
Deriving the Private Key:
An important requirement for asymmetric cryptography is that it should
be computationally infeasible for an adversary, knowing the public key, to determine the private key. In
other words, the private key should remain private. This experiment will demonstrate how to derive the
private key given, knowing the public key and having determined the two prime numbers
p
and
q
(in
some way).
Let
p
,
q
, and
e
be three prime numbers. Let
n
=
p
×
q
. We will use
(
e, n
)
as the public key. Write a C
program to calculate the private key
d
. The hexadecimal values of
p
,
q
, and
e
are listed below.
p = CF751B1FA7FD450223CD96CDABE96AC7
q = FD8F0F9D611E28DD688447C0E9A0CDBD
e = 41AC7
It should be noted that although
p
and
q
used in this problem are quite large numbers, they are not
large enough to be secure.
We intentionally make them small for the sake of simplicity.
In practice,
these numbers should be at least 512 bits long (the ones used here are only 128 bits). In your report,
you should explain why this is the case!
Page 11 of 15
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
Solution:
Award 2 points for an adequate explanation of how to derive the private key.
Award
2 points for a suitable C program that computes the private key. Award 1 point for a correct output
of the private key.
In RSA, the private key
d
is the multiplicative inverse of the public key
e
modulo
ϕ
(
n
)
, i.e.
(
d
×
e
) mod
ϕ
(
n
)
= 1
Students are expected to use the
BIGNUM
API to provide a C program that calculates the private
key as:
d = 5B236C4B530D774E7DCCD2D9B2B4B2D730AD06EAF7C03E765A2CA686FA170C77
Problem 4
[10 points]
Encrypting a Message:
Let
(
e, n
)
be the public key.
Write a C program to encrypt the message
“
John Doe:
Brain MRI -> Clear
” (the quotations are not included). We need to convert this ASCII
string to a hexadecimal string, and then convert the hexadecimal string to a
BIGNUM
using the
hex-to-bn
API
BN_hex2bn()
. The following
python
command can be used to convert a plain ASCII string to a
hexadecimal string.
$ python3 -c
’print("My ACII string.".encode().hex())’
4D7920415343494920737472696E672E
The public keys are listed below in hexadecimal. We also provide the private key
d
to help you verify
your encryption result. Be sure to explain how you verified the result.
n = 57F4953D30DBD5BBB1A4CA66F9F8A014D1D77AE33E07A1959C2D6AC4F0C1EDD
e = 24DB1
M = John Doe: Brain MRI -> Clear
d = 04D9C2FF79A74783969D14C8DE260B4B98E98F30A71E92AF2D03432F88047951
Solution:
Award 2 points for an adequate explanation of how to encrypt the message.
Award
2 points for an adequate explanation of how to verify the encryption result. Award 5 points for a
suitable C program that encrypts the message and verifies the encryption result. Award 1 point for
a correct output of the ciphertext.
Students are expected to provide a C program that generates the following ciphertext:
C = 02A30B47BC42F2E66D2649F3B6D62FD6BF0C4755448E35B1097B4E28C1393FF5
The program should encrypt the message using the RSA encryption algorithm:
M
e
mod
n
. The
results should be verified using the RSA decryption algorithm:
C
d
mod
n
. The decoded message
should be
M
.
Problem 5
[5 points]
Decrypting a Message:
The public/private keys used in this problem are the same as the ones used
in Problem 4. Write a C program to decrypt the following ciphertext
C
.
C = 019D18EA69AB6937E418B8AD5F9A2553B46CFE1A1064F06E4144A8EC67A6B3B0
You will need to convert the result back to a plain ASCII string. The following
python
command can
be used to convert a hexadecimal string back to a plain ASCII string.
Page 12 of 15
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
- Access to all documents
- Unlimited textbook solutions
- 24/7 expert homework help
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
$ python3 -c
’print(bytes.fromhex("4D7920415343494920737472696E672E").decode("ASCII"))’
My ASCII string.
Solution:
Award 1 point for an adequate explanation of how to decrypt the ciphertext.
Award
3 points for a suitable C program that decrypts the ciphertext. Award 1 point for a correct output
of the plaintext (in both hexadecimal as output by the C program and converted to ASCII).
Students are expected to provide a C program that gives the following plaintext:
M = 4A6F792052616E643A2041726D20582D726179202D3E204672616374757265
Similar to Problem 4, the ciphertext is decrypted using the RSA decryption algorithm:
C
d
mod
n
.
Coverting back to ASCII, the plaintext message should read “
Joy Rand:
Arm X-ray -> Fracture
”
(the quotations are not included).
Problem 6
[10 points]
Signing a Message:
The public/private keys used in this problem are the same as the ones used in
Problem 4.
(a) [5 points] Write a C program to generate a signature for the following message:
M = Ben Rice: Knee MRI -> MCL tear
You should directly sign this message, instead of signing its hash value.
(b) [5 points] Make a slight change to the message
M
, such as changing ‘MCL’ to ‘LCL’, and sign the
modified message. Compare both signatures and describe what you observe.
Solution:
(a) Award 1 point for an adequate explanation of generate the signature. Award 3 points
for a suitable C program that generates the signature. Award 1 point for a correct output of the
signature. (b) Award 2 points for showing how the new signature was generated based on the changes
to the message. Award 3 points for an adequate explanation of the observations.
Students are expected to provide a C program that generates the following signature:
S = 03225C97EE592D714AE940132B0154550C0A9F062F8D823BF029C59DAA78657C
The message is signed using the RSA signing algorithm:
M
d
mod
n
. Students should observe that
changing the message slightly gives a completely different signed message.
Problem 7
[10 points]
Verifying a Signature:
Suppose
MedView Imaging
’s central systems receives a message “
Lisa McKay:
Brain CT -> Benign
” (the quotations are not included) from a radiologist, with the signature
S
. We
know that radiologist’s public key is
(
e, n
)
.
(a) [5 points] Write a C program to verify whether or not the signature is indeed that of the radiologist.
The public key and signature (in hexadecimal) are listed below:
M = Lisa McKay: Brain CT -> Benign
S = 54AAB2D38593EB85BE29B4D084B348F36E8099DDE34A8FE57CE5011F2AF20007
e = A223F
n = BBE2F8AE1FFB0B44C55B9AEB8E55FE300A34590FC19D06485C31563421281819
Page 13 of 15
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
(b) [5 points] Suppose that the signature is corrupted, such that the last byte of the signature changes
from
07
to
08
, i.e, there is only one bit of change. Repeat Part (a) of this problem and describe
what happens to the verification process.
Solution:
(a) Award 1 point for an adequate explanation of verifying the signature. Award 3 points
for a suitable C program that verifies the signature. Award 1 point for a correct output of the original
message. (b) Award 2 points for showing the verification of the corrupted signature. Award 3 points
for an adequate explanation of the observations.
Students are expected to provide a C program that recovers the following signed message:
M = 4C697361204D634B61793A20427261696E204354202D3E2042656E69676E
The message is obtained using the RSA signature verification algorithm:
S
e
mod
n
. Students should
observe that the original message is recovered, thereby verifying that the signature was indeed that of
the radiologist. Students should also observe that a corrupted signature will not result in the correct
message being recovered in the verification, thus demonstrating that the signature is incorrect and
is not the message sent by the radiologist.
Page 14 of 15
SYSC 4810 — Module 2
Assignment
Due Date: October 10, 2021
Part V
Summary of Findings
1
Reminder: Obligations
You are required to address the following concerns of
MedView Imaging
:
1. Provide a recommendation for a cryptographic solution to protect the confidentiality of the PHI
(e.g., medical images, diagnostic notes, etc.).
The recommendation should include a type of
encryption, algorithm, key lengths, cipher modes, etc.
Your recommendation must be justified
with experimental results.
2. Provide a recommendation for message authentication. The client has expressed interest in using
digital signatures.
You should explain the suitability of this choice by discussing the potential
issues with this choice. If you deem the choice of digital signatures to be unsuitable, recommend an
alternative solution. In any case, your recommendation must be justified with experimental results,
or a detailed discussion of the strengths and limitations of your recommendation.
2
Problems and Tasks
Problem 8
[10 points]
Recommendations:
Write a summary of your recommendations. Write this summary as if you are
going to submit it to
MedView Imaging
. This means that it should be clear and concise. It should address
all concerns outlined in the contractual obligations above and also take into consideration the client’s
requirements and constraints.
HINT:
You may want to refer to specific observations from your experiments obtained in the rest of
the problems in this assignment to justify your recommendations.
Solution:
Award 5 points for each recommendation.
Students may have many different answers. Points should be awarded for reasonable recommendations
that are supported by experimental results and that are justified.
END OF ASSIGNMENT
Page 15 of 15
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
- Access to all documents
- Unlimited textbook solutions
- 24/7 expert homework help
Related Documents
Recommended textbooks for you
Programming Logic & Design Comprehensive
Computer Science
ISBN:9781337669405
Author:FARRELL
Publisher:Cengage
Np Ms Office 365/Excel 2016 I Ntermed
Computer Science
ISBN:9781337508841
Author:Carey
Publisher:Cengage

LINUX+ AND LPIC-1 GDE.TO LINUX CERTIF.
Computer Science
ISBN:9781337569798
Author:ECKERT
Publisher:CENGAGE L

Principles of Information Systems (MindTap Course...
Computer Science
ISBN:9781285867168
Author:Ralph Stair, George Reynolds
Publisher:Cengage Learning

Fundamentals of Information Systems
Computer Science
ISBN:9781337097536
Author:Ralph Stair, George Reynolds
Publisher:Cengage Learning

Principles of Information Systems (MindTap Course...
Computer Science
ISBN:9781305971776
Author:Ralph Stair, George Reynolds
Publisher:Cengage Learning
Recommended textbooks for you
- Programming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:CengageNp Ms Office 365/Excel 2016 I NtermedComputer ScienceISBN:9781337508841Author:CareyPublisher:CengageLINUX+ AND LPIC-1 GDE.TO LINUX CERTIF.Computer ScienceISBN:9781337569798Author:ECKERTPublisher:CENGAGE L
- Principles of Information Systems (MindTap Course...Computer ScienceISBN:9781285867168Author:Ralph Stair, George ReynoldsPublisher:Cengage LearningFundamentals of Information SystemsComputer ScienceISBN:9781337097536Author:Ralph Stair, George ReynoldsPublisher:Cengage LearningPrinciples of Information Systems (MindTap Course...Computer ScienceISBN:9781305971776Author:Ralph Stair, George ReynoldsPublisher:Cengage Learning
Programming Logic & Design Comprehensive
Computer Science
ISBN:9781337669405
Author:FARRELL
Publisher:Cengage
Np Ms Office 365/Excel 2016 I Ntermed
Computer Science
ISBN:9781337508841
Author:Carey
Publisher:Cengage

LINUX+ AND LPIC-1 GDE.TO LINUX CERTIF.
Computer Science
ISBN:9781337569798
Author:ECKERT
Publisher:CENGAGE L

Principles of Information Systems (MindTap Course...
Computer Science
ISBN:9781285867168
Author:Ralph Stair, George Reynolds
Publisher:Cengage Learning

Fundamentals of Information Systems
Computer Science
ISBN:9781337097536
Author:Ralph Stair, George Reynolds
Publisher:Cengage Learning

Principles of Information Systems (MindTap Course...
Computer Science
ISBN:9781305971776
Author:Ralph Stair, George Reynolds
Publisher:Cengage Learning