[pycrypto] Pycrypto, New contributor, TODO & Camellia

Dwayne C. Litzenberger dlitz at dlitz.net
Sun Nov 15 02:39:47 CST 2009


On Sat, Nov 14, 2009 at 05:39:40PM +0800, rusydi hasan wrote:
>Hi Dwayne,
>
>First of all, let me introduce myself. Im rusydi, an undergaduate computer
>science in malaysia.

Hi there!

>I have necessary background in cryptography, specifically block cipher, and
>C programming. Im interested to become a contributor in the next release of
>pycrypto (i read that you need the contributor outside US and Canada and not
>the US/Canada Passport holder), especially in the implementation of some
>block ciphers. But i have few things that i need to ask to you

That's great!  One correction: I only ask that contributors be non-US 
citizens/residents.  Canada is fine; I'm Canadian.  :)

>   1. In TODO list i saw that pycrypto is gonna implement Camellia. AFAIK,
>   camellia is a patented block cipher by Mitsubishi Electric Corporation and
>   Nippon Telegraph and Telephone Corporation (NTT), Japan. I attached the
>   intellectual property statement, submitted to NESSIE submission

Yes, but there is also this:

     Announcement of Royalty-free Licenses for Essential Patents
     of NTT Encryption and Digital Signature Algorithms

     http://www.ntt.co.jp/news/news01e/0104/010417.html

See also the list at:

     http://en.wikipedia.org/wiki/NESSIE

>   2. Is it necessary to implement some Light-Weight Block Cipher in
>   pycrypto ? (such as DESL, TEA, KATAN, SEA, etc) because im planning to
>   submit some of these light-weight block cipher for the pycrypto.

I've never heard of any of these ciphers except for TEA, and TEA is 
vulnerable to a practical related-key attack.

I am reluctant to add any more 64-bit block ciphers, since you can expect 
block collisions after only 2**32 blocks (32 GiB of data) in some modes, 
and they're tricky to use in CTR mode with long-term keys (again, because 
the collision probability is too high).

I am also very reluctant to add any variants of DES, since pretty much 
every variant of DES has been weaker than DES itself.

I don't want to maintain additional ciphers in my tree unless they are 
mature and offer significant advantages over what PyCrypto already has.  
I'm even hesitant to add Camellia---The only reason I'm considering it is 
that PyCrypto only has one 128-bit block cipher right now (AES), and 
because the proposed candidate, Camellia, made it through the NESSIE 
competition.  Even then, I don't consider it a priority, and PyCrypto 2.1 
will be released without it.

I'm much more interested in making the crypto we already have less 
error-prone to use.  For example, we need a PKCS#1 v2.1 implementation, a 
*complete* DSA implementation, improved RSA key generation, improved 
primality testing, more test cases, a Diffie-Hellman implementation, a 
reworking of the Crypto.PublicKey API, and a thorough de-linting of the C 
code.

That said, some people might find your code to be useful, even if it 
doesn't get included in PyCrypto, so feel free to post it to the mailing 
list.  :-)

>   3. How to submit the source code ? since i could not clone the git
>   repository (the port is blocked from my campus network). And i dont have
>   adequate background in open-source software development.

<rant>
Your campus network support people need to stop interfering with the 
end-to-end operation of the Internet Protocol, and to actually start doing 
their job, which is to support you, rather than shifting that burden onto 
me.
</rant>

You should be able to clone from

     http://git.pycrypto.org/crypto/pycrypto-2.x.git

As for submitting source code, you should publish your changes somewhere, 
such as by doing one of the following things:

- Post your patches to the mailing list using "git send-email".
- Generate a series of patches using "git format-patch" and send them to 
   the mailing list yourself.
- Create a git repository somewhere and announce it on the mailing list.

Thanks!

- Dwayne

-- 
Dwayne C. Litzenberger <dlitz at dlitz.net>
  Key-signing key   - 19E1 1FE8 B3CF F273 ED17  4A24 928C EC13 39C2 5CF7
  Annual key (2009) - C805 1746 397B 0202 2758  2821 58E0 894B 81D2 582E


More information about the pycrypto mailing list