Mathematical engineering [Pillole]
Mi è capitato tra le mani questo problemino, assegnato nell’edizione 2002 dell’IMO (le Olimpiadi matematiche). Sapreste risolverlo al volo, senza sbirciare la soluzione sotto?
Il numero n è il prodotto di quattro numeri primi distinti a, b, c, d tali che:
- a + c = d;
- a(a + b + c + d) = c(d − b);
- 1 + bc + d = bd.
Determinare n.
Il grosso guaio di questi problemi è che sono costruiti “alla rovescia”, nel senso che si cercano alcune relazioni legate al numero e poi si rendono note solo le relazioni. In questi casi, soprattutto nella teoria dei numeri, non ci sono tecniche vere e proprie per risolvere i problemi, e si viaggia a vista. Se volete, è la stessa logica alla base della crittografia a chiave pubblica, dove si cercano due numeri primi grandi, si calcola il loro prodotto e lo si rende noto sapendo che trovare i due numeri di partenza è virtualmente impossibile allo stato attuale delle conoscenze. Ma i cracker sanno come aggirare questi problemi: le cosiddette tecniche di social engineering non si applicano agli algoritmi, e cercano di ricavare le informazioni direttamente dall’anello più debole, cioè le persone. Tutte le mail di phishing, o se preferite i sedicenti tecnici che suonano alla porta per “fare un controllo del contatore”, si basano sul social engineering.
Allora, avete capito come risolvere il problema? Avete trovato il pezzo di informazione che farà da grimaldello? Eppure era lì, davanti ai vostri occhi. Il problema è stato assegnato nelle Olimpiadi del 2002. Il numero è il doppio di 1001, che notoriamente (spero…) è il prodotto 7×11×13. A questo punto vale sicuramente la pena di provare a vedere se n è per caso 2002: è immediato ricavare che in effetti a=2, b=7, c=11, d=13. Un altro caso brillantemente risolto :-)
Leave a comment