I have written an implementation of the Fortuna random number generator in

Go.

Fortuna is a cryptographically strong random number generator, first

described in

the book "Practical Cryptography" by N. Ferguson and B. Schneier (Wiley,

2003).

In the hope that this might be useful for others, I have put my

implementation

online.

homepage: http://www.seehuhn.de/pages/fortuna

source code: https://github.com/seehuhn/fortuna

documentation: http://godoc.org/github.com/seehuhn/fortuna

Comments would be very welcome.

A call for help:

- If you are a cryptographer and could review the correctness and

security of my implementation, this would be great! Did I understand

right that integrating the pool counters for the round-robin

distribution of entropy into the Fortuna package might introduce a

security weakness? (Section 10.5.3 of Practical Cryptography seems to

indicate this, but I don't fully understand the argument.)

- If you are a Go programmer and could review my Go code, this

would be great! Is my code ideomatic? Does the API look plausible?

Did I get the locking right? Is the way I stop the

Accumulator.seedFileTicker in accumulator.go correct?

- Are there any test vectors for Fortuna available? Currently I am using

output from the Python Cryptography Toolkit for testing, but a more

authoritative source of test data would be useful.

- If you know about other implementations of Fortuna and could check

whether, for identical seeds, these give the same output as my

implementation, this would be great!

- If you know how to use automated tests for random number generators

(e.g. the "die hard tests" or "FIPS SP 800-22") and if you could test the

output of my implementation, this would be great.

The fortuna web page http://www.seehuhn.de/pages/fortuna shows

a simple example program which could be used to generate

output to feed into these tests.

- If anybody could contribute more unit tests this would be great!

Many thanks,

Jochen

--

http://www.seehuhn.de/

--

You received this message because you are subscribed to the Google Groups "golang-nuts" group.

To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.

http://www.seehuhn.de/

--

You received this message because you are subscribed to the Google Groups "golang-nuts" group.

To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.