Advanced Encryption Standard (AES) è uno dei più usati e sicuri algoritmi di crittografia disponibili ad oggi. L’algoritmo è basato su diverse sostituzioni, permutazioni e trasformazioni lineari, ognuno eseguito su blocchi di dati da 16 byte da qui il termine cifrario a blocchi. Ad oggi, non esiste un attacco praticabile contro AES, quindi rimane lo standard di crittografia preferita per governi, banche e sistemi di alta sicurezza in tutto il mondo.
Questo blocco funzione esegue la crittatura con l’algoritmo AES, è protetto per utilizzarlo occorre richiedere il codice di protezione, vedi protezione funzioni e blocchi funzione. E’ comunque possibile utilizzarlo liberamente in modo test per 15 Min.
Attivando Enable i dati in formato Ascii o Hexadecimal presenti nel buffer definito in IData per la lunghezza definita in IDLength sono crittati utilizzando la chiave definita in CKey. E’ possibile eseguire crittatura di un intero file in tal caso definire il file in IData e settare IDLength a 0.
I dati crittati in uscita sono espressi in Base64 e vengono trasferiti nel buffer definito in OData per la dimensione definita in ODSize. E’ possibile memorizzare i dati in un file in tal caso definire il file in OData e settare ODSize a 0.
Come dimensionare ODSize
L’operazione di crittatura genera una stringa in uscita in Base64, con una dimensione maggiore della stringa da crittare, in questo report diamo una indicazione della dimensione e dei tempi di crittatura su di un sistema Cortex M7.
+---------------------+-------------------+----------------------+------------------+ | Stringa in ingresso | Stringa in uscita | Variazione lunghezza | Tempo esecuzione | +---------------------+-------------------+----------------------+------------------+ | 8 (Bytes) | 24 (Bytes) | 2.6 | 4 (mS) | | 16 (Bytes) | 44 (Bytes) | 2.6 | 17 (mS) | | 32 (Bytes) | 64 (Bytes) | 1.9 | 33 (mS) | | 128 (Bytes) | 192 (Bytes) | 1.5 | 26 (mS) | | 256 (Bytes) | 364 (Bytes) | 1.4 | 49 (mS) | | 512 (Bytes) | 704 (Bytes) | 1.4 | 97 (mS) | | 1024 (Bytes) | 1388 (Bytes) | 1.4 | 190 (mS) | | 2048 (Bytes) | 2752 (Bytes) | 1.4 | 377 (mS) | | 4096 (Bytes) | 5484 (Bytes) | 1.4 | 751 (mS) | +---------------------+-------------------+----------------------+------------------+
Descrizione
Enable (BOOL) Abilitazione crittatura.
SpyOn (BOOL) Se attivo permette di spiare il funzionamento del FB (Vedi articolo).
CKey (@STRING) Puntatore a CIPHER key, chiave di crittazione dati.
IData (PVOID) Puntatore ai dati da crittare (Ascii). Se IDLength:=0 viene considerato come definizione a file.
IDLength (UDINT) Lunghezza dati da crittare. Se 0 viene eseguita crittazione del file definito in IData.
OData (PVOID) Puntatore a buffer dati crittati (Base64). Se ODSize:=0 viene considerato definizione a file.
ODSize (UDINT) Lunghezza buffer dati crittati. Se 0 i dati vengono trasferiti nel file definito in OData.
Done (BOOL) Attivo a fine esecuzione.
Fault (BOOL) Si attiva per un loop se errore esecuzione.
Encrypted (BOOL) Si attiva se crittatura eseguita correttamente.
ODLength (UDINT) Ritorna la lunghezza dei dati crittati.

Spionaggio funzionamento
Se SpyOn attivo è possibile utilizzare utilizzare la console di spionaggio per verificare il funzionamento della FB. Sono previsti vari livelli di triggers.
Trigger di spionaggio
16#00000001 | Kt: Visualizzo key table. |
16#00000002 | St: Visualizzo state table. |
16#00000004 | Cr: Visualizzo passaggi di crittazione. |
16#10000000 | Lg: Messaggi di log funzionamento. |
16#40000000 | Er: Errori di esecuzione. |
Esempi
Come utilizzare gli esempi
ST_AESCryptOnMemory: Attivando da debug la variabile Start viene eseguita la crittazione e la successiva decrittazione del messaggio definito. Nella console di spionaggio viene visualizzato il risultato delle operazioni.
ST_AESCryptOnDisk: Attivando da debug la variabile Start viene eseguita la crittazione e la successiva decrittazione del contenuto del file indicato.