Use SystemRandom for secure entropy

I realize that this is a reference implementation and not for production use.  However, it would be better if it used a secure random source (random.SystemRandom) rather than the default.  This is to promote good practices.

The default random.Random class uses the Mersenne Twister, which is not cryptographically secure: http://www.quadibloc.com/crypto/co4814.htm