Greetings,
I guess it depends, crypto is quite a wide subject, what are you going to teach? I'm not familiar with the grading system so... Do you want to implement actual algorithms? Then re implementing md5 Can be a good start! Its not that hard to do and it does look impressive... Other than that, depending on your students level you could have a in depth look at pki set up and management, or even implementing well known algorithms that are a bit harder such as rsa or current aes. In both those endeavors, having handy copies ofCrypt::Openssl::AES and Crypt::Openssl::RSA can be a boon as reference material and such.
If you decide to put yourself in a hacker's shoes (which can do for a fun programming camp) then you can go the audit road. It might take a bit of a preparation but you can grab any entry level cryptanalysis book and do easy two step classes for a bunch of well known ciphers (eg caesar):
- implement the cypher
- Do a cryptanalysis
if your students are very good you can also go in full cracker mode, prepare your course by implementing some algorithms (such as md5,aes, rsa) in a sloppy way, thus introducing a flaw only YOU know about (or a backdoor, depending on the pov) and then look for it with your students.
On that topic, something else you can go about implementing would be a random number generator, I'd advise implementing two, one cryptographically strong and a weak one. Then you make the students use both and study attacks against both, thus demonstrating why using low entropy sources is a bad idea.
Food for thought, food for thought... Hope I have helped.
| [reply] |
Wow sounds like a heck of a lot of ground to cover in 2 weeks!
Intro to programming + cryptography. Geez...
I would be thinking about starting at some place far easier than
MD5. A book on the history of cryptography
could be helpful. It been a decade since I read a book like that
and my memory is fuzzy.
Anyway, I would be thinking of starting with simple substitution
cyphers, like ROT13 and variants.
Some basic probability math would be appropriate with this subject.
I could envision a number of fairly simple programs to help break a
code like that which could be done within the time frame that you have.
I forget the names of many early ciphers, but these things that
used various lookup tables, etc. are implementable with basic programming.
If you have to get into low level details like binary polynomials, then the basics of what that
is and how to program that could overwhelm the students. There is a
limit to what you can do in your 1/2 of the 2 weeks.
How say DES works, could be a lecture, but I doubt a student could go from
"ground zero" to working code in 2 weeks, even with the algorithm clearly
spelled out.
Update: you could have some fun with the Unix password encryption system.
| [reply] |
In a somewhat similar setting, we implemented with my students a Caesar cypher and then spent some time trying to break it with probabilistic analysis. Not too complicated and quite rewarding. But that obviously does not take two weeks.
Anyway, say hello from me to Alice and Bob. ;-)
Update: fixed typo.
| [reply] |
| [reply] |
If you want to teach how to use cryptography in Perl perhaps CryptX distribution covers 99% of cases: sym/asym crypto, hashes, hmacs etc. | [reply] |