Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
cs-465:homework-2 [2014/08/21 17:00]
seamons
cs-465:homework-2 [2015/08/28 17:07] (current)
seamons
Line 1: Line 1:
 '''​Finite Field Arithmetic'''​ '''​Finite Field Arithmetic'''​
  
-Review sections 4 and 5 in FIPS 197 (see Lab 1) to understand details about finite field arithmentic ​in AES. Submit pseudo-code for the MixColumns function in 5.1.3. Your submission should demonstrate that you understand how to implement the ideas in section 4. Study these sections and the lecture slides to be able to distinguish between the abstract mathematical ideas (e.g., polynomial representation) and the implementation methodology (i.e., bit shifting, MOD, AND, XOR).+For this homework, please submit two pseudo-code samples to answer question 1 and 2 below. 
 + 
 +Review sections 4 and 5 in FIPS 197 (see Lab 1) to understand details about finite field arithmetic ​in AES.  
 + 
 +Section 4: Focus on 4.1 and 4.2. 4.3 is less important to study (and more complicated),​ but it may help you understand section 5. 
 + 
 +Section 5: See the high-level pseudo-code for the Cipher algorithm in 5.1. The MixColumns function in 5.1.3 is important to understand. Near the end of that section, it gives you the formulas you need to implement the MixColumns function. 
 + 
 +Question 1)  ​Submit pseudo-code for the MixColumns function in 5.1.3. Your submission should demonstrate that you understand how to implement the ideas in section 4. Study these sections and the lecture slides to be able to distinguish between the abstract mathematical ideas (e.g., polynomial representation) and the implementation methodology (i.e., bit shifting, MOD, AND, XOR). 
 + 
 +Hint: Start with a Mixcolumns(state) where the state is a 4x4 array of bytes. You can reference each byte with a state(x,y) reference. 
 + 
 +Question 2) Submit code for a finite field multiply function that takes two bytes as input and produces a byte as output, the result of multiplying a * b where * is the finite field multiply described in section 4.2. Your code should use an xtime function that is described in 4.2.1. 
 + 
 +Hint: Assume a function byte c ffMultiply(byte a, byte b) where the function returns c = a * b. 
  
cs-465/homework-2.txt · Last modified: 2015/08/28 17:07 by seamons
Back to top
CC Attribution-Share Alike 4.0 International
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0