[tahoe-dev] [pycryptopp] #18: AES-CTR: easy way to modify the counter for random-access decryption
pycryptopp
trac at allmydata.org
Thu Apr 2 17:49:46 PDT 2009
#18: AES-CTR: easy way to modify the counter for random-access decryption
------------------------+---------------------------------------------------
Reporter: warner | Owner:
Type: enhancement | Status: new
Priority: major | Version: 0.5.1
Keywords: | Launchpad_bug:
------------------------+---------------------------------------------------
I'd like to improve Tahoe's download process to allow random-access
decryption. To do this, I need to be able to tell the AES decryptor object
to process data from arbitrary points in the keystream.
I think it's possible to do this with the current API, by creating a new
AES instance every time the counter jumps, and passing it an {{{iv=}}}
argument which is a string into which we've packed the current offset. But
this is too hard, and the {{{iv=}}} argument accepts arbitrary-length
strings, making it difficult to confirm that we're supposed to pass in a
string whose length is the same as the AES block size.
I'd like to have an extra argument to {{{process()}}}, which will reset
the counter value. This argument should take a positive number (an int or
long). If this argument is not provided, the counter should use the normal
self-incrementing value. So:
{{{
a = AES(key)
data1 = AES.process("abcde")
data2 = AES.process("fghij")
data3 = AES.process("klmno")
}}}
should produce the same "data1", "data2", and "data3" as:
{{{
a = AES(key)
data2 = AES.process("fghij", counter=5)
data3 = AES.process("klmno")
data1 = AES.process("abcde", counter=0)
}}}
--
Ticket URL: <http://allmydata.org/trac/pycryptopp/ticket/18>
pycryptopp <http://allmydata.org/trac/pycryptopp>
Python bindings for the Crypto++ library
More information about the tahoe-dev
mailing list