Il cubo di Rubik più di un semplice gioco

Avevo scritto questo intervento un po di tempo fa ma come al solito, preso da mille cose che poi si diramano in una infinità di altri rivoli d’interesse, era rimasto rimasto tra le cose da pubblicare, comunque come si suol dire “meglio tardi che mai”, ovviamente essendo un po datato, ho riveduto e aggiornato qualche passaggio.
Va precisato che quanto segue è semplicemente un riportare, parte di un’esperienza lavorativa diretta e comunque senza alcuna pretesa.

Potrebbe sembrare una facezia, ma il gioco ideato dallo scultore ungherese Ernő Rubik che ha avuto un grandissimo successo in tutto il mondo dal 1974 ed in parte appassiona ancora oggi molte persone, questo che per alcuni è un “infernale” rompicapo, potrebbe nascondere in bella vista, un fenomenale, quasi sicuro sistema di crittografia; uso il condizionale per due ragioni, la prima è che qualunque sistema crittografico, può essere decodificato, la seconda è relativa alla vulnerabilità intrinseca il sistema e dei codificatori, comunque tutto è relativo alle necessità di codifica e decodifica, e questo deriva o consegue dall’importanza e dal livello di confidenzialità delle informazioni da custodire.
Considerando che nella versione del cubo 3x3x3 ci sono 43.252.003.274.489.856.000 permutazioni, numero difficile di per se da leggere e che nel solo trascriverlo in lettere, ha presentato una piccola difficoltà, (quarantatré miliardi di miliardi, duecentocinquantadue milioni di miliardi, tremila duecentosettantaquattro miliardi, quattrocentottantanove milioni, ottocentocinquantasei) presenta ulteriormente un limite nella sua razionalizzazione, denota che seppure con l’impiego di sofisticati hardware ed altrettanti algoritmi, il tempo necessario per trovare la “chiave” risulta decisamente impegnativo; comunque, come detto questo è relativo alle necessità.

Astruso l’uso del cubo come codificatore?
Potrebbe sembrare astruso, se dal vertiginoso numero di quarantatré miliardi di miliardi ecc. ecc. escludiamo, gioco forza la combinazione esatta, resterebbero quarantatré ecc. ecc. …855.999 permutazioni sbagliate, il che vorrebbe dire che se lo immaginassimo come un mazzo di chiavi e le provassimo una ad una impiegando 1 solo secondo ognuna, occorrerebbero, bhé lascio a voi fare il calcolo, quindi se l’eventuale “curioso” fosse realmente intenzionato a proseguire, ignorando gli altri sistemi di sicurezza, dovrebbe impegnare gran parte della sua vita per tentare di raggiungere il suo scopo, magari scoprendo “la ricetta segreta delle torte di nonna papera”.

The Rubik cube code

The Rubik cube code

Ma come potrebbe essere impiegato il cubo come codificatore?
Bhé anche questo potrebbe essere un buon esercizio per mantenere la mente allenata, comunque si tratta semplicemente di una serie di coordinate multiple, ossia coordinate sia posizionali che di colore, immaginando questo insieme di coordinate, nella posizione “terminata” del cubo ossia in cui tutte le facce del cubo sono del medesimo colore, avremmo la combinazione 0 o viceversa, la 43… ecc ecc. esima permutazione, comunque non è questa la combinazione che ci interessa, ma piuttosto una specifica combinazione posizionali ed a questa associare l’eventuale stringa di codifica o per rendere ulteriormente complicato e cervellotico il processo di codifica della stringa di codifica.
Rb1133-Bg3313-Wy2132… starebbe ad indicare che casella e contenuto e qui faccio riferimento al concetto di variabile, R11 verrà posizionata al posto della casella B33, cosi per B33 sarà spostata alle coordinate G13 e cosi per W21 in Y32 e via via per le altre che assumeranno ovviamente una posizione coordinale, se così si può dire, si potrebbe assegnare un diverso discrimine tra ascisse e coordinate con codifica simile alla scacchiera, ma potrebbe risultare una agevolazione della comprensione sulle modalità della codifica stessa, comunque seppure questo sistema potrebbe dimostrarsi buono, i suoi limiti sono rappresentati dalla sua stessa strutturazione in quanto globalmente le caselle di spigolo occuperanno sempre posizioni di spigolo e quelle al centro sempre nelle posizioni centrali; questa problematica è particolarmente rilevante nella versione del cubo di 3x3x3, mentre per le versioni 4x4x4, 5x5x5 o superiori, questo inconveniente decresce in proporzione al numero delle facce implementate e risulterebbe minore per quei cubi con facce pari, in quanto il problema delle facce centrali, viene praticamente eliminato.
E’ chiaro che al crescere del numero delle facce, il numero delle permutazioni aumenta relativamente e quindi una maggiore difficoltà per l’eventuale “curioso”, fermo restando inalterata ed inviolata l’affidabilità del codificatore.

Dato che per un lungo periodo di tempo mi sono interessato di programmazione e in più circostanze mi sono imbattuto in problematiche relative ad accessi riservati di siti e/o dati riservati, in parte ho liberamente tratto ispirazione dal cubo di Rubik ed in un certo modo “ampliandolo” la considerazione da cui ne è poi nato uno dei diversi sistemi di codifica dei dati di accesso è stato sostanzialmente rielaborare il cubo tridimensionalmente, va precisato che comunque non è “tutta farina del mio sacco”, lo spunto mi è venuta dal film “The cube” film fantascientifico dalle tinte forti e in parte caratterizzato da sequenze “splatter” , comunque l’idea di base era quella, che a differenza del cubo di Rubik in cui si “opera” solo sulle facce esterne, nel progetto di base si utilizzavano i diversi cubi, oltremodo eliminando il problema delle posizioni di spigolo.
Sicuramente sotto l’aspetto delle combinazioni si ha una minore quantità di permutazioni, ma questo problema si assottiglia incrementando il numero dei cubi; restando nella “dimensionalità” del cubo 3x3x3 già con questo dimensionamento, i caratteri alfabetici troverebbero sufficiente spazio e quindi seguendo un analogo sistema di coordinate “mescolare” in modo congruo il messaggio, oltremodo questa modalità può essere implementata ulteriormente da routine di “randomizzazione” per la determinare la posizione di inserimento del carattere stesso.
Considerando il set di caratteri di 256 caratteri ed il cosi detto ”shift” si otterrebbe un cubo di 256x256x256 per un totale di 16.977.216 di posizioni e calcolando le relative interpolazioni, sarebbero una quantità discreta di partenza, se non per un sistema di codifica perfetto, almeno con una discreta solidità.

Come ho avuto modo di dire anche in altre occasioni, il problema sostanziale dei metodi di codifica e della loro vulnerabilità risiede in parte nello stesso processo di codifica, per semplificare, utilizzando anche uno specifico algoritmo ad oc, una volta scoperto il funzionamento o la logica con cui opera, per quanto robusta e complicata possa essere la codifica, di fatto si scavalca la codifica stessa, analogamente a come uno scassinatore elude il sistema di allarme operando non sui sensori, ma direttamente dalla centralina, ora per ovviare a questo tipo di situazione, si può “blindare” la centralina con un’infinità di sistemi, ma il problema per il malintenzionato si è solo complicato e la soluzione in un modo o nell’altro la si trova ed in sintesi la vulnerabilità della centralina non è stata certo risolta; lo stesso vale per il processo di codifica, quindi l’approccio alla soluzione dovrebbe essere differente, magari invertendo i termini, quindi riprendendo l’esempio del cubo di Rubik, di fatto al malintenzionato verrebbero fornite tutte le chiavi possibili, compresa quella giusta, ma considerando il quantitativo di chiavi che dovrebbe “provare”, richiederebbe un arco temporale sufficientemente congruo ad attivare eventuali “sentinelle” e sistemi di controllo che escluderebbero o bloccherebbero “l’impertinente” non autorizzato, riuscendo, magari per step, a tracciarlo; questo in caso di intrusioni a sistemi informatici, per quanto riguarda nello specifico documentazioni di vario, essendo di per se codificato, in sostanza la chiave è già inclusa nell’archivio stesso, quindi una vulnerabilità intrinseca.

Sistemi di protezione aggiuntivi degli archivi oltre la codifica possono essere molteplici, quello più immediato che avevo cominciato ad studiare era quello dei “flag” di accesso, ora indipendentemente dal programma che si utilizza per aprire o leggere l’archivio, questo flag viene alterato, quindi una volta alterato questo parametro, può essere utilizzato per determinarne la “scadenza”, cioè che lo si apra con la chiave di decodifica o direttamente in “linguaggio macchina”, l’archivio diventa inutilizzabile, similmente al sistema che alcune major avevano cominciato a implementare nei file musicali distribuito in rete che una terminato il count down si può sol oche cancellare.
Comunque la solidità di un sistema di criptografia, è sempre in funzione del numero di coloro che lo utilizzano, ma sopratutto di coloro che ne sono a conoscenza, quindi quello che potrebbe essere in assoluto il migliore è quello che ognuno realizza ad uso e consumo personale, esattamente come facevano gli alchimisti creando ad oc quadrati magici o inscrizioni simboliche che spesso risultavano indecifrabili da alchimista ad alchimista.

Riferimenti:

http://it.wikipedia.org/wiki/Cubo_di_Rubik
http://spazioinwind.libero.it/gaetzum/risoluzione/cubo_di_rubik/introduzione.htm

http://www.rubiks.com/


Fine stesura 13 giugno 2013

Lascia un Commento, sarà moderato prima della pubblicazione

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...