[tahoe-dev] [pycryptopp] #18: AES-CTR: easy way to modify the counter for random-access decryption

pycryptopp trac at allmydata.org
Mon Feb 1 23:18:11 PST 2010


#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:       
------------------------+---------------------------------------------------

Comment(by warner):

 A not-too-unreasonable hack to accomplish most of this is:

 {{{
 def AES(key, offset):
     offset_big = offset // 32
     offset_small = offset % 32
     iv = binascii.unhexlify("%032x" % offset_big)
     decryptor = AES(key, iv=iv)
     decryptor.process("\x00"*offset_small)
     return decryptor
 }}}

 That returns an AES object which is ready for use at the given offset. Any
 seeks have to create a new AES object, but that's not too expensive (27us
 on
 my laptop).

 However, {{{AES(key, iv="0"*LEN)}}} for any LEN other than 16 should throw
 an
 exception. Calling it with iv strings shorter than 14 bytes causes it to
 use
 uninitialized memory as part of the IV, not good.

-- 
Ticket URL: <http://allmydata.org/trac/pycryptopp/ticket/18#comment:2>
pycryptopp <http://allmydata.org/trac/pycryptopp>
Python bindings for the Crypto++ library


More information about the tahoe-dev mailing list