La libreria di crittografia nel mio linguaggio di programmazione non supporta CTR, sebbene supporti CBC, CFB, CTS, ECB e OFB. Suppongo che sia teoricamente possibile implementare in modo sicuro il CTR attorno a una di queste altre modalità.
Quindi mi chiedo, queste citazioni descrivono l'implementazione corretta del CTR dal punto di vista della sicurezza? Per quanto ho letto penso che lo siano, ma voglio solo assicurarmi che non mi manchi qualcosa.
I studied a bit more and found out that the block transform for CTR mode is really just the result of XOR'ing the plaintext with an AES ECB transform of a monotinically-increasing counter. With that understanding, I was able to implement a AES CTR mode pretty easily on top of the AES ECB mode that is built into the .NET BCL.
E,
It is possible to implement AES crypto in CTR mode using the AesManaged class, though it requires some extra work. To implement CTR mode with the .NET AesManaged class, here's what I did: Use CipherMode.ECB, PaddingMode.None. [No padding is necessary in CTR mode because we are always encrypting a 16-byte counter.] When encrypting, call CreateEncryptor(). Using the resulting ICryptoTransform, for each block, transform a nonce of 16-bytes (Same as the AES block size), and then XOR the result of that transform with the plaintext to get the ciphertext. Increment the nonce after each block. Continue until there are no more blocks - don't forget the final block transform, for the last block of 16 or fewer bytes.
Per prima cosa, quando la citazione dice "incrementa", che tipo di incremento dovrebbe essere? Sicuramente non lineare?