HW#5 - Hints, Suggestions, and Warnings
General
Passwords
- Question #1: No hard and fast correct answer - we are looking for
something reasonable. Be sure to cite your reference in your answer.
- Question #3: Consider the following: Would the answer be more, less, or
the same if the problems specified that passwords had to be exactly 10
characters long?
Dictionary Attack
- You must copy the files to your local machine before running them.
Otherwise the Raptor program will not be able to find the dictionary file.
Security Goals/Threats
- The answers to some of these can be quite subjective, however just
putting down multiple goals hoping that you've included the right one won't
get you anywhere.
- For each attack, list the goal that is being attacked and a very short
(a few words or one sentence) on why or how that attack is threatening the
listed goal. Try to decide on the single goal that is most directly
threatened, although feel free to mention other goals that are indirectly
threatened. What I am looking for are reasonable answers - if you can
convince me that a given attack is a threat against a given security goal
according to your line of reasoning, you'll get credit even if your answer
wasn't the "correct" one.
RSA Public Key Cryptography
- We didn't get a chance to talk about this in class, but there is very
little to it.
- Be sure you understand the basic concepts in the Security Supplement
reading.
- Don't let the math scare you - because you don't have to do or
understand any of it. You are given a link (PKI Page) on the CS110 home page
and all you need to do is enter the message (a number) and the selected key
(two numbers) and press "calculate".
- When asked which key to use (Q# 14, 16, 18a, 19a) the following
identifiers are fine - you don't need to give the actual key values:
- My Public Key
- My Private Key
- AOC's Public Key
- AOC's Private Key
- The last two questions (18 and 19) involve a two step process. Consider
the following analogy: I take my message and lock in an a box. The neat
thing about this box is that anyone in the world (specifically including
you) can unlock and open it, but I am the only person in the world that was
able to close and lock it. The idea being that if you receive this box and
open it, you can have a high degree of confidence that I am the one that
actually put whatever you find inside in there - this is what we mean by
"signing" the message. But since this box can be opened by anyone in the
world, I need something more if I want you to be the only person to be able
to get the message. So I take the entire box and throw it into another box.
The neat thing about this box is that anyone in the world (specifically
including me) can close and lock it, but you are the only person in the
world that can unlock and open it - this is what we mean by "encrypting" the
message. With this in mind, consider the order that things must happen in as
we exchange this message. There are two possibilities:
- Sender: Sign then Encrypt ==> Receiver: Decrypt then Unsign
- Sender: Encrypt then Sign ==> Receiver: Unsign then Decrypt
- Notice that the key (no pun intended) is that the receiver must undo the
sender's actions in the reverse order that the sender applied them - for the
same reason that whichever box the sender put things in last is the first
box that I have to open.
- What should be true about the answer to Q19b relative to the answer to
Q17 that will tell you if you have done things correctly?
Simple Symmetric Cryptography - Caesar Cipher
- REMEMBER: You MUST comment your algorithm or you WILL lose points!
- REMEMBER: You MUST break your algorithm into reasonable pieces and use
subcharts accordingly or you WILL lose points!
- If you took good notes in class, then you have most of this problem done
(whether you realize it or not).
- When you get done, you will have a fairly involved algorithm. If you
insist (and I guarantee that a portion of you will, not matter what advice I
give here) on tackling it all in one shot you are very likely to end up
spending a lot of extra time on it and may well never get it to work. That's
your choice. For those that want to be more systematic in their approach,
break the problem down in to simpler pieces and then build up the result.
For instance, forget about being able to work for both upper case and lower
case, get it to work for just upper case. Once it does that, modify it to
also deal with lower case.
- REMEMBER: Partial credit is your friend! If you turn in a program that
works completely for upper case but has problems with lower case (or
vice-versa) you will get much more credit than if you turn in a program that
doesn't work for either.
- REMEMBER: The homework handout includes an example run - be sure that
you test that case at the very least.