#6164: [with patch, needs review] Phan's Mini-AES for educational purposes
--------------------------+-------------------------------------------------
Reporter: mvngu | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone: sage-4.0.3
Component: cryptography | Keywords: Mini-AES, AES, cryptography
Reviewer: | Author: Minh Van Nguyen
Merged: |
--------------------------+-------------------------------------------------
Comment(by mvngu):
Replying to [comment:7 malb]:
> '''Review Report'''
> * I am wondering whether it would be better to have a directory
{{{block_cipher}}} with a file {{{miniaes.py}}} inside instead of
{{{block_cipher.py}}}?
That can be arranged.
[[BR]][[BR]]
> * I guess it would be nice to have a function {{{sbox}}} which returns
the encryption S-Box for further study?
You read my mind. I forgot to add that. Man, it's early in the morning
over here :-)
[[BR]][[BR]]
> * AFAIK, we agreed to not use {{{\leq}}} but {{{<=}}} instead, because
our users might not speak LaTeX
> * same for {{{\times}}}
Let's leave them in for now and see how users react.
[[BR]][[BR]]
> * why are you more strict wrt types in {{{__call__}}} than in
{{{encrypt}}}?
The methods {{{encrypt}}} and {{{decrypt}}} are meant to deal with only
16-bit blocks of data, so they're very limited in the length of their
input. As their input are matrices over a finite field, I think the
structure of the input and output mimics how a student would go through
the encryption/decryption by hand. If they rather work with integers than
finite field elements, they could use the provided conversion methods.
The callable {{{__call__}}} is designed for performing
encryption/decryption in one go, operating mainly on binary strings. So
once someone is comfortable with how Mini-AES works, they can encrypt
binary strings longer than 16 bits in length, which is at present not
possible with the {{{encrypt}}} and {{{decrypt}}} methods. You can think
of {{{__call__}}} as being there to do Mini-AES encryption/decryption on
arbitrary data, while {{{encrypt}}} and {{{decrypt}}} aid in understanding
the corresponding processes on a small scale, i.e. on 16-bit blocks.
[[BR]][[BR]]
> * {{{D = \sigma_{K_0} \circ \gamma^{-1} \circ \pi \circ \theta \circ
\sigma_{K_1} \circ \gamma^{-1} \circ \pi \circ \sigma_{K_2} }}} isn't
exactly easily readable, but I guess it looks nice in the reference
manual. Maybe there is some compromise though?
I'm not sure. It's meant as a specification of the decryption process.
[[BR]][[BR]]
> * Maybe http://sphinx.pocoo.org/markup/misc.html#dir-tabularcolumns is a
good alternative to LaTeX tabular for readability?
Sure. Let me try that one for a change.
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/6164#comment:8>
Sage <http://sagemath.org/>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---