ITGE20110091A1 - Metodo di cifratura e decifratura - Google Patents

Metodo di cifratura e decifratura Download PDF

Info

Publication number
ITGE20110091A1
ITGE20110091A1 IT000091A ITGE20110091A ITGE20110091A1 IT GE20110091 A1 ITGE20110091 A1 IT GE20110091A1 IT 000091 A IT000091 A IT 000091A IT GE20110091 A ITGE20110091 A IT GE20110091A IT GE20110091 A1 ITGE20110091 A1 IT GE20110091A1
Authority
IT
Italy
Prior art keywords
key
encryption
function
decryption
mod
Prior art date
Application number
IT000091A
Other languages
English (en)
Inventor
Carlo Pes
Original Assignee
Carlo Pes
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Carlo Pes filed Critical Carlo Pes
Priority to IT000091A priority Critical patent/ITGE20110091A1/it
Priority to EP12772804.6A priority patent/EP2742644B1/en
Priority to PCT/IB2012/054060 priority patent/WO2013021360A1/en
Publication of ITGE20110091A1 publication Critical patent/ITGE20110091A1/it

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3013Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the discrete logarithm problem, e.g. ElGamal or Diffie-Hellman systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Reverberation, Karaoke And Other Acoustics (AREA)
  • Facsimile Transmission Control (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

DESCRIZIONE dell'Invenzione Industriale dal titolo: "Metodo di cifratura e decifratura"
TESTO DELLA DESCRIZIONE
L'invenzione ha per oggetto un metodo di cifratura e decifratura il quale metodo comprende: una fase di cifratura / decifratura a chiave pubblica per il quale à ̈ prevista:
a) una prima chiave pubblica per ciascuna di almeno due entità comunicanti fra loro e che viene scambiata fra le almeno dette due entità fra loro comunicanti e la quale chiave pubblica utilizzata per la cifratura
di un primo messaggio da trasmettere fra le dette almeno due entità comunicanti fra loro;
b) una chiave privata per ciascuna di dette almeno due entità fra loro comunicanti che viene utilizzata per la decifratura del primo messaggio criptato mediante la suddetta chiave pubblica e scambiato fra i due comunicanti;
Metodi di cifratura/decifratura di questo tipo sono ampiamente noti e utilizzati da lungo tempo.
Nell'ambito della cifratura/decifratura di messaggi, esistono due diverse tipologie di metodi di cifratura/decifratura definiti simmetrici od a chiave privata e asimmetrici, cioà ̈ a chiave pubblica.
Nei sistemi simmetrici, due entità che vogliono scambiarsi un messaggio sottoponendolo a cifratura e successiva decifratura sono provviste ambedue della stessa chiave con cui il messaggio viene sottoposto inizialmente a cifratura e successivamente alla decifratura per mezzo di un algoritmo di cifratura che opera utilizzando la chiave. In questo caso, la chiave à ̈ in possesso delle due entità e non viene trasmessa con il messaggio, ma à ̈ segreta. La segretezza della chiave e quindi la custodia della stessa à ̈ uno dei punti deboli di questi sistemi.
I sistemi di cifratura/decifratura asimmetrici sono detti appunto asimmetrici poiché hanno una prima chiave pubblica che viene trasmessa fra le due entità che vogliono scambiarsi un messaggio e che viene utilizzata per l'esecuzione della fase di cifratura del messaggio da trasmettere da parte dell'entità che vuole trasmettere il messaggio. La chiave pubblica à ̈ nota and ambedue le entità, mentre l'entità ricevente à ̈ provvista di una chiave privata che consente di decifrare il messaggio ricevuto e che à ̈ stato cifrato con la chiave pubblica.
Ambedue i sistemi sono utilizzati ed hanno vantaggi ed inconvenienti.
I limiti dei metodi di cifratura consistono nel fatto di dover soddisfare contestualmente diverse esigenze di per se contrastanti.
Da un lato più complessi sono i problemi matematici su cui si basano i sistemi di cifratura, maggiore à ̈ la loro sicurezza contro attacchi di qualsivoglia genere. D'altro lato si ricerca anche una maggiore velocità di esecuzione od una richiesta di potenza di calcolo per l'esecuzione dei programmi in cui sono codificati gli algoritmi di cifratura.
Ciò trova una sua importanza al fine di poter utilizzare sistemi di cifratura e decifratura anche su apparecchi hardware con ridotta capacità di calcolo, come ad esempio palmari, smartphone od altri dispositivi .
Per quanto riguarda i metodi di cifratura/decifratura simmetrici, questi sono generalmente i più veloci ma hanno limitazioni relative alla lunghezza del messaggio che può essere sottoposto alla cifratura/decifratura.
I metodi asimmetrici invece consentono la cifratura e decifratura di messaggi di lunghezza qualsivoglia, ma richiedono tempi di elaborazione e risorse di calcolo elevati.
I metodi asimmetrici cosiddetti a chiave pubblica costituiscono un approccio largamente utilizzato per la trasmissione sicura di messaggi utilizzando canali di trasmissione altrimenti non sicuri. Le coppie asimmetriche di chiavi sono costituite da due separate chiavi di cui una chiave pubblica utilizzata per manipolare i dati in un modo ed una seconda chiave per riconvertire i dati manipolati alla forma originaria. Le chiavi si basano su relazioni matematiche con cui la conoscenza di una chiave non consente di calcolare l'altra chiave almeno in un tempo polinomiale o comunque ragionevole.
I metodi di cifratura/decifratura possono essere utilizzati per la cifratura/decifratura di segnali digitali di qualsivoglia genere e scambiati utilizzando le più diverse modalità di comunicazione ed anche per l'autenticazione o verifica di firme.
Un metodo a chiave pubblica prevede che la chiave pubblica venga distribuita ad una altra parte con cui si deve comunicare, mentre la chiave privata venga mantenuta confidenziale. Le chiavi asimmetriche pubblica e privata consentono di ottenere due risultati. Solo chi consoce e detiene la chiave privata può decifrare il messaggio che à ̈ stato cifrato con la chiave pubblica corrispondente. Se una parte decifra il messaggio utilizzando la chiave pubblica questa parte può essere certa che il messaggio à ̈ stato criptato utilizzando la chiave privata e quindi generato presumibilmente dal detentore della chiave privata.
Per il calcolo delle chiavi i metodi ed i relativi sistemi a chiave pubblica utilizzano funzioni cosiddette trapdoor. Queste funzioni sono generalmente definite anche "one way" e sono funzioni il cui computo in una direzione à ̈ relativamente facile e veloce, mentre la computazione nella direzione opposta, cioà ̈ quella inversa à ̈ non praticabile soprattutto in tempi polinomiali a causa della elevata complessità.
Attualmente i noti metodi utilizzano per le funzioni di questo tipo quelle che si basano su problemi matematici ad elevata complessità.
Esempi di questi noti problemi utilizzati per le funzioni di calcolo delle chiavi nei diversi metodi noti di cifratura/decifratura a chiave pubblica sono:
Il problema della fattorizzazione di interi e cioà ̈ la fattorizzazione di un numero intero in fattori costituiti da numeri primi;
Problema del logaritmo discreto di un gruppo moltiplicativo su un campo finito;
Problema del logaritmo discreto di curve ellittiche su un campo finito.
Fra i sistemi di cifratura/decifratura più usuali il sistema RSA e quello di RABIN si basano sul problema della fattorizzazione di interi in fattori costituiti da numeri primi. Il sistema EIGamal si basa invece sul problema del logaritmo discreto di un gruppo moltiplicativo ed il sistema di cifratura delle curve ellittiche si basa sul problema del logaritmo discreto delle curve ellittiche.
Il sistema RSA à ̈ descritto nel documento US 4,405,829 e nelle pubblicazioni in esso citate. Il sistema di cifratura delle curve ellittiche à ̈ descritto nel documento US 5,146,500 e nelle pubblicazioni in esso citate.
Un riassunto dei diversi sistemi a chiave pubblica sopra menzionati e di ulteriori pubblicazioni di approfondimento sulla loro struttura à ̈ dato nel documento EP 924895 e nel documento US6,081,597 che sono parte della presente descrizione.
I sistemi a chiave pubblica generalmente operano secondo il seguente schema che à ̈ comune anche al metodo ed al sistema secondo la presente invenzione.
A e B siano due parti in comunicazione fra loro K(pub,A) sia la chiave pubblica di A e K(priv A) sia la chiave privata di A. Analogamente K(pub, B) e K(priv,B) sono rispettivamente la chiave pubblica e la chiave privata di B. I sistemi asimmetrici prevedono algoritmi di generazione della chiave pubblica e della chiave privata di ciascuna parte. Per comunicare fra loro A invia a B la chiave pubblica K(pub,A) e B invia ad A la sua chiave pubblica K(pub, B). Quando si utilizza un sistema di scambio di chiavi private di sessione del tipo secondo il metodo Diffie Helman, le due parti si scambiano le chiavi pubbliche, mentre la chiave di sessione (cosiddetta anche chiave master) utilizzata per cifrare e decifrare i messaggi à ̈ costituita dalla chiave K(pub, A)+K(priv, B) per la cifratura di messaggi inviati da B ad A e la decifratura di messaggi inviati da A a B e la chiave di sessione (o master) K(pub, B)+K(priv, A) per la cifratura di messaggi inviati da A a B e la decifratura di messaggi inviati da B ad A.
Altri accorgimenti possono venire utilizzati per evitare attacchi cosiddetti MID (man in the middle). In questo caso fra le due parti vengono trasmessi degli identificatori delle singole parti mediante cosiddetti token mac od hmac oppure le parti si avvalgono di authority di certificazione. Ai codici di identificazione delle parti possono essere aggiunti dati variabili nel tempo come data ed ora che rendono il token variabile.
Il principale inconveniente nei noti sistemi a chiave pubblica consiste nel fatto che questi sistemi operando generalmente con relazioni matematiche relative ad operazioni base con numeri primi, sono soggetti ad attacchi di tipo crittanalitico che possono portare in tempi ragionevoli alla determinazione delle chiavi e quindi alla possibilità di decifrare un messaggio oppure di simulare credibilmente di essere la parte che possiede il codice privato.
Altri inconvenienti specifici per guanto riguarda i sistemi RSA e di Rabin sono costituiti dal fatto che questi sistemi utilizzano per la fattorizzazione dei numeri primi e quindi le chiavi private sono costituite da numeri primi la cui determinazione richiede notevoli tempi di calcolo e notevoli risorse di hardware. Pertanto questi sistemi sono poco pratici per essere utilizzati in piccoli dispositivi con ridotta potenza di calcolo e hardware downsized relativamente alle prestazioni, come ad esempio dispositivi palmari o smartphones od altro.
Scopo dell'invenzione à ̈ quello di realizzare un metodo di cifratura/decifratura del tipo descritto all'inizio che consenta di ridurre sia i tempi di elaborazione che le risorse hardware richieste per eseguire le fasi di cifratura/decifratura, garantendo al tempo stesso una maggiore sicurezza del metodo di cifratura/decifratura contro attacchi di qualsivoglia genere mirati alla determinazione delle chiavi necessarie alla cifratura/decifratura dei messaggi.
Un ulteriore scopo della presente invenzione consiste nel perfezionare un metodo di cifratura/decifratura del tipo descritto all'inizio in misura tale da conferire all'algoritmo di cifratura un livello di sicurezza definito come "sicurezza incondizionata".
In particolare ulteriori scopi del metodo secondo la presente invenzione consistono nell'ottenere un metodo di cifratura/decifratura che abbia le seguenti qualità:
- elevata sicurezza contro attacchi di qualsivoglia genere ed in particolare attacchi di tipo crittanalitico, ma anche del tipo brute force o man in the middle;
- semplificazione nell'implementazione Hardware/software
- efficienza di esecuzione Hardware/software; - possibilità di creare chiavi crittografiche di qualsiasi lunghezza utilizzabili per criptare direttamente dati da trattare con un metodo simmetrico di cifratura/decifratura
- possibilità di estendere la funzione con matrici di dimensioni superiori L'invenzione consegue gli scopi di cui sopra con un metodo di cifratura/decifratura del tipo descritto all'inizio il quale metodo comprende:
una prima fase a chiave pubblica per il quale à ̈ prevista:
a) una prima chiave pubblica per ciascuna di almeno due entità comunicanti fra loro e che viene scambiata fra le almeno dette due entità fra loro comunicanti e la quale chiave pubblica utilizzata per la cifratura di un primo messaggio da trasmettere fra le dette almeno due entità comunicanti fra loro;
b) una chiave privata per ciascuna di dette almeno due entità fra loro comunicanti che viene utilizzata per la decifratura del messaggio criptato mediante la suddetta chiave pubblica e scambiato fra i due comunicanti;
una seconda fase di cifratura/decifratura a chiave simmetrica per la quale à ̈ prevista una chiave segreta (o di sessione) per la cifratura/decifratura di secondi messaggi trasmessi fra le dette almeno due entità comunicanti
essendo la detta chiave segreta (o di sessione) scambiata fra gli almeno due comunicanti utilizzando la prima fase di cifratura a chiave pubblica e costituendo la detta chiave segreta di cifratura/decifratura il primo messaggio,
essendo la trapdoor costituita dalla funzione di creazione della chiave segreta, mentre il secondo messaggio à ̈ costituito dall'informazione da scambiare fra le due entità comunicanti e mentre le chiavi non sono funzione solo di numeri primi.
Le rivendicazioni dipendenti hanno per oggetto ulteriori caratteristiche di perfezionamento del metodo secondo l'invenzione.
Il metodo di cifratura/decifratura secondo la presente invenzione utilizza una funzione somma H in modulo. Il metodo à ̈ simile a quello noto di Diffie-Hellman ma senza utilizzo di numeri primi, nà ̈ di numeri di grandi dimensioni in generale.
Questo apporta notevoli vantaggi dal punto di vista computazionale e dell'analisi crittografica.
Il metodo, per sua natura, non à ̈ soggetto ad alcun attacco matematico conosciuto. Gli attacchi di tipo Side Channell Attack sono inefficaci grazie alla velocità e alla linearità dell'algoritmo implementato.
La funzione somma H (H à ̈ una funzione hash minimale non perfetta) in modulo utilizza una matrice bidimensionale Amxndi m righe ed n colonne di valori privati, un valore di modulo q privato, un valore di modulo p pubblico ed un valore R pubblico che esprime la dimensione della matrice A, cioà ̈ il numero di righe che conterranno i valori di chiave privata, per creare una chiave numerica pubblica secondo la funzione
R
Chiave pubblica S = ∑ /(*) rnd * p
,z=l
dove :
f(x) à ̈ una funzione Hash non perfetta ed in particolare una funzione modulo q i cui input sono i valori della matrice A con 1≤Ai,j≤n, i valori p e q ed R;
La funzione Hash non perfetta ha lo scopo di ottenere valori numerici di output identici da argomenti diversi .
q à ̈ corrispondente al valore rnd*p;
S rappresenta il risultato della sommatoria ∀i=1,.,.,η,Ï âˆˆZ ;
A la matrice mxn ∀m, n = 1 ∈ Z
i un indice iteratore con i∈Z<+>
p il valore modulo condiviso, un intero casuale con p∈ Z<+>(condiviso dai partecipanti alla comunicazione ) rnd à ̈ un numero casuale (generato da note funzioni o da funzioni proprietarie) utilizzato, come precedentemente spiegato, per introdurre quantità aleatorie in S.
La chiave privata à ̈ costituita dalla matrice Αmxnp ed R sono due valori pubblici che sono concordati fra le parti in comunicazione o sono prestabilite nella configurazione del sistema di cifratura/decifratura q à ̈ definito da ciascuna entità mediante un generatore pseudo casuale secondo una procedura fissa prestabilita del metodo e del sistema di cifratura/decifratura.
Gli stessi valori cioà ̈ la matrice A e il modulo q e p ed R sono riutilizzati per la generazione della chiave di crittografia condivisa cioà ̈ la chiave di sessione .
Produrre un attacco implica la conoscenza dei valori della matrice A, del modulo q e della sequenza temporale di generazione dei valori della matrice. Se il numero di elementi nella matrice à ̈ sufficientemente elevato (R minimo 32) il costo per produrre un attacco di brute-force à ̈ proibitivo.
Dato ad esempio il numero seguente come chiave pubblica 7281919011861039825731 ed un modulo P noto, ricavare la sequenza numerica che esprime la chiave crittografica à ̈ un problema non banale nel campo dei problemi complessi. Si tratta di ricavare tutti i valori nella matrice generata e che rappresenta una disposizione (con eventuali ripetizioni) in un range dei numeri interi compresi tra -2<n>e 2<n>, dove n indica il numero di bit di cui il numero à ̈ formato. Da ciò' ne consegue che la lunghezza della chiave e' determinabile dal valore di n e dal numero di elementi nella matrice.
Le chiavi scambiate per la successiva fase crittografica sono delle chiavi fittizie tale che il valore della stessa non potrà mai coincidere con una possibile chiave reale, questo implica che le eventuali chiavi scambiate ed intercettate sono delle chiavi che non hanno alcun valore reale dal punto di vista matematico e qualunque esame delle stesse risulta nullo. Le chiavi reali vengono composte dai legittimi comunicanti sfruttando la chiave fittizia in combinazione con la propria chiave privata.
ESEMPIO
La chiave pubblica di valore reale v potrebbe essere inviata con valore fittizio v+rnd*p come illustrato nella figura 1.
Questa trasformazione complica notevolmente una eventuale analisi per risalire al valore numerico che rappresenta la vera chiave pubblica.
Il valore p à ̈ un valore pubblico, mentre il valore rnd può essere condiviso fra le parti con un token o definito a priori per una sua parte, mentre per una restante parte può essere costituito da valori variabili nel tempo come data, ora od altri dati.
Considerando le caratteristiche del metodo secondo la rivendicazione principale e le rivendicazioni dipendenti, una caratteristica fondamentale del metodo secondo la presente invenzione consiste nel non utilizzare nelle fasi di calcolo delle chiavi relazioni matematiche con numeri primi. Mentre in sistemi noti come RSA, DH e ECC questi ultimi sono fondamentali per il sistema stesso. Nel metodo secondo la presente invenzione ogni valore (numero di solito a n-bit) à ̈ un numero valido. Ciò ha delle implicazioni positive a livello progettuale, poiché nel metodo secondo la presente invenzione, la funzione specifica rimane isolata mentre nei sistemi come RSA, DH e ECC à ̈ necessario disporre di algoritmi (complessi e lenti) per la creazione di numeri primi che devono essere perfetti e non pseudo-primi poiché questi numeri pseudo primi rappresentano un problema a livello di sicurezza.
Spesso nei sistemi crittografici che implementato RSA o DH (Diffie-Hellman) in particolare si tende ad utilizzare un piccolo sottoinsieme di numeri primi precalcolati ed utilizzati in modo casuale nelle funzioni preposte. Questo crea problemi dal punto di vista della sicurezza.
Come risulterà più chiaramente anche dalla seguente descrizione dettagliata, le operazioni algebriche utilizzate nel metodo secondo la presente invenzione e che sono la somma, le rotazioni dei bit, le moltiplicazioni e le operazioni modulo a n-bit sono tra quelle più veloci su molte piattaforma hardware a n-bit, con attualmente n a 32 o 64 bit anche con processori di modesta velocità. Questa proprietà à ̈ importante relativamente agli attacchi crittanalitici che si basano sul consumo di potenza elettrica durante l'esecuzione dell'algoritmo nella fase di creazione delle chiavi pubblica e di sessione (power monitoring attack e Timing Attack).
Inoltre le operazioni utilizzate permettono di integrare il sistema utilizzando linguaggi di programmazione ad alto livello, notoriamente non velocissimi.
In definitiva, il metodo secondo la presente invenzione fornisce una maggiore efficienza in termini di computer overhead, key size e bandwidth, rispetto agli altri sistemi.
Per quanto attiene la sicurezza, il metodo ed il sistema secondo la presente invenzione appartengono alla classe dei problemi combinatori cosiddetti NP-completi.
Il metodo ed il sistema secondo la presente invenzione utilizzano una funzione "Hash minimale non perfetta" chiamata ricorsivamente per creare un valore dato dalla somma di tutti i valori della chiave privata costituiti dalla matrice A e dal modulo g e che danno origine alla creazione della chiave pubblica.
La scelta di questo tipo di funzione porta a valori in uscita che possono, con buona probabilità, essere uguali. Dunque, la somma di valori differenti in input alla funzione in tempi diversi o calcolata da entità diverse, può fornire valori uguali di output. Ciò ha delle notevoli implicazioni a livello di sicurezza, in quanto, chiavi pubbliche con valori non univoci danno luogo, dal punto di vista statistico ad "incertezza" e di conseguenza l'algoritmo gode della proprietà di "sicurezza incondizionata" . Un sistema crittografico à ̈ considerato incondizionatamente sicuro se non può essere violato nemmeno con risorse computazionalmente infinite .
Questo implica che la crittanalisi à ̈ impossibile e che persino provando ogni possibile chiave in un attacco di brute-force sarebbe impossibile determinare quale à ̈ quella corretta. Dunque, Il problema si basa sulla difficoltà di trovare in un tempo polinomiale la permutazione e gli esatti valori della chiave privata (contenuti nella matrice A e nel valore di modulo q) a partire dalla conoscenza di una sommatoria S calcolata a partire da tali valori. Al contrario, RSA, DH, ECC sono elaborati su basi matematiche che permettono di poter implementare algoritmi efficienti per la loro soluzione unitamente ai progressi di performance degli attuali e futuri processori.
Il token non viene calcolato nella fase di creazione delle chiavi pubbliche, (come nel protocollo SRP), ma nel calcolo della chiave di sessione. Se il valore Hash della chiave di sessione non à ̈ uguale per tutte le entità in comunicazione, probabilmente c'à ̈ stato un attacco Man in the middle. Quindi di solito, quando si invia un messaggio cifrato con la chiave di sessione comune, si invia anche il valore di Hash della chiave per una immediata verifica di uguaglianza. E' impossibile determinare il valore di Token dal valore di Hash.
Secondo un ulteriore perfezionamento, la presente invenzione si riferisce anche in combinazione con il metodo a chiave pubblica ad un metodo a chiave privata preferito che può essere utilizzato per attuare la seconda fase del presente metodo oppure può anche essere utilizzato indipendentemente come metodo di cifratura/decifratura simmetrico, cioà ̈ a chiave privata o segreta.
Secondo la presente invenzione, questo metodo simmetrico prevede per la cifratura/decifratura l'utilizzo di una funzione che opera una somma algebrica fra i byte costituiti da un messaggio o dei dati da cifrare ed i byte di una determinata chiave segreta di cifratura/decifratura e la quale funzione non à ̈ una funzione di Hash.
Sostanzialmente, l'operazione principale su cui l'algoritmo si basa à ̈ una "somma algebrica" tra i byte costituiti da un messaggio e i byte di una determinata chiave (a lunghezza variabile) e basa buona parte della sicurezza sulle proprietà statistiche offerte da una generica sommatoria algebrica (equiprobabilità ed incertezza).
Il problema da risolvere, e che rappresenta la trapdoor, Ã ̈ il seguente:
dato il blocco di messaggio mi= ( b0,b1,b2,. in)di n byte ed una chiave
Ki= ( k0,k1,k2, kn)di n byte determinare b0,b1,b2,. bndalla seguente relazione riassuntiva:
n—1
Si= ∑ ( sub(bi Î ̃ ki ) , ki ), pi, qi]
i =0
Pertanto, noto S determinare b0,b1,b2,. bn.
Nella teoria della complessità computazionale questa relazione rappresenta un problema NP-completo. Questa funzione à ̈ paragonabile, con le opportune distinzioni, ad una funzione f one-way: cioà ̈ se à ̈ semplice calcolare S = f(x) à ̈ computazionalmente
difficile calcolare χ = f<"-1>(S)·
Una proprietà di S à ̈ che S à ̈ sempre un valore rappresentabile con 8-bit.
Pertanto, ogni blocco m da cifrare, che rispetti la condizione di lunghezza «â‰¤1024 bit à ̈ "contenuto" in 8-bit.
La frazione di cifrato può essere espressa percentualmente, relativamente ad un valore massimo di 8-bit, in proporzione alla lunghezza del blocco da processare: se ad esempio il blocco à ̈ costituito da 128-bit (16byte) un crittanalista ha a disposizione il 6,25% di bit e per un blocco di 256-bit (32byte) ha a disposizione il 3,125% di bit. Ne consegue che maggiore à ̈ la lunghezza del blocco maggiore à ̈ la sicurezza fornita dall'algoritmo.
E' da notare che la funzione cifrante non à ̈ una "funzione di compressione" dei dati ne tanto meno una funzione di Hash. Con riferimento a quest'ultima, à ̈ l'esatto contrario: la funzione cifrante tende, probabilisticamente, a fornire un S tale che per messaggi/chiavi differenti possa fornire eguali valori .
Tutte le permutazioni relative ad un blocco di n valori, n!, distinti o ripetuti, grazie alle proprietà di cui gode una somma algebrica, danno come risultato lo stesso S.
Data la complessità matematica di estrarre gli addendi (i byte di un generico messaggio) da una generica somma algebrica S e nell'esatto ordine della permutazione di origine, la funzione cifrante utilizza un metodo che duplica, nella fase di cifratura, il messaggio m, al fine di rendere reversibile la fase di decifratura.
Il presente metodo simmetrico à ̈ un cifrario a blocchi appartenente alla categoria dei cifrari a chiave privata.
Il sistema crittografico si pone come novità nel campo degli algoritmi a chiave privata. Lo scopo su cui si basa questo metodo di cifratura/decifratura simmetrico à ̈ quello di realizzare un sistema cifrante dedicato che sia veloce, estremamente sicuro cioà ̈ molto resistente all'analisi crittografica, lineare e differenziale in particolare e di facile implementazione hardware/software.
Questo metodo di cifratura/decifratura simmetrico à ̈ studiato principalmente per applicazioni hardware/software ad alta velocità per la protezione di messaggi classificati ed à ̈ dedicato per criptare segnali radio come ad esempio dispositivi Prr (Personal role radio) e simili, trasmissioni audio/video come videoconferenze, ed à ̈ particolarmente indicato per messaggi di piccole dimensioni (come messaggi di natura militare, dati bancari e simili ad esempio).
L'invenzione ha per oggetto anche un sistema di cifratura/decifratura che si basa sui metodi asimmetrici e/o simmetrici sopra esposti nonché un dispositivo di cifratura/decifratura comprendente un programma caricato nella memoria di un elaboratore e eseguibile dal detto elaboratore in cui l'esecuzione del programma determina l'esecuzione dei passi di metodo secondo una o più delle caratteristiche sopra esposte e rivendicate e relative al metodo asimmetrico e/o a quello simmetrico di cifratura/decifratura.
Inoltre l'invenzione ha per oggetto anche un supporto di memorizzazione leggibile da una unità di elaborazione, sul quale supporto à ̈ memorizzato un programma eseguibile dal detto elaboratore, la cui esecuzione determina l'esecuzione dei passi di metodo secondo una o più delle caratteristiche sopra esposte e rivendicate e relative al metodo asimmetrico e/o a quello simmetrico di cifratura/decifratura.
Con riferimento al metodo, al sistema, al dispositivo sopra descritti à ̈ da notare che la trasmissione della chiave pubblica può avvenire anche in forma grafica, come immagine o grafico.
Ulteriori caratteristiche dell'invenzione sono oggetto delle sottorivendicazioni.
Le caratteristiche dell'invenzione ed i vantaggi della stessa risulteranno più chiaramente dalla seguente descrizione di esempi esecutivi in cui il metodo à ̈ definito grazie ad un più rigoroso formalismo matematico e con l'ausilio di figure allegate in cui:
La fig. 1 illustra un esempio di chiave pubblica grafica reale e fittizia per due parti in comunicazione fra loro.
La figura 2 riassume i passi di creazione delle chiavi pubbliche e di quelle private e la procedura di scambio delle stesse, nonché il passo di calcolo della chiave di sessione effettivamente utilizzata per la cifratura/decifratura.
La fig. 3 mostra due chiavi pubbliche scambiate fra due entità in comunicazione fra loro e la ricostruzione delle comuni chiavi di cifratura e decifratura segrete o private da utilizzare con l'algoritmo simmetrico di cifratura e decifratura nella seconda fase del metodo e del sistema secondo la presente invenzione.
La fig. 4 illustra rispettivamente per il noto algoritmo RSA o Diffie/Helmann e per l'algoritmo utilizzato nel metodo secondo la presente invenzione il consumo elettrico medio di un dispositivo elaboratore che esegue il detto algoritmo.
La figura 5 illustra la schermata di un sistema di cifratura eseguito su un server ed un Client in comunicazione fra loro in cui il sistema à ̈ realizzato secondo la presente invenzione.
La figura 6 illustra le schermate analoghe a quelle della figura 5 in una condizione in cui il token di identificazione ID token à ̈ impostato in modo errato nel Client.
La figura 7 illustra un diagramma di flusso di un sistema di cifratura simmetrico.
La fig. 8 illustra una tabella di confronto dei tempi necessari per la creazione della chiave nei noti sistemi di cifratura e nel sistema secondo la presente invenzione.
La fig. 9 illustra una tabella delle equivalenze delle lunghezze di chiave per i diversi sistemi crittografici a chiave pubblica noti e per il sistema secondo la presente invenzione espressi in bit.
Il metodo ed il sistema che implementa detto metodo secondo la presente invenzione utilizza una funzione somma H in modulo. Il metodo à ̈ simile a quello noto di Diffie-Hellman ma senza utilizzo di numeri primi, nà ̈ di numeri di grandi dimensioni in generale.
La funzione somma H in modulo à ̈ una funzione hash minimale, non perfetta ed utilizza una matrice A di valori privati, un valore di modulo q privato ed un valore di modulo p pubblico per creare una chiave numerica pubblica e gli stessi valori cioà ̈ la matrice A e il modulo q e p, sono riutilizzati per la generazione della chiave di cifratura/decifratura condivisa (chiave di sessione).
La matrice utilizzata à ̈ una matrice bidimensionale i cui valori partono da un minimo di 2<8>, lo stesso vale per la scelta del modulo q e del valore p. Il numero di righe R della matrice può essere scelto arbitrariamente nel range: 32 ≤ R ≤ 256 .
Il metodo secondo la presente invenzione si basa sulla autocostruzione della chiave di cifratura/decifratura che avviene utilizzando una chiave pubblica trasmessa da ciascuna entità fra le entità in comunicazione fra loro alle altre entità.
Dopo lo scambio delle chiavi pubbliche tra due o più entità che comunicano fra loro, ognuna di dette entità possiede il materiale per creare la chiave segreta di cifratura (o chiave di sessione) da utilizzare in combinazione con un qualsiasi algoritmo a chiave simmetrica (chiave privata) per cifrare/decifrare qualsiasi messaggio in formato binario. L'algoritmo preposto alla creazione della chiave gode della caratteristica particolare, secondo cui ogni entità utilizza un vettore di valori privati che non à ̈ mai stato utilizzato nella fase di creazione delle chiavi pubbliche. Questa caratteristica conferisce notevole sicurezza poiché la chiave viene arricchita con del materiale noto solo ad ogni singola entità. Supponendo per assurdo che un attaccante riuscisse casualmente a scoprire i valori delle chiave privata di almeno due entità in comunicazione tra loro, dovrebbe necessariamente scoprire i valori di questo vettore e la loro esatta permutazione per poter ricostruire la chiave di cifratura/decifratura. Il verificarsi di questa eventualità à ̈ altamente improbabile poiché questi valori non vengono mai trasmessi, ma, semplicemente vengono considerati solo al momento della costruzione della chiave privata o di sessione. Altri algoritmi noti a chiave pubblica non hanno tale caratteristica poiché la formulazione matematica non consente di alterare la funzione di base per la creazione delle chiavi di sessione.
In figura 1 à ̈ illustrato un esempio di una chiave pubblica reale e della corrispondente chiave pubblica fittizia rispettivamente di due entità o parti in comunicazione fra loro indicate con A e con B.
La generazione della chiave fittizia ha luogo grazie all'utilizzo di una funzione che modifica il valore reale della chiave pubblica v secondo la relazione v+rnd*p, in cui rnd à ̈ un valore pseudo casuale generato dal sistema e p un valore definito come in precedenza. Il valore rnd viene generato mediante un generatore pseudo casuale a partire da uno stesso seme che à ̈ costituito da un valore condiviso fra le parti per mezzo di un token di identificazione scambiato una tantum e/o costituito almeno in parte da un valore prefissato scambiato una tantum e da una valori variabili nel tempo e conoscibili da ambedue le parti in comunicazione fra loro.
Il metodo di cifratura/decifratura prevede diverse fasi che verranno descritte a seguito utilizzando una notazione matematica ed in pseudo codice più rigorosa e precisa.
Come illustrato nella tabella della figura 2, il sistema prevede dei parametri pubblici e dei parametri privati. I parametri pubblici sono costituiti dai valori p ed R e quelli privati dai valori q e A
La prima fase consiste nella creazione della chiave privata che à ̈ costituita dalla matrice A e dal valore q:
Sia A una matrice. La matrice A viene inizializzata nel seguente modo se indichiamo con r la generica riga della matrice e con p (p ∈Z<+>) un valore che rappresenta il modulo condiviso tra i comunicanti, cioà ̈ il valore pubblico p:
Ar,0= rnd con Ar,0∈Z e 1 ≤ r ≤ R
Ar,1= rnd * p con Ar,1∈Z e 1 ≤ r ≤ R
q = rnd * p con q∈Z<+>
Essendo previsti i seguenti Vincoli:
q≠p/ Ar,0(mod p)≠0 e Ar,0>q dove: Ar,0ed g sono valori casuali privati e g in particolare à ̈ utilizzato come valore di riduzione modulo q nella funzione f(x) e la sua inversa f<-1>(x) con lo scopo di scorrelare il valore della chiave di sessione dai valori della matrice A.
Il valore q viene generato in automatico nelle fasi di metodo e dal sistema che esegue il metodo secondo la presnete invenzione
Il valore del modulo condiviso p generato anch'esso in automatico o prestabilito nella configurazione inziale del metodo e del sistema garantisce che la funzione inversa utilizzata dai comunicanti esista. Pertanto l'unico valore conosciuto da un eventuale attaccante à ̈ p congiuntamente ai valori delle chiavi pubbliche S.
La trapdoor à ̈ insita nella funzione di creazione della chiave cifratura/decifratura che verrà definita con maggiore dettaglio in seguito.
Una volta creata la chiave privata à ̈ possibile generare la chiave pubblica utilizzando i passi definiti dalle seguenti relazioni matematiche:
La relazione matematica che esprime la sommatoria S e che rappresenta la chiave pubblica à ̈ data da:
f(x) à ̈ una funzione modulo q i cui input sono i valori della matrice A con 1≤Ai,j≤n, i valori p e q ed R. q à ̈ corrispondente al valore rnd*p
S rappresenta il risultato della sommatoria ∀i= ∈Z ;
A la matrice mxn ∀m,n = 1,...,n ∈ Z
i un indice iteratore con i∈Z<+>
p il valore modulo condiviso, un intero casuale con p∈ Z<+>(condiviso dai partecipanti alla comunicazione) rnd à ̈ un numero casuale (generato da note funzioni o da funzioni proprietarie) utilizzato, come precedentemente spiegato, per introdurre quantità aleatorie in S.
La chiave privata à ̈ costituita dalla matrice Amxnp ed R sono due valori pubblici che sono concordati fra le parti in comunicazione o sono prestabilite nella configurazione del sistema di cifratura/decifratura q à ̈ definito da ciascuna entità mediante un generatore pseudo casuale secondo una procedura fissa prestabilita del metodo e del sistema di cifratura/decifratura.
Il metodo à ̈ molto elastico dal punto di vista progettuale ed indipendente dalla funzione generatrice di valori casuali. Pertanto, i valori casuali possono essere ricavati utilizzando i PRNG (Pseudo Random Number Generatori o i TRNG (True Random Number Generatori scelti tra i più sicuri crittograficamente ed implementarli nella presente invenzione secondo le specifiche realtive agli stessi. Ad esempio à ̈ possibile utilizzare il PRNG incluso nelle specifiche ANSI X9.17.
E' possibile sostituire in ogni momento il generatore implementato (scegliendolo tra i più promettenti allo stato dell'arte) senza alcuna conseguenza per la compatibilità per il dispositivo che include la presente invenzione.
La quantità aleatoria, si ricorda, à ̈ data da rnd*p tale che possa essere ricavata la funzione inversa. Infatti per una proprietà dell'algebra dei moduli si ha: n·p(modp)=0, pertanto, questo
garantisce che la funzione inversaf<- 1>esista e sia corretta e indipendente da rnd.
La moltiplicazione della matrice per l'indice i ne determina la permutazione di output, importante ai fini della sequenza di creazione della chiave e di un suo eventuale sottoinsieme preso casualmente.
La funzione f(x) per la creazione della chiave pubblica in accordo con la precedente relazione può essere scelta vantaggiosamente fra i seguenti gruppi:
Primo gruppo
f(x) = {[(A(r,0) << w1 (A(r, 0) » w2)] * (i w3)}mod# f(x) = {[(^(>,0) »> wj (A(r, 0) « w2)] * (i w3)}modtf f(x) = {[(A(r ,0) «< wj (A(r,0) « w2)] * (i w3)}mod^ f{x) = {[(Λ(Γ,0) »> wj (A(r, 0) » w2)] * (i w3)}mod3⁄4' Secondo gruppo
f(x) = {[(^(r,0) « w,) (A(r, 0) »> w2)] * (i w3)}mod^ /(x) = {[(^(r,0) » wj (A(r, 0) «< w2)] * (/ w3)}mod^ f(x) ={[(A(r,0)« W1)+ (A(r,0)«< w2)]* (i+w3)}mod q f(x) = {[(A(Γ,0) » w1)+ (A(r,0)»>w2)]* (i+w3)}modq-Qualunque funzione selezionata deve essere completata dalla seguente
espressione:f(x)= f(x)+ rnd * P
Nelle espressioni sopra descritte e w2indicano i valori interi nel range 1-31 per processori a 32 bit e 1-63 per processori a 64 bit. w3Ã ̈ un valore intero nell'intervallo 1-32bit per processori a 32 bit e 1-64 per processori a 64 bit. I simboli «,»,<«,»> rappresentano rispettivamente le operazioni di shift dei bit a sinistra di w2posizioni, shift dei bit a destra di w2posizioni, rotazione dei bit a sinistra di w1posizioni e rotazioni a destra dei bit di w1posizioni.
Nella tabella della figura 2 vengono indicate le due chiavi pubbliche calcolate secondo quanto precedentemente descritto per A e per B.
Una volta calcolate le chiavi pubbliche, A invia la sua chiave pubblica a B e B invia la sua chiave pubblica ad A.
La terza fase prevede i passi per la creazione della chiave privata di cifratura/decifratura detta anche chiave di sessione.
La funzione inversa f<-1>per la determinazione della chiave condivisa o di sessione à ̈ data dai passi seguenti espressi in pseudo codice e che vengono eseguiti in loop e nei quali S' à ̈ la chiave pubblica di uno dei comunicanti e ksà ̈ la risultante chiave di sessione:
1. do:
2. for r = 1 to R do:
3. S = S'
R
<4>- S = ∑ /(p, q, A, R)
i =1
5 ks = [ (S mod p) * A(r,1)]mod q
6. A(r,1) = (A(r,1) S)(mod p)
7. Next
8. Repeat to ∞
dove inoltre:
R à ̈ il numero massimo di righe della matrice A: se ad esempio R=4 e i valori generati sono a 32-bit sarà generata una chiave di 4*2*32 = 256 bit.
La relazione sopra indicata à ̈ una relazione ricorsiva infinita, dove il valore privato Arviene alterato in funzione della n-esimo valore di S e successivamente riutilizzato nella funzione sommatoria per produrre differenti valori di output.
La funzione f (x) per la creazione della chiave di sessione può essere scelta tra i seguenti gruppi:
Primo gruppo
f(x) = {[A(r,0) «< w1) (A(r ,0) » w2)] *(i w3) A(r,1)}modq f(x) = {[(A(r ,0) »> w1) (A(r, 0) « w2)] * (i w3) A{r,1)} mod q f(x ) = {[(A(r ,0) «< w1) (A(r, 0) « yw2]*(i w3) A(r,1)} mod q f(x) = {[(A(r,0) »> w1) (A(r, 0) » w2)] * (i w3) A(r,1)}modq Secondo gruppo
f(x ) = {[(A (>,0) « W1) (A(r, 0) »> w2)] * (i w3) A(r, 1)} mod q f(x) = {[(A(>,0) » W1) (A(r, 0) «< w2)] *(i w3) A(r, 1)} mod q f(x) = {[(A(>,0) « w1) (A(r, 0) «< w2)] * (i w3) A{r,1)} mod q f(x) = {[(A(r ,0) » w1) (A(r ,0) »> w2)] *(i w3) A(r,1)}modq dove: W1e w2sono valori interi nel range 1-31 per processori a 32 bit e 1-63 per processori a 64 bit. w3Ã ̈ un valore intero nell'intervallo 1-32bit per processori a 32 bit e 1-63 per processori a 64 bit. I simboli «,»,<«,»> rappresentano rispettivamente le operazioni di shift dei bit a sinistra di w2posizioni, shift dei bit a destra di w2posizioni, rotazione dei bit a sinistra di w1 posizioni e rotazioni a destra dei bit di w1posizioni.
I valori w1, w2, w3sono prestabiliti nella configurazione del metodo e del sistema e non devono venire indicati ogni volta dall'utente ma sono automaticamente utilizzati.
La possibilità di scegliere la funzione di creazione della chiave pubblica e della chiave di sessione ad esempio tra quelle sopra elencate offre vantaggi dal punto di vista della sicurezza, in quanto, una funzione non nota o semi-nota crea maggiori difficoltà dal punto di vista di un attacco di forza esaustiva rispetto invece ad una funzione nota e facilmente riprogrammabile. RSA, DH, ECC non hanno questa caratteristica, poiché la natura matematica degli stessi non la consente.
La dimensione della chiave (espressa in bit) Ã ̈ calcolata dalla seguente relazione:
/ = m * n * w
dove m à ̈ il numero delle righe della matrice, n il numero di colonne e w la dimensione della parola espressa in bit (32bit,64bit,..etc)
Ad esempio per una matrice Am,ncon m=4, n=2 e w=32 avremo una chiave privata di 4 * 2 * 32 = 256bit Come risulta dalla relazione sopra espressa,la lunghezza della chiave pubblica, privata e di sessione à ̈ variabile, in modo tale da essere adattata per differenti livelli di sicurezza. A differenza di sistemi come RSA, DH, ECC dove à ̈ consigliato avere almeno 2048 bit di lunghezza per i primi due e di circa 230 bit per le ECC e quindi una notevole richiesta di risorse computazionali, specialmente per RSA/DH il metodo secondo la presente invenzione à ̈ semplicemente equivalente ad un sistema a chiave privata per quanto riguarda la dimensione e la relativa sicurezza. Ne consegue che il metodo della presente invenzione richiede basse risorse computazionali anche per il calcolo di chiavi di grandi dimensioni cioà ̈ chiavi comprese almeno tra 256 e 4096-bit. In figura 8 à ̈ riportata una tabella comparativa relativamente ai sistemi citati.
Ad esempio considerando un piccolo vettore di 8 elementi a 32bit (i valori che costituiscono la chiave di sessione) il metodo secondo la presente invenzione à ̈ in grado di fornire chiavi di 8x32-bit (256-bit).
Le operazioni algebriche utilizzate e che sono essenzialmente la somma, le rotazioni dei bit, le moltiplicazioni e le operazioni modulo a n-bit) sono tra le più veloci su molte piattaforme Hardware con moderni processori a n-bit (32/64-bit), ma anche con processori di vecchia generazione e di modesta velocità. Questa proprietà à ̈ importante relativamente agli attacchi crittanalitici che si basano sul consumo di potenza elettrica durante l'esecuzione dell'algoritmo nella fase di creazione delle chiavi pubblica e di sessione (power monitoring attack e Timing Attack) Un confronto con algoritmi noti, della stessa categoria, quali RSA e DH mostra come l'algoritmo utilizzato nel metodo secondo la presente invenzione abbia un andamento regolare e costante nel consumo di potenza rispetto a questi ultimi. In figura 8 sono riportati rispettivamente i risultati relativi all'andamento del consumo medio di energia con i sistemi RSA/DH e con un sistema operante secondo il metodo della presente invenzione mentre in fig.4 à ̈ riportato il tempo di creazione di una chiave. Come si può notare il consumo energetico nel caso del presente metodo e sistema à ̈ molto minore e quasi-lineare rispetto ai sistemi RSA/DH in particolare.
Nella figura 2 questa operazione à ̈ evidenziata dalle relazioni:
KsA= f(AA,SB) e KsB=f(AB,SA), in cui SAe SBsono rispettivamente la chiave pubblica di A e di B ed in cui AAe ABsono rispettivamente le matrici A che rappresentano la chiave privata di A e di B.
La chiave di sessione utilizzata per la cifratura e decifratura dei messaggi scambiati fra A e B secondo una qualsivoglia metodo od algoritmo di cifratura/decifratura à ̈ indicata con ks.
Come appare evidente da quanto sopra, il metodo ed il sistema secondo la presente invenzione appartengono alla classe dei problemi NP-completi con particolare riferimento alla classe dei problemi combinatori.
L'algoritmo utilizza una funzione "Hash minimale non perfetta" chiamata ricorsivamente per creare una valore dato dalla somma di tutti gli n valori della chiave privata e che danno origine alla creazione della chiave pubblica.
Come già evidenziato in precedenza con riferimento alai figura 1, le chiavi scambiate per la successiva fase di cifratura/decifratura sono delle chiavi fittizie (tale che il valore della stessa non potrà mai coincidere con una possibile chiave reale), questo implica che le eventuali chiavi scambiate ed intercettate sono delle chiavi che non hanno alcun valore reale dal punto di vista matematico e qualunque esame delle stesse risulta nullo. Le chiavi reali vengono composte dai legittimi comunicanti sfruttando la chiave fittizia in combinazione con la propria chiave privata.
ESEMPIO
La chiave pubblica di valore reale v potrebbe essere inviata con valore fittizio v+rnd*p come illustrato nella figura 1.
Questa trasformazione complica notevolmente una eventuale analisi per risalire al valore numerico che rappresenta la vera chiave pubblica.
Lo scambio delle chiavi avviene con la stessa modalità del protocollo Diffie-Hellman come evidenziato in figura 2, ma, a differenza di questo le chiavi pubbliche, fittizie scambiate possono generare una sequenza numerica casuale teoricamente infinita e che rappresenta la chiave reale, cioà ̈ la chiave di sessione per codificare e decodificare i messaggi .
L'esempio di figura 3 mostra come dallo scambio di due chiavi si ottenga questa sequenza.
E' da considerare che la sequenza numerica dell'esempio à ̈ limitata per ovvi motivi di spazio. Si consideri che nella realtà questa sequenza può essere teoricamente infinita ed à ̈ possibile selezionare una frazione di questa sequenza per stabilire la chiave di codifica.
Pertanto nella pratica à ̈ possibile che lo scambio avvenga teoricamente una sola volta e successivamente, secondo un qualsiasi algoritmo generante valori casuali interi per prelevare i valori per ricavare la chiave di sessione à ̈ possibile selezionare una frazione della successione generata corrispondente ai valori sottolineati in figura. Questa condizione mostra come sia complesso per un attaccante risalire alla chiave di codifica condivisa, anche qualora, per assurdo, fosse in grado di risalire alle chiavi temporali delle entità in comunicazione.
La definizione di quali dei valori della sequenza siano quelli corretti utilizzabili come chiavi di sessione à ̈ definita grazie ad un token condiviso fra le due entità o mediante una reimpostazione condivisa di parametri del metodo o del sistema che definiscono la scelta dei valori della detta sequenza. Vantaggiosamente il valore condiviso à ̈ costituito dal seme (valore) di generazione di un valore pseudo casuale che definisce la sequenza dei valori del vettore da considerare come valide chiavi di sessione e che nella figura 3 sono indicati sottolineati.
Le figure 5 e 6 illustrano un esempio di esecuzione del metodo costituito da un programma eseguito da un server e da un Client in comunicazione fra loro. In questo caso le finestre 1 e 2 indicano 1 valori delel chiavi pubbliche del server e del Client che sono state scambiate fra loro. La finestra 6 indica il token ID. La finestra 4 contiene i valori della matrice che costituisce la chiave privata rispettivamente del server e del Client. Appare evidente che le matrici sono a due colonne e che i valori sono diversi per il server e per il Client. La finestra 5 indica la chiave di sessione e la finestra 3 lo stato di autenticazione del Client presso il server.
La figura 6 illustra le stesse schermate per le quali il codice ID del Client à ̈ indicato errato e pertanto il sistema non à ̈ riuscito a calcolare la chiave di sessione per il Client e lo status indicato à ̈ quello di potenziale intrusione nella finestra 3 di stato. Inoltre la finestra 5 in cui appare la chiave di sessione mostra come i valori siano diversi nel server e nel Client.
Come indicato più sopra il metodo secondo la presente invenzione fin qui descritto costituisce la prima fase a chiave pubblica con cui viene trasmessa una chiave privata per eseguire operazioni di cifratura/decifratura di dati, messaggi, o simili secondo un metodo a chiave simmetrica, ovvero a chiave privata.
In combinazione con quanto fino a qui descritto e che ha la funzione di consentire lo scambio fra due o più enti che comunicano fra loro delle chiavi private à ̈ possibile utilizzare qualsivoglia tipo di sistema di cifratura/decifratura simmetrico, cioà ̈ a chiave privata.
Quale esempio preferito, l'invenzione prevede l'utilizzo di un metodo di cifratura/decifratura simmetrico innovativo rispetto a quelli presenti nello stato dell'arte.
Il metodo innovativo à ̈ un metodo di cifratura/decifratura a blocchi appartenente alla categoria dei cifrari a chiave privata principalmente adatto per applicazioni hardware/software ad alta velocità per la protezione di messaggi classificati, per criptare segnali radio ad esempio dispositivi Prr (Personal role radio) e simili, trasmissioni audio/video come ad esempio videoconferenze. Il metodo ed il corrispondente sistema che opera secondo questo metodo à ̈ previsto per messaggi di piccole dimensioni come ad esempio messaggi di natura militare, dati bancari e simili.
La figura 7 illustra un diagramma di flusso di un generico metodo di cifratura/decifratura simmetrico. Un messaggio m in chiaro previsto al passo 10 viene sottoposto a cifratura al passo 11 con una chiave di cifratura ottenendo in uscita al passo 12 il messaggio cifrato m*. Questo messaggio cifrato sottoposto a decifratura al passo 13 con un algoritmo di decifratura che utilizza la stessa chiave utilizzata per la cifratura fornisce in uscita 14 il messaggio m nella forma originaria.
L'algoritmo si basa su una "somma algebrica" tra i byte costituiti da un messaggio da trasmettere e criptare/decriptare e i byte di una determinata chiave (a lunghezza variabile) e basa buona parte della sicurezza sulle proprietà statistiche offerte da una generica sommatoria algebrica che sono costituite dalla equiprobabilità ed incertezza.
La trapdoor, che conferisce la sicurezza contro gli attacchi del metodo simmetrico si basa sul seguente problema matematico:
dato il blocco di messaggio mi= ( b0,b1,b2,. bn)di n byte ed una chiave Ki= ( k0,k1,k2,. kn)di n byte determinare b0,b1,b2,. bndalla seguente relazione riassuntiva:
n— 1
Si= fmix[ ∑ ( sub(bi ki) , ki), pi, qi\
i =0
Pertanto, noto S determinare b0,b1,b2,. bn.
Nella teoria della complessità computazionale questa relazione rappresenta un problema NP-completo. Formalmente e con le opportune distinzioni, la funzione sopra indicata à ̈ paragonabile ad funzione f one-way, poiché se à ̈ semplice calcolare S = f(x) à ̈ computazionalmente difficile calcolare x=f<_1>(S)
Una proprietà di S à ̈ che S à ̈ sempre un valore rappresentabile con 8-bit.
Pertanto, ogni blocco m da cifrare, che rispetti la condizione di lunghezza m≤1024 à ̈ "contenuto " in 8-bit.
La frazione di cifrato può essere espressa percentualmente, relativamente ad un valore massimo di 8-bit, in proporzione alla lunghezza del blocco da processare. Se ad esempio il blocco à ̈ costituito da 128-bit (16byte) un crittanalista ha a disposizione il 6,25% di bit e per un blocco di 256-bit (32byte) ha a disposizione il 3,125% di bit. Ne consegue che maggiore à ̈ la lunghezza del blocco maggiore à ̈ la sicurezza fornita dall'algoritmo.
La funzione cifrante su indicata non à ̈ una funzione di compressione dei dati ne tanto meno una funzione di Hash, ma anzi con riferimento a quest' ultima , à ̈ l'esatto contrario in quanto la funzione cifrante tende, probabilisticamente, a fornire un S tale che per messaggi/chiavi differenti possa fornire eguali valori.
La funzione cifrante à ̈ utilizzabile solitamente per messaggi brevi e consiste in una funzione che esegue una somma algebrica dell'intero blocco cifrato generato in modo da racchiudere l'intero blocco di nbit in soli 8-bit, per blocchi lunghi fino a 1024-bit secondo la seguente relazione riassuntiva:
n—1
Si = fmix[ ∑ (sub(bi ki) , ki), pi, qi]
i =0
Dove:
fmix à ̈ una funzione di mescolamento somma modulo 8-bit che utilizza due chiavi pi, qi;
pi, qisono valori prestabiliti e ricavati come verrà descritto in seguiot nel processo di schedulazione sub à ̈ la funzione di sostituzionedi un singolo byte come riportato nello schema di un sesempio seguente ed al passo 3 descritto in seguito;
Lo scopo della funzione di mescolamento à ̈ quello di creare altissima "diffusione" in ogni blocco cifrato .
ki à ̈ l'i-esima chiave nella funzione di Xor;
e nella funzione di sostituzione;
bià ̈ l'i-esimo byte di un generico messaggio.
Sià ̈ l'i-esimo byte della funzione cifrante
La fase di cifratura avviene in quattro passi:
Passo 1. somma binaria (mod 2) con la chiave ki;
Passo 2. somma algebrica origine;
Passo 3. sostituzione del singolo byte e somma dei singoli byte;
Passo 4. applicazione della funzione fmix
I passi verranno ora decritti con maggiore dettaglio e in modo formale utilizzando un linguaggio in pseudo codice che à ̈ perfettamente intellegibile agli esperti del ramo ed in particolare a coloro che dispongono di un bagaglio culturale di base in matematica ed informatica. Il linguaggio in pseudo codice esprime in modo più chiaro ed univoco i passi e le operazioni di cifratura.
Nell'utilizzo del metodo di cifratura simmetrico ora descritto in combinazione con il metodo asimmetrico descritto in precedenza la chiave utilizzata per la cifratura/decifratura à ̈ stata trasmessa agli enti in comunicazione utilizzando il metodo di cifratura/decifratura a chiave pubblica che costituisce la prima fase del metodo combinato di cifratura/decifratura. La chiave privata à ̈ ora in possesso degli enti che possono utilizzarla sia per la cifratura di messaggi da trasmettere sia per la decifratura, cioà ̈ la trasformazione in chiaro di un messaggio cifrato ricevuto le quali cifrate e decifrature sono eseguite con la chiave privata secondo il metodo di cifratura e decifratura simmetrico qui descritto.
Il metodo ed 11 relativo sistema di clfratura/declfratura simmetrico può essere anche utllzzato separatamente dalla metodo asimmetrico come un tradizionale metodo di cifratura/decifratura simmetrico senza che sia prevista la fase iniziale di trasmissione della chiave privata con il metodo asimmetrico più sopra previsto. Anche in queste condizioni il metodo simmetrico presenta vantaggi relativamente ai noti metodi sia per quanto riguarda la velocità, sia per quanto attiene la sicurezza nei confronti di attacchi.
Venendo ai passi in dettaglio:
Passo 1.Somma binaria (mod 2) con chiave ki:
For i = 0 To N - 1 do:
bi= bi+ ki
Next
In cui indica la funzione somma modulo 2 (or esclusivo)
kià ̈ l'i-esimo byte di chiave nella funzione somma modulo 2;
bià ̈ l'i-esimo byte di un generico messaggio.
Per ciascuno byte viene eseguita la funzione su indicata.
Passo 2.Somma algebrica origine:
For i = 0 To N - 1 do:
S0= S0+ bi
Next
In cui S0Ã ̈ la sommatoria origine (senza sostituzione) dei primi N byte presenti nel blocco da cifrare.
3.sostituzione del singolo byte nel blocco e successiva sommatoria:
For i= 1 To N - 1 do:
Si= S0- bi+ ki(sostituisce ki a bi)
Next
In cui Sià ̈ la i-esima sommatoria dei byte nell'iesimo blocco
4 .applicazione della funzione di mescolamente fmix For i = 1 To n-1 do
fmix Si, Si-1,pi
Next
For i = n - 2 To 0 Step -1
fmix Si, Si+1, qi
Next
In cui fmix à ̈ la funzione di mescolamento della iesima sommatoria.
Per comprendere meglio come l'algoritmo utilizzato nel presente metodo di cifratura simmetrico opera qui di seguito à ̈ riportato un esempio di uno schema di della fase di sostituzione applicato ad un blocco di 8 byte (ovvero 64-bit) come segue :
50 = bo bi b2+ b3+ b4+ b5+ bg b7
51= b0+ ki b2+ b3b4+ bs bg b7
52= bo bi k2+ b3+ b4+ bs bg+ b7
53= bo bi b2+ k3+ b4+ b5+ bg+ b7
54= bo bi b2+ b3+ k4+ b5bg+ b7
55= bo bi b2+ b3+ b4+ ks bg+ b7
Sg = bo bi b2+ b3+ b4+ b5+ kg b7
S7= bo b3+ b2+ b3+ b4+ b5+ b6+ k7
k1,k2,...k7sono valori di chiave di sostituzione relativo al byte di ogni singola somma e ricavate come mostrato nella fase di schedulazione della chiave di sessione (si noti che k0non à ̈ mai utilizzato nella fase di sosttituzione poiché non ha rilevanza nel metodo) . Tutte le somme da S0a S7sono somme a 8-bit
La funzione inversa à ̈ facilmente ricavabile come differenza tra S0e Si...S7, dopo aver annullato il valore di sostituzione X quindi:
b0= S0(S1— k1)
b1= S0(S2<—>k2)
b2= S0(S3<—>k3)
b3= S0(S4- k4)
b4= S0(S5— k5)
b5= S0(S6— k6)
b6= S0(S7— k7)
infine l'ultimo byte à ̈ dato da:
b7= S0 — (b0+ b1+b2+ b3b4+ b5b6)
Pertanto la funzione di decifratura del blocco b di messaggio à ̈ definita dai seguenti passi:
For i = 0 To n - 2 do:
fmix<-1>Si, Si+1, qi
Next
For i = n - 1 To 1 Step -1
fmix<-1>Si, Si-1, Pi
Next
sum 0
For i 1 To N - 1 do:
bi= S0- (Si- ki)
sum = sum bi
bi= bi® ki
Next
b0= (S0- sum) ® k0
La funzione di mescolamento fmix e la sua inversa fmix<-1>più sopra utilizzate nei pseudo codici sono definite dalle seguenti relazioni
fmix: y = (y+ x+ k)Mod2<8>
x = (x+ y+ k)Mod2<8>
fmix<-1>: x = (x-y-k)And2<8>-1
y = (y-x-k)And2<8>-1
Secondo una ulteriore caratteristica, à ̈ possibile prevedere una schedulazione della chiave Master (o chiave di sessione) che à ̈ quella effettivamente scambiata dalle entità in comunicazione e da cui vengono determinati i valori di chiave sia per la fase di somma modulo 2 sia per la fase di sostituzione di ogni singolo byte nel blocco da sommare. Questa fase consiste vantaggiosamente nel creare tre tabelle utilizzate per la fase di cifratura e decifratura. Le tabella P e Q a 32-bit sono utilizzate nella fase di mescolamento mentre la tabella (vettore) k a 8-bit à ̈ utilizzata nella fase di somma modulo 2 e nella fase di sostituzione dei singoli byte come più sopra indicato anche con l'esempio di sostituzione del blocco di messaggio a 8 bit.
La chiave può variare da un minimo di 64-bit fino a 1024-bit. Con l'allungamento del blocco aumenta in modo quasi esponenziale la sicurezza in quanto aumentano le difficoltà di analisi crittografica dei blocchi.
La fase di schedulazione à ̈ descritta al meglio e con maggiore precisione dal seguente pseudo codice di schedulazione della chiave Master:
sia
a = 0
b = 0
nk = 8
ks= chiave di sessione
L = Lunghezza del blocco da cifrare: 8,16,32,...256-byte (multipli di 8)
For r = 1 To 2 do:
w = 0
For i = 1 To (L \ nk) do:
z = nk-1
For j = 0 To nk - 1 do:
a= a (ks(z)» >7®ks(z)» >18®ks(z)» 3)®b b= b (ks(w)» >7® ks(w)» >18® ks(w)» 3)® a ks(w) = a
ks(z) = ks(z) ® b
z = z - 1
w = w 1
Next
Next
// crea vettore P e Q a 32-bit
If r = 1 Then
For i = 0 To L - 1 do:
p(i) = ks(i)
Next
Else
For i = 0 To L - 1 do:
q(i) = ks(i)
Next
End If
Next
// crea vettore di sostituzione
For i = 0 to L — 1 do:
k(i) =Abs( ( p(i)®q(i) ) mod 256) Next
Next
In cui per gli operatori utilizzati vale: >>> := Right Shift,
>>:= Left Shift,
Î ̃ := somma modulo 2
Abs = calcola il valore assoluto
\ = divisione intera

Claims (21)

  1. RIVENDICAZIONI 1. Metodo di cifratura e decifratura il quale metodo comprende: una prima fase a chiave pubblica per il quale à ̈ prevista: a) una prima chiave pubblica per ciascuna di almeno due entità comunicanti fra loro e che viene scambiata fra le almeno dette due entità fra loro comunicanti e la quale chiave pubblica utilizzata per la cifratura di un primo messaggio da trasmettere fra le dette almeno due entità comunicanti fra loro; b) una chiave privata per ciascuna di dette almeno due entità fra loro comunicanti che viene utilizzata per la decifratura del messaggio criptato mediante la suddetta chiave pubblica e scambiato fra i due comunicanti; una seconda fase di cifratura/decifratura a chiave simmetrica per la quale à ̈ prevista una chiave segreta (o di sessione) per la cifratura/decifratura di secondi messaggi trasmessi fra le dette almeno due entità comunicanti essendo la detta chiave segreta (o di sessione) scambiata fra gli almeno due comunicanti utilizzando la prima fase di cifratura a chiave pubblica e costituendo la detta chiave segreta di cifratura/decifratura il primo messaggio, essendo la trapdoor costituita dalla funzione di creazione della chiave segreta, mentre il secondo messaggio à ̈ costituito dall'informazione da scambiare fra le due entità comunicanti e mentre per il calcolo delle chiavi non vengono utilizzati numeri primi.
  2. 2. Metodo di cifratura e decifratura secondo la rivendicazione 1 in cui la chiave pubblica à ̈ generata da una funzione somma Hash in modulo che utilizza una matrice di valori privati, un valore modulo privato ed un valore modulo pubblico.
  3. 3 . Metodo secondo le rivendicazioni 1 o 2 in cui la matrice à ̈ una matrice bidimensionale di interi casuali i cui valori partono da un minimo di 2<8>e la quale matrice ha un numero di righe arbitrario.
  4. 4 . Metodo secondo una o più delle precedenti rivendicazioni in cui la cifratura/decifratura prevede le seguenti fasi: fase 1: creazione della chiave privata fase 2: creazione della chiave pubblica fase 3: creazione della chiave crittografica o di sessione fase 4 cifratura/decifratura del messaggio d'informazione da trasmettere fra le entità in comunicazione .
  5. 5. Metodo secondo una o più delle precedenti rivendicazioni in cui la chiave pubblica k à ̈ generata dalla seguente funzione: f(x) à ̈ una funzione modulo q i cui input sono i valori della matrice A con 1≤Ai,j≤n, i valori p e q ed R. Q à ̈ corrispondente al valore rnd*p S rappresenta il risultato della sommatoria Vz= 1,.,.,n,Ï âˆˆZ ; A la matrice mxn ∀m, n = 1,...,n ∈ Z i un indice iteratore con i∈Z<+> p il valore modulo condiviso, un intero casuale con p ∈Z<+>(condiviso dai partecipanti alla comunicazione) rnd à ̈ un numero casuale (generato da note funzioni o da funzioni proprietarie) utilizzato, per introdurre quantità aleatorie in S, quantità data dalla relazione rnd *p tale che possa essere ricavata la funzione inversaf<- 1>indipendente dal valore di rnd (proprietà di congruenza dell'algebra modulare); La chiave privata à ̈ costituita dalla matrice Amxnp ed R sono due valori pubblici che sono concordati fra le parti in comunicazione o sono prestabilite nella configurazione del sistema di cifratura/decifratura q à ̈ definito da ciascuna entità mediante un generatore pseudo casuale secondo una procedura fissa prestabilita del metodo e del sistema di cifratura/decifratura. la moltiplicazione della matrice A per l'indice i determina la permutazione di output, che definisce la sequenza di creazione della chiave e di un suo eventuale sottoinsieme preso casualmente.
  6. 6. Metodo secondo una o più delle precedenti rivendicazioni in cui: la matrice A à ̈ la chiave privata e viene inizializzata nel seguente modo: Αr,0= rnd con Ar,0∈Z e 1 ≤ r ≤ R Ar,1= rnd * p con Ar,1∈Z e 1 ≤ r ≤ R q = rnd * p con q∈Z<+> Vincoli: q≠p; Ar,0(mod p)≠0 e Ar,0>q In cui: r à ̈ la generica riga della matrice; p con p∈Z<+>à ̈ un valore pubblico che rappresenta il valore del modulo condiviso e noto tra tutti i comunicanti; Ar,0ed q sono valori casuali privati e q à ̈ utilizzato come modulo nella funzione f(x) e la sua inversa f<-1>(x); mentre l'unico valore conoscibile da un eventuale attaccante à ̈ p ed R congiuntamente ai valori delle chiavi pubbliche S.
  7. 7. Metodo secondo una o più delle precedenti rivendicazioni in cui la funzione f(x) per la creazione della chiave pubblica à ̈ scelta fra i seguenti gruppi: Primo gruppo /CO ={[(^(r,0)«<wj (A(r,0)» w2)]*(z+w3)}mod3⁄4' /CO ={[(40,0)»>w,)+ (A(r,0)« w2)]*(z+w3)}mod<7 f(x)={[(4(r,0)«<w,)+ (A(r, 0) « w2)]*(z+w3)}mod q /(O ={[(^4(r,0)»>wj (A(r,0)» w2)]*(z+w3)}mod3⁄4' Secondo gruppo /CO = {[(^(r,0) « Wj) (A(r, 0) »> w2)] * (z w3)} mod q /(O = {[(^4(r,0) » 1⁄4-!) (^(r,0) «< w2)] * (z w3)} mod q f(x) = {[(^(r,0) « wj (4(r,0) «< w2)] * (z w3)}mod<7 /CO = {[(^(r,0) » w,) (A(r, 0) »> w2)] * (z w3)}modtf Ed in cui f(x)= f(x)+ rnd * p dove w1 e w2indicano i valori interi nel range 1-31 per processori a 32 bit e 1-63 per processori a 64 bit. w3à ̈ un valore intero nell'intervallo 1-32bit per processori a 32 bit e 1-64 per processori a 64 bit. I simboli «,»,<«,»> rappresentano rispettivamente le operazioni di shift dei bit a sinistra di w2posizioni, shift dei bit a destra di w2posizioni, rotazione dei bit a sinistra di w1posizioni e rotazioni a destra dei bit di w1posizioni.
  8. 8 . Metodo secondo una o più delle precedenti rivendicazioni in cui: la chiave segreta per eseguire la cifratura/decifratura del messaggio di informazione trasmesso fra gli almeno due comunicanti viene generata dalla funzione inversa f<-1>(x) determinata secondo i seguenti passi che applicano una relazione ricorsiva infinita, dove il valore privatoAr,1viene alterato in funzione della n-esimo valore di S e successivamente riutilizzato nella funzione sommatoria per produrre differenti valori di output. 1. do: 2. for r = 1 to R do: 3. S = S' R <4>S<=>∑ /(P* 4 Λ) i =1 5_ ks = [ [S mod p) * A{r,\) ] mod q 6. i4(r,l)= (^r,l)+S)(mod;>) 7. Next 8. Rjspeat to co ^(r,l)= (^(r,l)+S)(mod/7)passo che altera ±1 valore di Ar,l k = [ (S mod p) * A(r, 1) ] mod N in cui k à ̈ la chiave segreta di cifratura/decifratura ed in cui R à ̈ il numero massimo di righe della matrice A.
  9. 9. Metodo secondo la rivendicazione 8 in cui la f<-1>(x) funzione inversa per la creazione della chiave segreta à ̈ scelta fra 1 seguenti gruppi: Primo gruppo f(x) = {[(Λ(Γ,0) «<Wl) (A(r, 0) » w2)] * (z w3) A(r,\)}moàq f(x) = {[(A(r ,0) »> Wj) (A(r, 0) « w2)] *(i w3) A{r,ì)} mod q f(x) = {[(Λ(>,0) «< w,) (A(r ,0) « yw2] * ( i w3) A{r,\)}moàq f(x) = {[(^(r,0) »> wj (A(r ,0) » w2)] * (i w3) ^(r,l)}mod^ Secondo gruppo f(x) = {[(^(r,0) « w,) (A(r,0) » >w2)] *(i w3)+ ^(r,l)}mod? f{x) = {[(^(r,0) » Wj) (A(r, 0) «< w2)] *(i w3) ^(r,l)}mod^ f(x) = {[(ΛΟ,Ο) « w,) (A(r, 0) «< w2)] * (i w3) ^(r,l)}modgr f(x) = {[(^(r,0) » w, ) (A(r, 0) »> w2)] *(i w3) A{r, 1)} mod q dove: w1e w2sono valori interi nel range 1-31 per processori a 32 bit e 1-63 per processori a 64 bit. w3à ̈ un valore intero nell'intervallo 1-32bit per processori a 32 bit e 1-63 per processori a 64 bit. I simboli « ,» ,<« ,» > rappresentano rispettivamente le operazioni di shift dei bit a sinistra di w2 posizioni, shift dei bit a destra di w2posizioni, rotazione dei bit a sinistra di w3posizioni e rotazioni a destra dei bit di w1posizioni.
  10. 10. Metodo secondo una o più delle precedenti rivendicazioni in cui la dimensione della chiave in bit e determinata dalla relazione l = m * n * w dove m à ̈ il numero delle righe della matrice A, n il numero di colonne della matrice A e w la dimensione della chiave espressa in bit.
  11. 11. Metodo secondo una o più delle precedenti rivendicazioni caratterizzato dal fatto che prevede l'utilizzo di una funzione che opera una somma algebrica fra i byte costituiti da un messaggio ed i byte di una determinata chiave segreta di cifratura/decifratura e la quale funzione non à ̈ una funzione di Hash.
  12. 12. Metodo secondo la rivendicazione 11, in cui la somma algebrica à ̈ costituita da un valore sempre rappresentabile con 8 bit.
  13. 13. Metodo secondo le rivendicazioni 11 o 12, caratterizzato dal fatto che la funzione di cifratura esegue una somma algebrica dell'intero messaggio cifrato generato in modo da racchiudere l'intero messaggio cifrato di n-bit in soli 8-bit per messaggi lunghi fino a 1024-bit ed à ̈ descritta dalla seguente relazione : n- 1 Si= fmix[ ∑ ( sub(bi Î ̃ ki) , ki), pi, qi] i = 0 Dove : fmix à ̈ una funzione di mescolamento di ogni iesima sommatoria modulo 8-bit che utilizza due chiavi pi, qi; sub à ̈ la funzione di sostituzione secondo i seguenti passi di sostituzione del singolo byte bi e somma algebrica dei singoli byte: For i = 1 To N - 1 do: Si= S0- bi ki (sostituisce ki a bi) Next 7 ki à ̈ l'i-esimo byte di chiave nella funzione di Xor; bi à ̈ l'i-esimo byte di un generico messaggio.
  14. 14. Metodo secondo una o più delle rivendicazioni 11 a 13, in cui la cifratura ha luogo secondo i seguenti passi espressi in pseudo codice: a.Somma binaria (mod 2) con chiave ki: For i = 0 To N - 1 do: bi= bi© ki Next b.Somma algebrica origine: For i = 0 To N - 1 do: S0= S0+ bi Next c.Sostituzione del singolo byte e somma algebrica dei singoli byte: For i = 1 To N - 1 do: Si= S0- bi+ ki(sostituisce ki a bi) Next d.applicazione della funzione di mescolamento fmix For i = 1 To N-l do fmix Si, Si-1, Pi Next For i = N - 2 To 0 Step -1 fmix Si,Si+1, qi Next Dove: fmix à ̈ una funzione somma modulo 8-bit che utilizza due chiavi pi,qi; bià ̈ l'i-esimo byte di un generico messaggio. Si à ̈ l'i-esima somma algebrica.
  15. 15. Metodo secondo una o più delle precedenti rivendicazioni 11 a 14, in cui, la decifratura ha luogo mediante una funzione di che opera i seguenti passi: For i = 0 To N - 2 do: fmix<-1>Si, Si 1, qi Next For i = N - 1 To 1 Step -1 fmix<-1>Si, Si-1, pi Next sum = 0 For ÏŠ = 1 To N - 1 do: bi = s0- (si- ki) sum = sum bi bi = bi ® ki Next b0= (b0- sum) ® k0 con fmix<-1>: x = (x - y - k) And 2<8>-1; y = (y - x - k) And 2<8>-1 dove fmix à ̈ una funzione somma modulo 8-bit che utilizza due chiavi Pi, qi e fmix<-1>à ̈ la sua funzione inversa; sum à ̈ una variabile intera contenente la somma algebrica dei singoli byte del blocco; kià ̈ l'i-esimo byte della chiave segreta; bià ̈ l'i-esimo byte di un generico messaggio. Sià ̈ la i-esima somma algebrica. K contiene l'i-esimo valore di pi o di qi; x contiene l'i-esimo valore di Si; y contiene l'i-esimo valore di Si+1o Si-1; p vettore di interi contenente la chiave segreta ricavata nella fase di schedulazione della chiave di sessione; q vettore di interi contenente la chiave segreta ricavata nella fase di schedulazione della chiave di sessione.
  16. 16. Metodo secondo una o più delle precedenti rivendicazioni 11 a 15 in cui la chiave di cifratura/decifratura à ̈ generata partendo da una chiave principale da cui vengono create tre tabelle per i valori di P, Q e K venendo i valori di P e Q a 32 bit utilizzati nella funzione fmix ed i valori a 8-bit di K utilizzati nella fase di sostituzione dei singoli byte e la quale chiave Master viene calcolata con il seguente metodo espresso in pseudo codice: sia a = 0 b = 0 nk = 8 ks= chiave di sessione L = Lunghezza del blocco da cifrare: 8,16,32,...256-byte (multipli di 8) For r = 1 To 2 do: w = 0 For i = 1 To (L \ nk) do: z = nk-1 For j = 0 To nk - 1 do: a= a (ks(z)>»7®ks(z)>»18®ks(z)»3)®b b= b (ks (w) >>>7® ks (w) >>>1S® ks (w) »3 ) ® a ks(w) = a ks(z) = ks(z) ® b z = z - 1 w = w 1 Next Next // crea vettore P e Q a 32 -bit If r = 1 Then For i = 0 To L — 1 do: p(i) = ks(i) Next Else For i = 0 To L — 1 do: q(i) = ks(i) Next End If Next // crea vettore di sostituzione For i = 0 to L - 1 do: k(i) =Abs( ( p(i)®q(i) ) mod 256) Next In cui per gli operatori utilizzati vale quanto segue : >>> = Right Shift >>> = Left Shift ® = somma modulo 2 Abs = calcola il valore assoluto \ = divisione intera
  17. 17. Metodo di crittografia/decrittografia del tipo a chiave privata in cui la cifratura/decifratura prevede l'utilizzo di una funzione che opera una somma algebrica fra i byte costituiti da un messaggio ed i byte di una determinata chiave segreta di cifratura/decifratura e la quale funzione non à ̈ una funzione di Hash.
  18. 18. Metodo di crittografia/decrittgrafia secondo la rivendicazione 17, caratterizzato dal fatto che comprende le caratteristiche secondo una o più delle precedenti rivendicazioni.
  19. 19. Dispositivo di crittografia/decrittografia comprendente un programma caricato nella memoria di un elaboratore e eseguibile dal detto elaboratore in cui l'esecuzione del programma determina l'esecuzione dei passi di sistema secondo una o più delle precedenti rivendicazioni 1 a 18.
  20. 20. Supporto di memorizzazione leggibile da una unità di elaborazione, sul quale supporto à ̈ memorizzato un programma eseguibile dal detto elaboratore, la cui esecuzione determina l'esecuzione dei passi di sistema secondo una o più delle precedenti rivendicazioni 1 a 18.
  21. 21. Sistema di crittografia/decrittografia, caratterizzato dal fatto che prevede l'esecuzione del metodo secondo una o più delle precedenti rivendicazioni 1 a 18 da parte di dispositivi di comunicazione fra almeno due entità in comunicazione fra loro.
IT000091A 2011-08-10 2011-08-10 Metodo di cifratura e decifratura ITGE20110091A1 (it)

Priority Applications (3)

Application Number Priority Date Filing Date Title
IT000091A ITGE20110091A1 (it) 2011-08-10 2011-08-10 Metodo di cifratura e decifratura
EP12772804.6A EP2742644B1 (en) 2011-08-10 2012-08-09 Encryption and decryption method
PCT/IB2012/054060 WO2013021360A1 (en) 2011-08-10 2012-08-09 Encryption and decryption method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT000091A ITGE20110091A1 (it) 2011-08-10 2011-08-10 Metodo di cifratura e decifratura

Publications (1)

Publication Number Publication Date
ITGE20110091A1 true ITGE20110091A1 (it) 2013-02-11

Family

ID=44720955

Family Applications (1)

Application Number Title Priority Date Filing Date
IT000091A ITGE20110091A1 (it) 2011-08-10 2011-08-10 Metodo di cifratura e decifratura

Country Status (3)

Country Link
EP (1) EP2742644B1 (it)
IT (1) ITGE20110091A1 (it)
WO (1) WO2013021360A1 (it)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103812658B (zh) * 2014-01-21 2018-01-16 沈阳工业大学 一种基于流密码的安全通信协议
EP3402118A1 (en) * 2017-05-10 2018-11-14 Koninklijke Philips N.V. Key agreement devices and method
FR3074989B1 (fr) * 2017-12-11 2021-03-05 Airbus Defence & Space Sas Procede de communication securise
CN109040063B (zh) * 2018-08-01 2021-12-07 阿波罗智联(北京)科技有限公司 车辆ecu密钥的确定方法、装置、设备及存储介质
CN109150923A (zh) * 2018-11-06 2019-01-04 江苏怡通数码科技有限公司 基于混合加密的网络传输数据安全处理方法
CN114095151A (zh) * 2020-07-31 2022-02-25 马上消费金融股份有限公司 一种加解密方法、认证方法、装置、设备和存储介质
CN112671730A (zh) * 2020-12-15 2021-04-16 广东华兴银行股份有限公司 一种线上交换对称加密密钥的方法、设备及介质
CN114758728B (zh) * 2022-06-15 2022-09-02 成都边界元科技有限公司 混合进制下产生最小海明距离的基因型标识及可视化方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6798884B1 (en) * 1998-09-16 2004-09-28 Murata Kikai Kabushiki Kaisha Encryption method, decryption method, encryption/decryption method, cryptographic communications system, and computer usable medium
US20060280300A1 (en) * 2005-06-08 2006-12-14 Fernando Rossini Cryptographic system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2803000A (en) 1953-12-11 1957-08-13 Cinch Mfg Corp Snap-in subminiature socket
US4405829A (en) 1977-12-14 1983-09-20 Massachusetts Institute Of Technology Cryptographic communications system and method
DE69113245D1 (de) 1991-03-14 1995-10-26 Omnisec Ag Regensdorf Verschlüsselungssystem mit öffentlichem Schlüssel unter Verwendung elliptischer Kurven über Ringe.
JP4068664B2 (ja) 1996-08-19 2008-03-26 エヌティーアールユー クリプトシステムズ,インコーポレーテッド 公開鍵暗号システム方法および装置
DE69840959D1 (de) 1997-12-17 2009-08-20 Nippon Telegraph & Telephone Verschlüsselungs- und Entschlüsselungsvorrichtungen für Kryptosysteme mit öffentlichem Schlüssel und Aufzeichnungsmedium mit darauf gespeicherten zugehörigen Verarbeitungsprogrammen.

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6798884B1 (en) * 1998-09-16 2004-09-28 Murata Kikai Kabushiki Kaisha Encryption method, decryption method, encryption/decryption method, cryptographic communications system, and computer usable medium
US20060280300A1 (en) * 2005-06-08 2006-12-14 Fernando Rossini Cryptographic system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
K. V. O. RABAH: "Implementation of One-Time Pad Cryptography", INFORMATION TECHNOLOGY JOURNAL, vol. 4, no. 1, 1 January 2005 (2005-01-01), pages 87 - 95, XP055022097 *
MERKLE RALPH C ET AL: "HIDING INFORMATION AND SIGNATURES IN TRAPDOOR KNAPSACKS", IEEE TRANSACTIONS ON INFORMATION THEORY, IEEE PRESS, USA, vol. IT-24, no. 5, 1 September 1978 (1978-09-01), pages 525 - 530, XP002171485, ISSN: 0018-9448, DOI: 10.1109/TIT.1978.1055927 *

Also Published As

Publication number Publication date
WO2013021360A1 (en) 2013-02-14
EP2742644A1 (en) 2014-06-18
EP2742644B1 (en) 2022-04-13

Similar Documents

Publication Publication Date Title
Abd El-Latif et al. Secure data encryption based on quantum walks for 5G Internet of Things scenario
US9973334B2 (en) Homomorphically-created symmetric key
Pieprzyk et al. Fundamentals of computer security
ITGE20110091A1 (it) Metodo di cifratura e decifratura
Almaiah et al. A new hybrid text encryption approach over mobile ad hoc network
CN111512589A (zh) 用于利用spdz的快速安全多方内积的方法
CN104270247B (zh) 适用于量子密码系统的高效泛Hash函数认证方法
CN113711564A (zh) 用于加密数据的计算机实现的方法和系统
US8180048B2 (en) Method and system for computational transformation
JP2004363739A (ja) 改竄検知可能な、共通鍵暗号の暗号化装置または復号化装置
RU2591015C1 (ru) Способ нелинейного трехмерного многораундового преобразования данных rdozen
CN111030801A (zh) 一种多方分布式的sm9密钥生成、密文解密方法与介质
KR101899130B1 (ko) 데이터의 암호화, 복호화 방법 및 이를 이용하는 장치
Sakib Analysis of Fundamental Algebraic Concepts and Information Security System
JP6607257B2 (ja) 秘密計算システム、秘密計算装置、および、秘密計算方法
Achkoun et al. SPF-CA: A new cellular automata based block cipher using key-dependent S-boxes
Lu Cryptanalysis of block ciphers
Bhowmik et al. A symmetric key based secret data sharing scheme
Shimal et al. Extended of TEA: A 256 bits block cipher algorithm for image encryption
Anand et al. Real-time symmetric cryptography using quaternion julia set
Singh et al. Study & analysis of cryptography algorithms: RSA, AES, DES, T-DES, blowfish
Obimbo et al. A Parallel Algorithm for determining the inverse of a matrix for use in blockcipher encryption/decryption
Dwivedi et al. Image encryption using curved scrambling and diffusion
CN111130786A (zh) 一种多方协同sm2密钥生成、密文解密方法与介质
Kishore et al. A novel text encryption algorithm using enhanced Diffie Hellman and AES