6

I'm embarking on the fool's errand of attempting to understand the Monero hash algorithm. Using this link -- https://cryptonote.org/cns/cns008.txt, I'm struggling to understand this step

3. Scratchpad
...
      for i = 0..9 do:
          block = aes_round(block, round_keys[i])

The docs say "SubBytes, ShiftRows and MixColumns steps are performed". SO which of these function is "aes_round" ? What would be an example input and output?

Dave
  • 277
  • 3
  • 9

3 Answers3

3

An AES round uses the three functions (SubBytes, ShiftRows and MixColumns).

The Wikipedia article on AES has a high-level description of the algorithm and links to the AES standard, reference source code, etc.

glv
  • 3,364
  • 11
  • 15
0

from hardlydifficult's explainer, this AES round is described as:

"... near standard AES encryption. Each block is encrypted using each round key, sequentially (so 8 blocks * 10 rounds per block means 80 AES rounds so far). The only difference from AES encryption is the 'initial round' and 'final round' as described here are excluded."

it's "near standard" because you need to:

"... Note that unlike in the AES encryption algorithm, the first and the last rounds are not special."

Here's the scratchpad initialization diagram from the explainer:

enter image description here

pageman
  • 103
  • 4
0

The AES implementation is the only thing I see that has changed in the Algorithm. This was created by a developer who worked for Intel years ago, and seems to only effect older CPU's, have yet to see any type of change in the Cryptonight that indiciates anything except causing older systems not to function on the Algorithm that is supposed to protect the CPU systems and stop the ASIC Miner Rigs. In fact Bit-main sold out of the X3 Miner Rig for Cryptonight today.