Sunday, August 9, 2009

Test Driven Cryptography

In agile software development process, there strategies of
development. Test Driven, Feature Driven, Behaviour Driven Development
processes. Yeah yeah so many ways of development in the end what will
be important will be understanding these and scenarios in which to
apply each. I could write a test and write a code that satisfies the
test but even tests can be wrongly written anyway? How do I write a
test if I do not know what to test? Suppose I write my code the best
way I know how test it the best I know how and write a test to keep
what I have already implemented in check. I think that's better for
me. The I would write code -> test manually -> put the check test. I
think this will stand crash testing better than write test -> write
code -> run test. For if the test is semantically wrong the I do not
know until I have written so much code and now I am crash testing.
While I was writing my thesis I was face with this task to test so
many codes with bigger numbers and the speed was getting slower as the
numbers were getting bigger. I tested several implementation of the
algorithm to generate my require Goppa codes. One was very short one
line. One was very long. One the one that had been used all along but
some improvements. In the end I resolved to remain with the improved
one. For the very should was very memory intensive such that bigger
numbers it was getting even longer. The longer one was very cpu
intensive. The improved one was cpu intensive but faster. The
development of a fast algorithm is slow. I agreed. If one already
knows this algorithm then why not just use it? For it will take longer
to redevelop it.
A programmer tries to find algorithms that improve the runtime.
Cryptographers seem to try to find algorithms to increase runtime.
That's quite a fix, isn't it? For cryptosystems are implemented by a
programmers and I am both. Does increasing cryptosystem stay secure by
using bigger numbers? Suppose there is an algorithm that breaks it in
one step and not depending on the size of the key for that matter?
Quite a fix. Most cryptosystems have been tested their strength based
on the wrost-case runtime. That is, the worst case as seen by the
programmer. For the cryptographer the best case is the programmers
worst case and the worst case is the programmers best case. Quite a
fix.
How do we measure the strength of a cryptosystem? Is it the biggest
running time? Why do we need to hide any way? It seems the best
security so far is adherence to truth, right and light. For whatever
we hide will be found one way or another. If whatever I hide has been
found and it is found not to be bad or discriminating. I am safer
still.