Starting Encryption

I have an interest in data security, so I looked for some tech that fits with Oberon's minimalism.

The first thing you need for crypto is a good random number source. I didn't find one, but I did port the random number generators from ETH System3 and A2 to the Oberon-07 dialect. I recommend using the A2 one. If someone ever wanted to use this in production code, you'd have to get some source of entropy, e.g. keystroke timings or mouse movements, and feed the result through an algorithm like Fortuna instead.

Then the first actual crypto algorithm I looked at is XXTEA (implementation). It's an interesting symmetric block cipher with a block size of 32 bits, so you can almost use it like a stream cipher (I just pad the last block with zeros). There may be better algorithms, but it's small size is a good advantage. In particular, I've found it useful for obfuscation of data-in-place on low-powered hardware. In this scenario, very high security was not a requirement as the key is stored somewhere else on flash, we just wanted to increase the cost a lot for an attacker.

A nice place to take this work further would be to port Dan Bernstein's TweetNaCl and CurveCP stack.