<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.yobi.be/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=VentziNikov</id>
	<title>YobiWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.yobi.be/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=VentziNikov"/>
	<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Special:Contributions/VentziNikov"/>
	<updated>2026-05-25T01:48:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=SAGE_%26_cryptology&amp;diff=4538</id>
		<title>SAGE &amp; cryptology</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=SAGE_%26_cryptology&amp;diff=4538"/>
		<updated>2008-07-13T11:12:58Z</updated>

		<summary type="html">&lt;p&gt;VentziNikov: /* Cryptanalysis tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Discussions===&lt;br /&gt;
* [http://groups.google.com/group/sage-devel/browse_thread/thread/9557f299b1ec2fab?hl=en this thread in the ML]&lt;br /&gt;
* [http://www.informatik.uni-bremen.de/cgi-bin/cgiwrap/malb/blosxom.pl this blog] and especially [http://www.informatik.uni-bremen.de/cgi-bin/cgiwrap/malb/blosxom.pl/2008/03/21#sage-crypto-todo this post]&lt;br /&gt;
* [http://modular.math.washington.edu/sage/jsage/ JSAGE]&lt;br /&gt;
* [http://modular.math.washington.edu/sage/dev.html notes for developers]&lt;br /&gt;
===Docs===&lt;br /&gt;
* http://www.cryptlib.com/standards-compliance.htm&lt;br /&gt;
&lt;br /&gt;
===Available===&lt;br /&gt;
* sage.crypto&lt;br /&gt;
* Sage ships [http://www.amk.ca/python/code/crypto PyCrypto]&amp;lt;br&amp;gt;which implements many standard cryptographic algorithms. &amp;lt;br&amp;gt;It is not really meant for research/education/playing around but for production code but maybe something could be done to have easier access to it from within Sage. &amp;lt;br&amp;gt;The docstring level documentation is horrible:&lt;br /&gt;
 sage: import Crypto.Cipher.IDEA&lt;br /&gt;
 sage: Crypto.Cipher.IDEA?&lt;br /&gt;
    x.__init__(...) initializes x; see x.__class__.__doc__ for signature&lt;br /&gt;
* [http://echidna.maths.usyd.edu.au/~kohel/tch/Crypto/index.html book written on Cryptography by David Kohel], using SAGE&lt;br /&gt;
* ? openssl &amp;amp; pyopenssl optional packages&lt;br /&gt;
&lt;br /&gt;
===Wishes===&lt;br /&gt;
* [http://www.sagemath.org:9002/sage_trac/report/1?sort=ticket&amp;amp;asc=0 General trac]&lt;br /&gt;
* sage.crypto: block ciphers&lt;br /&gt;
* Someone needs to replace FiniteField_ext_pari with the two NTL implementations (they are much faster).&lt;br /&gt;
* elliptic and hyperelliptic curves over finite fields support is rather poor&lt;br /&gt;
* algebraic aspects received some attention for the cryptanalysis of symmetric cryptographic algorithms, i.e. the cryptanalyst expresses the cipher as a large set of multivariate polynomials and attempts to solve the system. The most common case over GF(2) is handled by PolyBoRi. This library is the backbone of BooleanPolynomialRing and friends. This class needs testing, documentation, extension and bugfixes. Basically someone should sit down and add all the methods of MPolynomial[Ring]_libsingular to BooleanPolynomial[Ring] which make sense, add a ton of doctests and test the hell out of the library to make sure no SIGSEGVs surprise the user.&lt;br /&gt;
* the module sage.crypto.mq is also relevant for the above.&lt;br /&gt;
* Univariate polynomials over GF(2) are still implemented via NTL&#039;s ZZ_pX class rather than GF2X. This should be changed. Also [http://trac.sagemath.org/sage_trac/ticket/2114 this ticket] has a link to gf2x a very small drop in replacement C library which claimed to be 5x faster than NTL.  Though, a formal vote is needed to get it into Sage.&lt;br /&gt;
* At the end of the day everything boils down to linear algebra. So if you improve that, everybody wins. Sparse linear algebra mod p is still too slow (Ralf-Phillip Weinmann did some work here wrapping code from eclib), there isn o special implementation for sparse linear algebra over GF(2) (both blackbox and e.g. reduced echelon forms), dense LA over GF(2) needs Strassen multiplication/reduction, dense LA over GF(2^n) should probably get implemented.&lt;br /&gt;
==The ideal toolbox==&lt;br /&gt;
This is a lengthy list but it&#039;s our Xmas list ;-)&lt;br /&gt;
We aim to have a toolbox for research/education/playing not production optimizations required. &lt;br /&gt;
So easy access, reconfigurability and clearness are more important!  &lt;br /&gt;
===Block ciphers===&lt;br /&gt;
====Block cipher algorithms====&lt;br /&gt;
Make sure the internals are accessible and reconfigurable, particularly the S-BOXes.&lt;br /&gt;
&amp;lt;br&amp;gt;Try to make generic constructors such as Feistel cipher, etc&lt;br /&gt;
* Serpent&lt;br /&gt;
* Twofish&lt;br /&gt;
* Idea&lt;br /&gt;
* DES, 3DES 112, 168&lt;br /&gt;
* AES 128, 196, 256&lt;br /&gt;
* Present&lt;br /&gt;
====Modes of operation====&lt;br /&gt;
Make sure we can select independently the block cipher encryption/decryption mode and the chaining &amp;quot;encryption/decryption&amp;quot; mode&lt;br /&gt;
* Authentication modes&lt;br /&gt;
** CMAC&lt;br /&gt;
** XCBC&lt;br /&gt;
** CBC-MAC&lt;br /&gt;
* Authentication+encryption modes&lt;br /&gt;
** CCM&lt;br /&gt;
** GCM&lt;br /&gt;
* Encryption modes&lt;br /&gt;
** ECB&lt;br /&gt;
** CBC&lt;br /&gt;
** CTR&lt;br /&gt;
* Disk encryption modes&lt;br /&gt;
** LRW&lt;br /&gt;
** XTS&lt;br /&gt;
Non-keyed hashes&lt;br /&gt;
* MDC-2 (ISO 10118-2)&lt;br /&gt;
====Paddings====&lt;br /&gt;
* Bit padding (can be done at bit level, others are at byte level)&lt;br /&gt;
 DD DD DD 80 00 00 00 00&lt;br /&gt;
* zeros&lt;br /&gt;
 DD DD DD 00 00 00 00 00&lt;br /&gt;
* PKCS7&lt;br /&gt;
 DD DD DD 05 05 05 05 05&lt;br /&gt;
* ISO 10126&lt;br /&gt;
 DD DD DD 42 DB 8A 98 05&lt;br /&gt;
* ANSI X.923&lt;br /&gt;
 DD DD DD 00 00 00 00 05&lt;br /&gt;
===Stream ciphers===&lt;br /&gt;
Same thing, get the internals accessible and patchable&lt;br /&gt;
* RC4&lt;br /&gt;
* A5/1 A5/2&lt;br /&gt;
* SNOW2 SNOW3G&lt;br /&gt;
* SW candidates of eSTREAM:&lt;br /&gt;
** HC-128&lt;br /&gt;
** RABBIT&lt;br /&gt;
** Salsa 20/12&lt;br /&gt;
** SOSEMANUK&lt;br /&gt;
* HW candidates of eSTREAM:&lt;br /&gt;
** F-FCSR&lt;br /&gt;
** Grain&lt;br /&gt;
** MICKEY&lt;br /&gt;
** Trivium&lt;br /&gt;
* LFSR&lt;br /&gt;
* Shrinking generator&lt;br /&gt;
* Self-shrinking generator&lt;br /&gt;
&lt;br /&gt;
===One-way functions===&lt;br /&gt;
* MD5&lt;br /&gt;
* SHA family&lt;br /&gt;
* Whirlpool&lt;br /&gt;
* RipeMD&lt;br /&gt;
* MDC-2&lt;br /&gt;
* RadioGatún&lt;br /&gt;
Ways to transform a block cipher into a hash&lt;br /&gt;
* Davies-Meyer&lt;br /&gt;
* Matyas-Meyer-Oseas&lt;br /&gt;
* Miyaguchi-Preneel&lt;br /&gt;
MACs based on hash functions&lt;br /&gt;
* HMAC&lt;br /&gt;
* NMAC&lt;br /&gt;
Key derivation functions&lt;br /&gt;
* KDF family&lt;br /&gt;
* PBKDF2&lt;br /&gt;
&lt;br /&gt;
===Public-key cryptography===&lt;br /&gt;
====ECC====&lt;br /&gt;
* all coordinate systems&lt;br /&gt;
* cf http://www.hyperelliptic.org/EFD/&lt;br /&gt;
====Others====&lt;br /&gt;
* RSA (encryption, signature, PKCS#1 v1.5 and v2.1, with and without CTR)&lt;br /&gt;
* DSA&lt;br /&gt;
* ElGamal&lt;br /&gt;
* DH&lt;br /&gt;
* XTR&lt;br /&gt;
* Paillier&lt;br /&gt;
* NTRUE&lt;br /&gt;
&lt;br /&gt;
===Pseudo-random generators===&lt;br /&gt;
* cf NIST&lt;br /&gt;
* Mersenne Twister&lt;br /&gt;
===Cryptanalysis tools===&lt;br /&gt;
* boolean functions &amp;amp; S-Box&lt;br /&gt;
** algebraic degree&lt;br /&gt;
** algebraic immunity&lt;br /&gt;
** algebraic normal form (ANF)&lt;br /&gt;
** non linearity&lt;br /&gt;
** resiliency&lt;br /&gt;
** Walsh transforms&lt;br /&gt;
** cross-correlation&lt;br /&gt;
* ECC point counting&lt;br /&gt;
** complex multiplication?&lt;br /&gt;
* factorisation solver&lt;br /&gt;
* discrete log solver &lt;br /&gt;
* statistical tests (diehard, FIPS...)&lt;br /&gt;
* Field operations: addition, multiplication, inverses (normal and polynomial basis)&lt;/div&gt;</summary>
		<author><name>VentziNikov</name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=SAGE_%26_cryptology&amp;diff=4537</id>
		<title>SAGE &amp; cryptology</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=SAGE_%26_cryptology&amp;diff=4537"/>
		<updated>2008-07-13T11:11:00Z</updated>

		<summary type="html">&lt;p&gt;VentziNikov: /* Others */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Discussions===&lt;br /&gt;
* [http://groups.google.com/group/sage-devel/browse_thread/thread/9557f299b1ec2fab?hl=en this thread in the ML]&lt;br /&gt;
* [http://www.informatik.uni-bremen.de/cgi-bin/cgiwrap/malb/blosxom.pl this blog] and especially [http://www.informatik.uni-bremen.de/cgi-bin/cgiwrap/malb/blosxom.pl/2008/03/21#sage-crypto-todo this post]&lt;br /&gt;
* [http://modular.math.washington.edu/sage/jsage/ JSAGE]&lt;br /&gt;
* [http://modular.math.washington.edu/sage/dev.html notes for developers]&lt;br /&gt;
===Docs===&lt;br /&gt;
* http://www.cryptlib.com/standards-compliance.htm&lt;br /&gt;
&lt;br /&gt;
===Available===&lt;br /&gt;
* sage.crypto&lt;br /&gt;
* Sage ships [http://www.amk.ca/python/code/crypto PyCrypto]&amp;lt;br&amp;gt;which implements many standard cryptographic algorithms. &amp;lt;br&amp;gt;It is not really meant for research/education/playing around but for production code but maybe something could be done to have easier access to it from within Sage. &amp;lt;br&amp;gt;The docstring level documentation is horrible:&lt;br /&gt;
 sage: import Crypto.Cipher.IDEA&lt;br /&gt;
 sage: Crypto.Cipher.IDEA?&lt;br /&gt;
    x.__init__(...) initializes x; see x.__class__.__doc__ for signature&lt;br /&gt;
* [http://echidna.maths.usyd.edu.au/~kohel/tch/Crypto/index.html book written on Cryptography by David Kohel], using SAGE&lt;br /&gt;
* ? openssl &amp;amp; pyopenssl optional packages&lt;br /&gt;
&lt;br /&gt;
===Wishes===&lt;br /&gt;
* [http://www.sagemath.org:9002/sage_trac/report/1?sort=ticket&amp;amp;asc=0 General trac]&lt;br /&gt;
* sage.crypto: block ciphers&lt;br /&gt;
* Someone needs to replace FiniteField_ext_pari with the two NTL implementations (they are much faster).&lt;br /&gt;
* elliptic and hyperelliptic curves over finite fields support is rather poor&lt;br /&gt;
* algebraic aspects received some attention for the cryptanalysis of symmetric cryptographic algorithms, i.e. the cryptanalyst expresses the cipher as a large set of multivariate polynomials and attempts to solve the system. The most common case over GF(2) is handled by PolyBoRi. This library is the backbone of BooleanPolynomialRing and friends. This class needs testing, documentation, extension and bugfixes. Basically someone should sit down and add all the methods of MPolynomial[Ring]_libsingular to BooleanPolynomial[Ring] which make sense, add a ton of doctests and test the hell out of the library to make sure no SIGSEGVs surprise the user.&lt;br /&gt;
* the module sage.crypto.mq is also relevant for the above.&lt;br /&gt;
* Univariate polynomials over GF(2) are still implemented via NTL&#039;s ZZ_pX class rather than GF2X. This should be changed. Also [http://trac.sagemath.org/sage_trac/ticket/2114 this ticket] has a link to gf2x a very small drop in replacement C library which claimed to be 5x faster than NTL.  Though, a formal vote is needed to get it into Sage.&lt;br /&gt;
* At the end of the day everything boils down to linear algebra. So if you improve that, everybody wins. Sparse linear algebra mod p is still too slow (Ralf-Phillip Weinmann did some work here wrapping code from eclib), there isn o special implementation for sparse linear algebra over GF(2) (both blackbox and e.g. reduced echelon forms), dense LA over GF(2) needs Strassen multiplication/reduction, dense LA over GF(2^n) should probably get implemented.&lt;br /&gt;
==The ideal toolbox==&lt;br /&gt;
This is a lengthy list but it&#039;s our Xmas list ;-)&lt;br /&gt;
We aim to have a toolbox for research/education/playing not production optimizations required. &lt;br /&gt;
So easy access, reconfigurability and clearness are more important!  &lt;br /&gt;
===Block ciphers===&lt;br /&gt;
====Block cipher algorithms====&lt;br /&gt;
Make sure the internals are accessible and reconfigurable, particularly the S-BOXes.&lt;br /&gt;
&amp;lt;br&amp;gt;Try to make generic constructors such as Feistel cipher, etc&lt;br /&gt;
* Serpent&lt;br /&gt;
* Twofish&lt;br /&gt;
* Idea&lt;br /&gt;
* DES, 3DES 112, 168&lt;br /&gt;
* AES 128, 196, 256&lt;br /&gt;
* Present&lt;br /&gt;
====Modes of operation====&lt;br /&gt;
Make sure we can select independently the block cipher encryption/decryption mode and the chaining &amp;quot;encryption/decryption&amp;quot; mode&lt;br /&gt;
* Authentication modes&lt;br /&gt;
** CMAC&lt;br /&gt;
** XCBC&lt;br /&gt;
** CBC-MAC&lt;br /&gt;
* Authentication+encryption modes&lt;br /&gt;
** CCM&lt;br /&gt;
** GCM&lt;br /&gt;
* Encryption modes&lt;br /&gt;
** ECB&lt;br /&gt;
** CBC&lt;br /&gt;
** CTR&lt;br /&gt;
* Disk encryption modes&lt;br /&gt;
** LRW&lt;br /&gt;
** XTS&lt;br /&gt;
Non-keyed hashes&lt;br /&gt;
* MDC-2 (ISO 10118-2)&lt;br /&gt;
====Paddings====&lt;br /&gt;
* Bit padding (can be done at bit level, others are at byte level)&lt;br /&gt;
 DD DD DD 80 00 00 00 00&lt;br /&gt;
* zeros&lt;br /&gt;
 DD DD DD 00 00 00 00 00&lt;br /&gt;
* PKCS7&lt;br /&gt;
 DD DD DD 05 05 05 05 05&lt;br /&gt;
* ISO 10126&lt;br /&gt;
 DD DD DD 42 DB 8A 98 05&lt;br /&gt;
* ANSI X.923&lt;br /&gt;
 DD DD DD 00 00 00 00 05&lt;br /&gt;
===Stream ciphers===&lt;br /&gt;
Same thing, get the internals accessible and patchable&lt;br /&gt;
* RC4&lt;br /&gt;
* A5/1 A5/2&lt;br /&gt;
* SNOW2 SNOW3G&lt;br /&gt;
* SW candidates of eSTREAM:&lt;br /&gt;
** HC-128&lt;br /&gt;
** RABBIT&lt;br /&gt;
** Salsa 20/12&lt;br /&gt;
** SOSEMANUK&lt;br /&gt;
* HW candidates of eSTREAM:&lt;br /&gt;
** F-FCSR&lt;br /&gt;
** Grain&lt;br /&gt;
** MICKEY&lt;br /&gt;
** Trivium&lt;br /&gt;
* LFSR&lt;br /&gt;
* Shrinking generator&lt;br /&gt;
* Self-shrinking generator&lt;br /&gt;
&lt;br /&gt;
===One-way functions===&lt;br /&gt;
* MD5&lt;br /&gt;
* SHA family&lt;br /&gt;
* Whirlpool&lt;br /&gt;
* RipeMD&lt;br /&gt;
* MDC-2&lt;br /&gt;
* RadioGatún&lt;br /&gt;
Ways to transform a block cipher into a hash&lt;br /&gt;
* Davies-Meyer&lt;br /&gt;
* Matyas-Meyer-Oseas&lt;br /&gt;
* Miyaguchi-Preneel&lt;br /&gt;
MACs based on hash functions&lt;br /&gt;
* HMAC&lt;br /&gt;
* NMAC&lt;br /&gt;
Key derivation functions&lt;br /&gt;
* KDF family&lt;br /&gt;
* PBKDF2&lt;br /&gt;
&lt;br /&gt;
===Public-key cryptography===&lt;br /&gt;
====ECC====&lt;br /&gt;
* all coordinate systems&lt;br /&gt;
* cf http://www.hyperelliptic.org/EFD/&lt;br /&gt;
====Others====&lt;br /&gt;
* RSA (encryption, signature, PKCS#1 v1.5 and v2.1, with and without CTR)&lt;br /&gt;
* DSA&lt;br /&gt;
* ElGamal&lt;br /&gt;
* DH&lt;br /&gt;
* XTR&lt;br /&gt;
* Paillier&lt;br /&gt;
* NTRUE&lt;br /&gt;
&lt;br /&gt;
===Pseudo-random generators===&lt;br /&gt;
* cf NIST&lt;br /&gt;
* Mersenne Twister&lt;br /&gt;
===Cryptanalysis tools===&lt;br /&gt;
* boolean functions &amp;amp; S-Box&lt;br /&gt;
* algebraic degree&lt;br /&gt;
* algebraic immunity&lt;br /&gt;
* algebraic normal form (ANF)&lt;br /&gt;
* non linearity&lt;br /&gt;
* resiliency&lt;br /&gt;
* Walsh transforms&lt;br /&gt;
* cross-correlation&lt;br /&gt;
* ECC point counting&lt;br /&gt;
* complex multiplication?&lt;br /&gt;
* factorisation solver&lt;br /&gt;
* discrete log solver &lt;br /&gt;
* statistical tests (diehard, FIPS...)&lt;/div&gt;</summary>
		<author><name>VentziNikov</name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=SAGE_%26_cryptology&amp;diff=4536</id>
		<title>SAGE &amp; cryptology</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=SAGE_%26_cryptology&amp;diff=4536"/>
		<updated>2008-07-13T11:09:07Z</updated>

		<summary type="html">&lt;p&gt;VentziNikov: /* One-way functions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Discussions===&lt;br /&gt;
* [http://groups.google.com/group/sage-devel/browse_thread/thread/9557f299b1ec2fab?hl=en this thread in the ML]&lt;br /&gt;
* [http://www.informatik.uni-bremen.de/cgi-bin/cgiwrap/malb/blosxom.pl this blog] and especially [http://www.informatik.uni-bremen.de/cgi-bin/cgiwrap/malb/blosxom.pl/2008/03/21#sage-crypto-todo this post]&lt;br /&gt;
* [http://modular.math.washington.edu/sage/jsage/ JSAGE]&lt;br /&gt;
* [http://modular.math.washington.edu/sage/dev.html notes for developers]&lt;br /&gt;
===Docs===&lt;br /&gt;
* http://www.cryptlib.com/standards-compliance.htm&lt;br /&gt;
&lt;br /&gt;
===Available===&lt;br /&gt;
* sage.crypto&lt;br /&gt;
* Sage ships [http://www.amk.ca/python/code/crypto PyCrypto]&amp;lt;br&amp;gt;which implements many standard cryptographic algorithms. &amp;lt;br&amp;gt;It is not really meant for research/education/playing around but for production code but maybe something could be done to have easier access to it from within Sage. &amp;lt;br&amp;gt;The docstring level documentation is horrible:&lt;br /&gt;
 sage: import Crypto.Cipher.IDEA&lt;br /&gt;
 sage: Crypto.Cipher.IDEA?&lt;br /&gt;
    x.__init__(...) initializes x; see x.__class__.__doc__ for signature&lt;br /&gt;
* [http://echidna.maths.usyd.edu.au/~kohel/tch/Crypto/index.html book written on Cryptography by David Kohel], using SAGE&lt;br /&gt;
* ? openssl &amp;amp; pyopenssl optional packages&lt;br /&gt;
&lt;br /&gt;
===Wishes===&lt;br /&gt;
* [http://www.sagemath.org:9002/sage_trac/report/1?sort=ticket&amp;amp;asc=0 General trac]&lt;br /&gt;
* sage.crypto: block ciphers&lt;br /&gt;
* Someone needs to replace FiniteField_ext_pari with the two NTL implementations (they are much faster).&lt;br /&gt;
* elliptic and hyperelliptic curves over finite fields support is rather poor&lt;br /&gt;
* algebraic aspects received some attention for the cryptanalysis of symmetric cryptographic algorithms, i.e. the cryptanalyst expresses the cipher as a large set of multivariate polynomials and attempts to solve the system. The most common case over GF(2) is handled by PolyBoRi. This library is the backbone of BooleanPolynomialRing and friends. This class needs testing, documentation, extension and bugfixes. Basically someone should sit down and add all the methods of MPolynomial[Ring]_libsingular to BooleanPolynomial[Ring] which make sense, add a ton of doctests and test the hell out of the library to make sure no SIGSEGVs surprise the user.&lt;br /&gt;
* the module sage.crypto.mq is also relevant for the above.&lt;br /&gt;
* Univariate polynomials over GF(2) are still implemented via NTL&#039;s ZZ_pX class rather than GF2X. This should be changed. Also [http://trac.sagemath.org/sage_trac/ticket/2114 this ticket] has a link to gf2x a very small drop in replacement C library which claimed to be 5x faster than NTL.  Though, a formal vote is needed to get it into Sage.&lt;br /&gt;
* At the end of the day everything boils down to linear algebra. So if you improve that, everybody wins. Sparse linear algebra mod p is still too slow (Ralf-Phillip Weinmann did some work here wrapping code from eclib), there isn o special implementation for sparse linear algebra over GF(2) (both blackbox and e.g. reduced echelon forms), dense LA over GF(2) needs Strassen multiplication/reduction, dense LA over GF(2^n) should probably get implemented.&lt;br /&gt;
==The ideal toolbox==&lt;br /&gt;
This is a lengthy list but it&#039;s our Xmas list ;-)&lt;br /&gt;
We aim to have a toolbox for research/education/playing not production optimizations required. &lt;br /&gt;
So easy access, reconfigurability and clearness are more important!  &lt;br /&gt;
===Block ciphers===&lt;br /&gt;
====Block cipher algorithms====&lt;br /&gt;
Make sure the internals are accessible and reconfigurable, particularly the S-BOXes.&lt;br /&gt;
&amp;lt;br&amp;gt;Try to make generic constructors such as Feistel cipher, etc&lt;br /&gt;
* Serpent&lt;br /&gt;
* Twofish&lt;br /&gt;
* Idea&lt;br /&gt;
* DES, 3DES 112, 168&lt;br /&gt;
* AES 128, 196, 256&lt;br /&gt;
* Present&lt;br /&gt;
====Modes of operation====&lt;br /&gt;
Make sure we can select independently the block cipher encryption/decryption mode and the chaining &amp;quot;encryption/decryption&amp;quot; mode&lt;br /&gt;
* Authentication modes&lt;br /&gt;
** CMAC&lt;br /&gt;
** XCBC&lt;br /&gt;
** CBC-MAC&lt;br /&gt;
* Authentication+encryption modes&lt;br /&gt;
** CCM&lt;br /&gt;
** GCM&lt;br /&gt;
* Encryption modes&lt;br /&gt;
** ECB&lt;br /&gt;
** CBC&lt;br /&gt;
** CTR&lt;br /&gt;
* Disk encryption modes&lt;br /&gt;
** LRW&lt;br /&gt;
** XTS&lt;br /&gt;
Non-keyed hashes&lt;br /&gt;
* MDC-2 (ISO 10118-2)&lt;br /&gt;
====Paddings====&lt;br /&gt;
* Bit padding (can be done at bit level, others are at byte level)&lt;br /&gt;
 DD DD DD 80 00 00 00 00&lt;br /&gt;
* zeros&lt;br /&gt;
 DD DD DD 00 00 00 00 00&lt;br /&gt;
* PKCS7&lt;br /&gt;
 DD DD DD 05 05 05 05 05&lt;br /&gt;
* ISO 10126&lt;br /&gt;
 DD DD DD 42 DB 8A 98 05&lt;br /&gt;
* ANSI X.923&lt;br /&gt;
 DD DD DD 00 00 00 00 05&lt;br /&gt;
===Stream ciphers===&lt;br /&gt;
Same thing, get the internals accessible and patchable&lt;br /&gt;
* RC4&lt;br /&gt;
* A5/1 A5/2&lt;br /&gt;
* SNOW2 SNOW3G&lt;br /&gt;
* SW candidates of eSTREAM:&lt;br /&gt;
** HC-128&lt;br /&gt;
** RABBIT&lt;br /&gt;
** Salsa 20/12&lt;br /&gt;
** SOSEMANUK&lt;br /&gt;
* HW candidates of eSTREAM:&lt;br /&gt;
** F-FCSR&lt;br /&gt;
** Grain&lt;br /&gt;
** MICKEY&lt;br /&gt;
** Trivium&lt;br /&gt;
* LFSR&lt;br /&gt;
* Shrinking generator&lt;br /&gt;
* Self-shrinking generator&lt;br /&gt;
&lt;br /&gt;
===One-way functions===&lt;br /&gt;
* MD5&lt;br /&gt;
* SHA family&lt;br /&gt;
* Whirlpool&lt;br /&gt;
* RipeMD&lt;br /&gt;
* MDC-2&lt;br /&gt;
* RadioGatún&lt;br /&gt;
Ways to transform a block cipher into a hash&lt;br /&gt;
* Davies-Meyer&lt;br /&gt;
* Matyas-Meyer-Oseas&lt;br /&gt;
* Miyaguchi-Preneel&lt;br /&gt;
MACs based on hash functions&lt;br /&gt;
* HMAC&lt;br /&gt;
* NMAC&lt;br /&gt;
Key derivation functions&lt;br /&gt;
* KDF family&lt;br /&gt;
* PBKDF2&lt;br /&gt;
&lt;br /&gt;
===Public-key cryptography===&lt;br /&gt;
====ECC====&lt;br /&gt;
* all coordinate systems&lt;br /&gt;
* cf http://www.hyperelliptic.org/EFD/&lt;br /&gt;
====Others====&lt;br /&gt;
* RSA&lt;br /&gt;
* DSS&lt;br /&gt;
* ElGamal&lt;br /&gt;
* DH&lt;br /&gt;
* Signature paddings&lt;br /&gt;
* PKCS#1&lt;br /&gt;
* XTR&lt;br /&gt;
* Paillier&lt;br /&gt;
* NTRUE&lt;br /&gt;
===Pseudo-random generators===&lt;br /&gt;
* cf NIST&lt;br /&gt;
* Mersenne Twister&lt;br /&gt;
===Cryptanalysis tools===&lt;br /&gt;
* boolean functions &amp;amp; S-Box&lt;br /&gt;
* algebraic degree&lt;br /&gt;
* algebraic immunity&lt;br /&gt;
* algebraic normal form (ANF)&lt;br /&gt;
* non linearity&lt;br /&gt;
* resiliency&lt;br /&gt;
* Walsh transforms&lt;br /&gt;
* cross-correlation&lt;br /&gt;
* ECC point counting&lt;br /&gt;
* complex multiplication?&lt;br /&gt;
* factorisation solver&lt;br /&gt;
* discrete log solver &lt;br /&gt;
* statistical tests (diehard, FIPS...)&lt;/div&gt;</summary>
		<author><name>VentziNikov</name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=SAGE_%26_cryptology&amp;diff=4535</id>
		<title>SAGE &amp; cryptology</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=SAGE_%26_cryptology&amp;diff=4535"/>
		<updated>2008-07-13T11:07:51Z</updated>

		<summary type="html">&lt;p&gt;VentziNikov: /* Stream ciphers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Discussions===&lt;br /&gt;
* [http://groups.google.com/group/sage-devel/browse_thread/thread/9557f299b1ec2fab?hl=en this thread in the ML]&lt;br /&gt;
* [http://www.informatik.uni-bremen.de/cgi-bin/cgiwrap/malb/blosxom.pl this blog] and especially [http://www.informatik.uni-bremen.de/cgi-bin/cgiwrap/malb/blosxom.pl/2008/03/21#sage-crypto-todo this post]&lt;br /&gt;
* [http://modular.math.washington.edu/sage/jsage/ JSAGE]&lt;br /&gt;
* [http://modular.math.washington.edu/sage/dev.html notes for developers]&lt;br /&gt;
===Docs===&lt;br /&gt;
* http://www.cryptlib.com/standards-compliance.htm&lt;br /&gt;
&lt;br /&gt;
===Available===&lt;br /&gt;
* sage.crypto&lt;br /&gt;
* Sage ships [http://www.amk.ca/python/code/crypto PyCrypto]&amp;lt;br&amp;gt;which implements many standard cryptographic algorithms. &amp;lt;br&amp;gt;It is not really meant for research/education/playing around but for production code but maybe something could be done to have easier access to it from within Sage. &amp;lt;br&amp;gt;The docstring level documentation is horrible:&lt;br /&gt;
 sage: import Crypto.Cipher.IDEA&lt;br /&gt;
 sage: Crypto.Cipher.IDEA?&lt;br /&gt;
    x.__init__(...) initializes x; see x.__class__.__doc__ for signature&lt;br /&gt;
* [http://echidna.maths.usyd.edu.au/~kohel/tch/Crypto/index.html book written on Cryptography by David Kohel], using SAGE&lt;br /&gt;
* ? openssl &amp;amp; pyopenssl optional packages&lt;br /&gt;
&lt;br /&gt;
===Wishes===&lt;br /&gt;
* [http://www.sagemath.org:9002/sage_trac/report/1?sort=ticket&amp;amp;asc=0 General trac]&lt;br /&gt;
* sage.crypto: block ciphers&lt;br /&gt;
* Someone needs to replace FiniteField_ext_pari with the two NTL implementations (they are much faster).&lt;br /&gt;
* elliptic and hyperelliptic curves over finite fields support is rather poor&lt;br /&gt;
* algebraic aspects received some attention for the cryptanalysis of symmetric cryptographic algorithms, i.e. the cryptanalyst expresses the cipher as a large set of multivariate polynomials and attempts to solve the system. The most common case over GF(2) is handled by PolyBoRi. This library is the backbone of BooleanPolynomialRing and friends. This class needs testing, documentation, extension and bugfixes. Basically someone should sit down and add all the methods of MPolynomial[Ring]_libsingular to BooleanPolynomial[Ring] which make sense, add a ton of doctests and test the hell out of the library to make sure no SIGSEGVs surprise the user.&lt;br /&gt;
* the module sage.crypto.mq is also relevant for the above.&lt;br /&gt;
* Univariate polynomials over GF(2) are still implemented via NTL&#039;s ZZ_pX class rather than GF2X. This should be changed. Also [http://trac.sagemath.org/sage_trac/ticket/2114 this ticket] has a link to gf2x a very small drop in replacement C library which claimed to be 5x faster than NTL.  Though, a formal vote is needed to get it into Sage.&lt;br /&gt;
* At the end of the day everything boils down to linear algebra. So if you improve that, everybody wins. Sparse linear algebra mod p is still too slow (Ralf-Phillip Weinmann did some work here wrapping code from eclib), there isn o special implementation for sparse linear algebra over GF(2) (both blackbox and e.g. reduced echelon forms), dense LA over GF(2) needs Strassen multiplication/reduction, dense LA over GF(2^n) should probably get implemented.&lt;br /&gt;
==The ideal toolbox==&lt;br /&gt;
This is a lengthy list but it&#039;s our Xmas list ;-)&lt;br /&gt;
We aim to have a toolbox for research/education/playing not production optimizations required. &lt;br /&gt;
So easy access, reconfigurability and clearness are more important!  &lt;br /&gt;
===Block ciphers===&lt;br /&gt;
====Block cipher algorithms====&lt;br /&gt;
Make sure the internals are accessible and reconfigurable, particularly the S-BOXes.&lt;br /&gt;
&amp;lt;br&amp;gt;Try to make generic constructors such as Feistel cipher, etc&lt;br /&gt;
* Serpent&lt;br /&gt;
* Twofish&lt;br /&gt;
* Idea&lt;br /&gt;
* DES, 3DES 112, 168&lt;br /&gt;
* AES 128, 196, 256&lt;br /&gt;
* Present&lt;br /&gt;
====Modes of operation====&lt;br /&gt;
Make sure we can select independently the block cipher encryption/decryption mode and the chaining &amp;quot;encryption/decryption&amp;quot; mode&lt;br /&gt;
* Authentication modes&lt;br /&gt;
** CMAC&lt;br /&gt;
** XCBC&lt;br /&gt;
** CBC-MAC&lt;br /&gt;
* Authentication+encryption modes&lt;br /&gt;
** CCM&lt;br /&gt;
** GCM&lt;br /&gt;
* Encryption modes&lt;br /&gt;
** ECB&lt;br /&gt;
** CBC&lt;br /&gt;
** CTR&lt;br /&gt;
* Disk encryption modes&lt;br /&gt;
** LRW&lt;br /&gt;
** XTS&lt;br /&gt;
Non-keyed hashes&lt;br /&gt;
* MDC-2 (ISO 10118-2)&lt;br /&gt;
====Paddings====&lt;br /&gt;
* Bit padding (can be done at bit level, others are at byte level)&lt;br /&gt;
 DD DD DD 80 00 00 00 00&lt;br /&gt;
* zeros&lt;br /&gt;
 DD DD DD 00 00 00 00 00&lt;br /&gt;
* PKCS7&lt;br /&gt;
 DD DD DD 05 05 05 05 05&lt;br /&gt;
* ISO 10126&lt;br /&gt;
 DD DD DD 42 DB 8A 98 05&lt;br /&gt;
* ANSI X.923&lt;br /&gt;
 DD DD DD 00 00 00 00 05&lt;br /&gt;
===Stream ciphers===&lt;br /&gt;
Same thing, get the internals accessible and patchable&lt;br /&gt;
* RC4&lt;br /&gt;
* A5/1 A5/2&lt;br /&gt;
* SNOW2 SNOW3G&lt;br /&gt;
* SW candidates of eSTREAM:&lt;br /&gt;
** HC-128&lt;br /&gt;
** RABBIT&lt;br /&gt;
** Salsa 20/12&lt;br /&gt;
** SOSEMANUK&lt;br /&gt;
* HW candidates of eSTREAM:&lt;br /&gt;
** F-FCSR&lt;br /&gt;
** Grain&lt;br /&gt;
** MICKEY&lt;br /&gt;
** Trivium&lt;br /&gt;
* LFSR&lt;br /&gt;
* Shrinking generator&lt;br /&gt;
* Self-shrinking generator&lt;br /&gt;
&lt;br /&gt;
===One-way functions===&lt;br /&gt;
* MD5&lt;br /&gt;
* SHA family&lt;br /&gt;
* Whirlpool&lt;br /&gt;
* RipeMD&lt;br /&gt;
* MDC-2&lt;br /&gt;
* RadioGatún&lt;br /&gt;
Ways to transform a block cipher into a hash&lt;br /&gt;
* Davies-Meyer&lt;br /&gt;
* Matyas-Meyer-Oseas&lt;br /&gt;
* Miyaguchi-Preneel&lt;br /&gt;
MACs based on hash functions&lt;br /&gt;
* HMAC&lt;br /&gt;
Key derivation functions&lt;br /&gt;
* KDF family&lt;br /&gt;
* PBKDF2&lt;br /&gt;
===Public-key cryptography===&lt;br /&gt;
====ECC====&lt;br /&gt;
* all coordinate systems&lt;br /&gt;
* cf http://www.hyperelliptic.org/EFD/&lt;br /&gt;
====Others====&lt;br /&gt;
* RSA&lt;br /&gt;
* DSS&lt;br /&gt;
* ElGamal&lt;br /&gt;
* DH&lt;br /&gt;
* Signature paddings&lt;br /&gt;
* PKCS#1&lt;br /&gt;
* XTR&lt;br /&gt;
* Paillier&lt;br /&gt;
* NTRUE&lt;br /&gt;
===Pseudo-random generators===&lt;br /&gt;
* cf NIST&lt;br /&gt;
* Mersenne Twister&lt;br /&gt;
===Cryptanalysis tools===&lt;br /&gt;
* boolean functions &amp;amp; S-Box&lt;br /&gt;
* algebraic degree&lt;br /&gt;
* algebraic immunity&lt;br /&gt;
* algebraic normal form (ANF)&lt;br /&gt;
* non linearity&lt;br /&gt;
* resiliency&lt;br /&gt;
* Walsh transforms&lt;br /&gt;
* cross-correlation&lt;br /&gt;
* ECC point counting&lt;br /&gt;
* complex multiplication?&lt;br /&gt;
* factorisation solver&lt;br /&gt;
* discrete log solver &lt;br /&gt;
* statistical tests (diehard, FIPS...)&lt;/div&gt;</summary>
		<author><name>VentziNikov</name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=SAGE_%26_cryptology&amp;diff=4534</id>
		<title>SAGE &amp; cryptology</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=SAGE_%26_cryptology&amp;diff=4534"/>
		<updated>2008-07-13T11:05:37Z</updated>

		<summary type="html">&lt;p&gt;VentziNikov: /* The ideal toolbox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Discussions===&lt;br /&gt;
* [http://groups.google.com/group/sage-devel/browse_thread/thread/9557f299b1ec2fab?hl=en this thread in the ML]&lt;br /&gt;
* [http://www.informatik.uni-bremen.de/cgi-bin/cgiwrap/malb/blosxom.pl this blog] and especially [http://www.informatik.uni-bremen.de/cgi-bin/cgiwrap/malb/blosxom.pl/2008/03/21#sage-crypto-todo this post]&lt;br /&gt;
* [http://modular.math.washington.edu/sage/jsage/ JSAGE]&lt;br /&gt;
* [http://modular.math.washington.edu/sage/dev.html notes for developers]&lt;br /&gt;
===Docs===&lt;br /&gt;
* http://www.cryptlib.com/standards-compliance.htm&lt;br /&gt;
&lt;br /&gt;
===Available===&lt;br /&gt;
* sage.crypto&lt;br /&gt;
* Sage ships [http://www.amk.ca/python/code/crypto PyCrypto]&amp;lt;br&amp;gt;which implements many standard cryptographic algorithms. &amp;lt;br&amp;gt;It is not really meant for research/education/playing around but for production code but maybe something could be done to have easier access to it from within Sage. &amp;lt;br&amp;gt;The docstring level documentation is horrible:&lt;br /&gt;
 sage: import Crypto.Cipher.IDEA&lt;br /&gt;
 sage: Crypto.Cipher.IDEA?&lt;br /&gt;
    x.__init__(...) initializes x; see x.__class__.__doc__ for signature&lt;br /&gt;
* [http://echidna.maths.usyd.edu.au/~kohel/tch/Crypto/index.html book written on Cryptography by David Kohel], using SAGE&lt;br /&gt;
* ? openssl &amp;amp; pyopenssl optional packages&lt;br /&gt;
&lt;br /&gt;
===Wishes===&lt;br /&gt;
* [http://www.sagemath.org:9002/sage_trac/report/1?sort=ticket&amp;amp;asc=0 General trac]&lt;br /&gt;
* sage.crypto: block ciphers&lt;br /&gt;
* Someone needs to replace FiniteField_ext_pari with the two NTL implementations (they are much faster).&lt;br /&gt;
* elliptic and hyperelliptic curves over finite fields support is rather poor&lt;br /&gt;
* algebraic aspects received some attention for the cryptanalysis of symmetric cryptographic algorithms, i.e. the cryptanalyst expresses the cipher as a large set of multivariate polynomials and attempts to solve the system. The most common case over GF(2) is handled by PolyBoRi. This library is the backbone of BooleanPolynomialRing and friends. This class needs testing, documentation, extension and bugfixes. Basically someone should sit down and add all the methods of MPolynomial[Ring]_libsingular to BooleanPolynomial[Ring] which make sense, add a ton of doctests and test the hell out of the library to make sure no SIGSEGVs surprise the user.&lt;br /&gt;
* the module sage.crypto.mq is also relevant for the above.&lt;br /&gt;
* Univariate polynomials over GF(2) are still implemented via NTL&#039;s ZZ_pX class rather than GF2X. This should be changed. Also [http://trac.sagemath.org/sage_trac/ticket/2114 this ticket] has a link to gf2x a very small drop in replacement C library which claimed to be 5x faster than NTL.  Though, a formal vote is needed to get it into Sage.&lt;br /&gt;
* At the end of the day everything boils down to linear algebra. So if you improve that, everybody wins. Sparse linear algebra mod p is still too slow (Ralf-Phillip Weinmann did some work here wrapping code from eclib), there isn o special implementation for sparse linear algebra over GF(2) (both blackbox and e.g. reduced echelon forms), dense LA over GF(2) needs Strassen multiplication/reduction, dense LA over GF(2^n) should probably get implemented.&lt;br /&gt;
==The ideal toolbox==&lt;br /&gt;
This is a lengthy list but it&#039;s our Xmas list ;-)&lt;br /&gt;
We aim to have a toolbox for research/education/playing not production optimizations required. &lt;br /&gt;
So easy access, reconfigurability and clearness are more important!  &lt;br /&gt;
===Block ciphers===&lt;br /&gt;
====Block cipher algorithms====&lt;br /&gt;
Make sure the internals are accessible and reconfigurable, particularly the S-BOXes.&lt;br /&gt;
&amp;lt;br&amp;gt;Try to make generic constructors such as Feistel cipher, etc&lt;br /&gt;
* Serpent&lt;br /&gt;
* Twofish&lt;br /&gt;
* Idea&lt;br /&gt;
* DES, 3DES 112, 168&lt;br /&gt;
* AES 128, 196, 256&lt;br /&gt;
* Present&lt;br /&gt;
====Modes of operation====&lt;br /&gt;
Make sure we can select independently the block cipher encryption/decryption mode and the chaining &amp;quot;encryption/decryption&amp;quot; mode&lt;br /&gt;
* Authentication modes&lt;br /&gt;
** CMAC&lt;br /&gt;
** XCBC&lt;br /&gt;
** CBC-MAC&lt;br /&gt;
* Authentication+encryption modes&lt;br /&gt;
** CCM&lt;br /&gt;
** GCM&lt;br /&gt;
* Encryption modes&lt;br /&gt;
** ECB&lt;br /&gt;
** CBC&lt;br /&gt;
** CTR&lt;br /&gt;
* Disk encryption modes&lt;br /&gt;
** LRW&lt;br /&gt;
** XTS&lt;br /&gt;
Non-keyed hashes&lt;br /&gt;
* MDC-2 (ISO 10118-2)&lt;br /&gt;
====Paddings====&lt;br /&gt;
* Bit padding (can be done at bit level, others are at byte level)&lt;br /&gt;
 DD DD DD 80 00 00 00 00&lt;br /&gt;
* zeros&lt;br /&gt;
 DD DD DD 00 00 00 00 00&lt;br /&gt;
* PKCS7&lt;br /&gt;
 DD DD DD 05 05 05 05 05&lt;br /&gt;
* ISO 10126&lt;br /&gt;
 DD DD DD 42 DB 8A 98 05&lt;br /&gt;
* ANSI X.923&lt;br /&gt;
 DD DD DD 00 00 00 00 05&lt;br /&gt;
===Stream ciphers===&lt;br /&gt;
Same thing, get the internals accessible and patchable&lt;br /&gt;
* RC4&lt;br /&gt;
* A5/1 A5/2&lt;br /&gt;
* SNOW2 SNOW3G&lt;br /&gt;
* SW candidates of eSTREAM:&lt;br /&gt;
** HC-128&lt;br /&gt;
** RABBIT&lt;br /&gt;
** Salsa 20/12&lt;br /&gt;
** SOSEMANUK&lt;br /&gt;
* HW candidates of eSTREAM:&lt;br /&gt;
** F-FCSR&lt;br /&gt;
** Grain&lt;br /&gt;
** MICKEY&lt;br /&gt;
** Trivium&lt;br /&gt;
===One-way functions===&lt;br /&gt;
* MD5&lt;br /&gt;
* SHA family&lt;br /&gt;
* Whirlpool&lt;br /&gt;
* RipeMD&lt;br /&gt;
* MDC-2&lt;br /&gt;
* RadioGatún&lt;br /&gt;
Ways to transform a block cipher into a hash&lt;br /&gt;
* Davies-Meyer&lt;br /&gt;
* Matyas-Meyer-Oseas&lt;br /&gt;
* Miyaguchi-Preneel&lt;br /&gt;
MACs based on hash functions&lt;br /&gt;
* HMAC&lt;br /&gt;
Key derivation functions&lt;br /&gt;
* KDF family&lt;br /&gt;
* PBKDF2&lt;br /&gt;
===Public-key cryptography===&lt;br /&gt;
====ECC====&lt;br /&gt;
* all coordinate systems&lt;br /&gt;
* cf http://www.hyperelliptic.org/EFD/&lt;br /&gt;
====Others====&lt;br /&gt;
* RSA&lt;br /&gt;
* DSS&lt;br /&gt;
* ElGamal&lt;br /&gt;
* DH&lt;br /&gt;
* Signature paddings&lt;br /&gt;
* PKCS#1&lt;br /&gt;
* XTR&lt;br /&gt;
* Paillier&lt;br /&gt;
* NTRUE&lt;br /&gt;
===Pseudo-random generators===&lt;br /&gt;
* cf NIST&lt;br /&gt;
* Mersenne Twister&lt;br /&gt;
===Cryptanalysis tools===&lt;br /&gt;
* boolean functions &amp;amp; S-Box&lt;br /&gt;
* algebraic degree&lt;br /&gt;
* algebraic immunity&lt;br /&gt;
* algebraic normal form (ANF)&lt;br /&gt;
* non linearity&lt;br /&gt;
* resiliency&lt;br /&gt;
* Walsh transforms&lt;br /&gt;
* cross-correlation&lt;br /&gt;
* ECC point counting&lt;br /&gt;
* complex multiplication?&lt;br /&gt;
* factorisation solver&lt;br /&gt;
* discrete log solver &lt;br /&gt;
* statistical tests (diehard, FIPS...)&lt;/div&gt;</summary>
		<author><name>VentziNikov</name></author>
	</entry>
</feed>