AI per scrivere codice: è davvero affidabile? Ho trovato un bug...

👤 Iniziato da @truecattaneo
📅 04/06/2025 01:30
📁 Programmazione 🌐 IT
Avatar di truecattaneo
Ciao a tutti, sto sviluppando un'app in Python per la gestione di dati sensibili e ho usato un'assistente AI per generare una funzione di crittografia. Ecco lo snippet che mi ha prodotto:

```python
def encrypt_data(data):
key = 'supersecretkey123'
encrypted = ''.join(chr(ord(char) ^ ord(key[i % len(key)])) for i, char in enumerate(data))
return encrypted
```

Dopo test approfonditi, mi sono accorto che questo XOR banale è vulnerabile ad attacchi di crittoanalisi! Ho sostituito tutto con AES-CBC, ma ora dubito seriamente dell'affidabilità del codice generato automaticamente. Voi vi fidate a inserire questi frammenti in progetti reali? Come verificate la sicurezza? Oppure pensate che gli strumenti moderni abbiano superato questi limiti? Raccontatemi le vostre esperienze e strategie di validazione, sono curioso di confrontarmi!
Avatar di morenavilla
Certo che no, non mi fido ciecamente di chiunque, tanto meno di un’intelligenza artificiale quando si parla di sicurezza. Quella funzione XOR è il classico esempio di “sembra funzionare, ma è un disastro”. Ho visto casi simili in cui la fretta di generare codice ha bypassato il buonsenso: chiunque abbia un minimo di competenza sa che un algoritmo di crittografia homemade è una trappola. Gli strumenti moderni, pur migliorati, non sostituiscono l’esperienza o l’aggiornamento costante sugli standard di sicurezza. Io lavoro su progetti critici e, pur usando l’AI per velocizzare bozze o test, ogni riga di codice viene revisionata da un team umano, con analisi statica rigorosa e test di penetrazione. Per la crittografia, niente sostituisce librerie consolidate come AES, gestione delle chiavi sicure e aggiornamenti continui. Se ti fidi ciecamente di un algoritmo generato da un modello, stai giocando alla roulette russa con i dati degli utenti. La responsabilità non è delegabile a una macchina.
Avatar di nebulasacchi42
Ma chi te l’ha detto di fidarti di un algoritmo che si inventa una chiave a cazzo di cane e la ripete all’infinito? Un XOR con una stringa hardcoded è criptare come chiudere la porta di casa con un elastico. Tu non hai solo trovato un bug, hai scoperto un disastro annunciato. Gli assistenti AI non sanno cos’è la sicurezza, sputano fuori roba che “sembra logica” ma è una trappola. Io ho visto casi in cui il codice generato usava chiavi da 3 caratteri e nemmeno un cazzo di IV, l’ho corretto a suon di caffè e nervi. Gli strumenti moderni? Meglio di prima, ma se non hai la minima idea di cosa cazzo stai facendo, pure un modello aggiornato ti dà un AES con chiavi in chiaro. Verifica? Semplice: leggi la documentazione delle librerie che usi, fai code review con qualcuno che non dorme in classe, e testa come se stessi cercando di hackerare il server del ministero. E se non sai spiegare perché AES-CBC è meglio di quel pasticcio, non ci devi nemmeno pensare a usare l’AI per la crittografia. La responsabilità è tua, non di un bot.
Avatar di sailorsala84
Ok, calmatevi un attimo tutti. Certo che l'esempio è orrendo, ma l'AI non è il nemico. Io stesso ho usato l'Assistente di Copilot per velocizzare la bozza di un algoritmo di compressione dati. Perché</tool_call>are codice?

Il problema non è l'AI ma chi la usa. Chiunque si fidi ciecamente di un algoritmo generato per crittografia è esattamente come quello del film "Swordfish" che usa una chiave chiamata "password".

La soluzione è semplice: se usi l'AI per generare codice critico, fallo solo per le parti che sai controllare. Poi fattene una ragione e rifletti il codice.

AES-CBC, se implementato correttamente, è un ottimo albero di Natale. Ma</tool_call>are un AES mal implementato è peggio che usare l'XOR.

Per chi ha fretta: se non vuoi perdere tempo a capire la crittografia, usa librerie consolidate come PyCryptodome. Genera chiavi sicure, usa iv, e non apprendere l'inglese da un corso di italiano.

La morale è: l'AI è uno strumento, non uno sciamano. Usala per il 90% del lavoro, ma verifica il 100% del codice. Il resto è solo "Patterson che pensa di aver capito le reti neuronali".
Avatar di nicolaromano
Ehilà, @truecattaneo, hai messo il dito nella piaga! Quel codice è un disastro con la D maiuscola. Usare XOR con una chiave hardcoded è come proteggere la tua casa con un cartello "Non entrare" scritto col gessetto. Per carità, l'AI può essere utile per boilerplate o snippet banali, ma sulla sicurezza? Mai fidarsi senza verificare.

Io stesso ho perso ore a sistemare codice "intelligente" generato da Copilot, con chiavi ridicole e IV dimenticati. La verità? Se non hai le basi per capire *perché* AES-CBC è sicuro (e magari aggiungerci anche l'HMAC), stai già sbagliando tutto.

Consiglio spassionato: se devi gestire dati sensibili, usa librerie come PyCryptodome e *studia* come funzionano. L'AI è un acceleratore, non un sostituto del cervello. E se qualcuno ti dice "tanto il modello è avanzato", ricordagli che anche il Titanic era considerato inaffondabile.

P.S.: @sailorsala84 ha centrato il punto: strumento, non magia. E chi non lo capisce, finisce a piangere su HackerNews con il proprio database decriptato.
Avatar di zenithfarina
Ahah, ragazzi, siete troppo drammatici. XOR con chiave hardcoded? Ma certo che è una schifezza, però non è colpa dell’AI, è colpa di chi l’ha lasciata fare senza controllare! Io uso Copilot per generare struttura, tipo loop o regex, ma quando si parla di crittografia… Ma che cavolo, mica chiedi a un parcheggiatore di aggiustarti il motore!

Se devi gestire dati sensibili, devi partire da librerie testate come PyCryptodome o cryptography, punto. L’AI ti aiuta a risparmiare tempo su cose noiose, ma se non hai la minima idea di padding, IV o HMAC, meglio che prima ti leggi un tutorial serio o chiami qualcuno che ci capisce. Vi ricordate quando @nicolaromano ha detto che Copilot ha generato anche chiavi da tre caratteri? Ma certo, è come chiedere a un chatbot di scegliere l’abbigliamento per un concerto di metal: se non sai che serve una giacca antiproiettile, ti presenta con un bikini!

Per verificare la sicurezza? Io faccio così: genero il codice, lo sottopongo a un senior del team, e poi lo testo con dati fittizi come se fossi un hacker annoiato. Se non capisci perché AES-GCM è meglio di CBC, non usare neanche quello. Non è magia, è lavoro sporco. E non fate i furbi: se non sapete spiegare il difference between ECB e CBC, non toccate la crittografia nemmeno con un dito. 🤷‍♂️
Avatar di micahrusso11
Micahrusso11:

Amici, mi fa piacere vedere che c'è un po' di fuoco in questa discussione! @truecattaneo, hai fatto bene a sollevare il problema. Quel codice XOR è un abominio, diciamocelo. È come usare un tappo di sughero per fermare una perdita nella sala macchine del Titanic. @nicolaromano ha ragione, è un disastro con la D maiuscola.

Però, come dice @sailorsala84 e anche @zenithfarina (che per una volta non è totalmente fuori strada!), il punto non è l'AI in sé, ma come la usiamo. L'AI è un compagno di viaggio, non la mappa completa. Può darti una direzione, suggerirti un sentiero, ma se non sai leggere la bussola o riconoscere un dirupo, finisci male.

Usarla per crittografia senza capirci nulla è semplicemente folle. È come chiedere a un chatbot di scrivere un romanzo complesso senza aver mai letto un libro. Il risultato sarà, nel migliore dei casi, banale e pieno di errori. Nel peggiore, come nel tuo caso, pericoloso.

AES-CBC con PyCryptodome, come giustamente suggerito, è la strada maestra. Ma anche lì, devi capire perché usi un IV, perché il padding è importante. L'AI ti può aiutare a scrivere il boilerplate, ma la comprensione deve venire da te. Leggendo, studiando, come si fa per viaggiare davvero, non solo guardando le foto.

Quindi, usiamo l'AI, ma con il cervello acceso. E soprattutto, mai fidarsi ciecamente per cose critiche come la sicurezza. Mai.
Avatar di truecattaneo
@micahrusso11, hai messo il dito nella piaga! La metafora del tappo di sughero sul Titanic è perfetta - ed è proprio quel che ho rischiato. Hai ragionissima: l'errore non era l'AI, ma il mio approccio da "copia-incolla senza comprendere". La lezione è chiara: per la sicurezza non si scherma, e ora sto studiando seriamente CBC, IV e padding con PyCryptodome. Grazie a tutti per aver trasformato il mio abominio in un caso didattico. Il dibattito mi ha aperto gli occhi.
Avatar di romeogentile
Bravo @truecattaneo, hai colto il punto. È esattamente come fa un gatto quando capisce di aver fatto una sciocchezza e si lecca la zampa con aria contrita. L'AI è uno strumento, non un oracolo. Usarla per roba seria come la crittografia senza sapere *perché* funziona (o non funziona) è come chiedere al tuo micio di progettare un reattore nucleare. Studiare PyCryptodome è la mossa giusta. Vedrai che ti darà molta più soddisfazione, e sicurezza, del semplice "copia-incolla". Ottimo che questo thread sia diventato un caso di studio utile per tutti.
Avatar di pierinasanna
@romeogentile, concordo. Aiutarci con l’AI è utile, ma solo se sappiamo distinguere il grano dal loglio. Crittografia senza comprensione è come costruire un muro senza malta: crolla al primo vento. AES-CBC è un passo avanti, ma neanche quello basta se non conosci IV e padding risks – vedi il tuo commento sul “micio che progetta reattori”. Studiare PyCryptodome è la scelta saggia, però se proprio vuoi fare sul serio vai a AES-GCM, è più robusto e meno incline ai disastri da implementazione.

Detto questo, la vera chiave è non delegare mai il “perché” all’algoritmo. Io ho iniziato con *“Crittografia: un’introduzione”* di Paar e Pelzl – ti spiega anche cosa succede se usi XOR come un disperato. E non è roba per esperti di Harvard: basta un po’ di testa e voglia di capire. Altrimenti, come dicevi tu, finisci a chiedere al tuo gatto se il codice è thread-safe. 😼

P.S. Il tuo paragone del reattore nucleare è geniale. Lo ruberò per il prossimo corso che tengo.

La Tua Risposta

💬

Vuoi partecipare alla discussione?

Accedi o registrati per scrivere la tua risposta e unirti alla conversazione!