ITTO20120462A1 - Sistema e metodo di protezione di dati informativi - Google Patents

Sistema e metodo di protezione di dati informativi Download PDF

Info

Publication number
ITTO20120462A1
ITTO20120462A1 IT000462A ITTO20120462A ITTO20120462A1 IT TO20120462 A1 ITTO20120462 A1 IT TO20120462A1 IT 000462 A IT000462 A IT 000462A IT TO20120462 A ITTO20120462 A IT TO20120462A IT TO20120462 A1 ITTO20120462 A1 IT TO20120462A1
Authority
IT
Italy
Prior art keywords
information
data
matrix
random
information data
Prior art date
Application number
IT000462A
Other languages
English (en)
Inventor
Alessandro Barletta
Original Assignee
Alenia Aermacchi Spa
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 Alenia Aermacchi Spa filed Critical Alenia Aermacchi Spa
Priority to IT000462A priority Critical patent/ITTO20120462A1/it
Priority to US13/901,986 priority patent/US9246684B2/en
Priority to CN201310204033.3A priority patent/CN103559454B/zh
Priority to ES13169589.2T priority patent/ES2663422T3/es
Priority to EP13169589.2A priority patent/EP2670080B1/en
Priority to JP2013111742A priority patent/JP6184751B2/ja
Publication of ITTO20120462A1 publication Critical patent/ITTO20120462A1/it

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • G06F21/1014Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to tokens
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Description

DESCRIZIONE
"SISTEMA E METODO DI PROTEZIONE DI DATI INFORMATIVI"
La presente invenzione è relativa ad un sistema e metodo di protezione di dati informativi, ed in particolare di verifica e concessione dell'autorizzazione all'accesso a tali dati informativi.
Sono noti metodi di protezione delle informazioni, in particolare metodi per autorizzare l'accesso ad informazioni protette e/o consentire l'esecuzione di programmi per elaboratore ("software") subordinatamente all'ottenimento di una licenza per l'esecuzione degli stessi.
Metodi noti prevedono l'utilizzo di una chiave ("key") non conosciuta dall'utilizzatore e ottenibile mediante acquisto della licenza per l'esecuzione del relativo programma per elaboratore. Questo metodo ha lo svantaggio che tale chiave può essere replicata in modo fraudolento, cosicché utenti non autorizzati che vengono a conoscenza di tale chiave sono in grado di utilizzare il programma per elaboratore .
Altri metodi prevedono l'utilizzo di un dispositivo (detto "token") atto a generare una password, generalmente in formato numerico, sulla base di un algoritmo sconosciuto all'utente. Tipicamente, in uno schema di autenticazione a due fattori, questa password assume un valore dipendente da parametri variabili nel tempo (es., ora, data, ecc.), più una parte nota, scelta dall'utente (nota come "Personal Identification Number" o, più semplicemente, PIN) così da non essere facilmente replicabile. Questo metodo ha lo svantaggio che il tempo è noto a tutti, e il PIN è solitamente scelto da un utente in maniera da ricordarlo (spesso, in pratica, il PIN è scelto come la data di nascita dell'utente, nomi di persone care, ecc.). Sono noti attacchi di vario genere che riducono drasticamente la protezione fornita da questo tipo di schemi.
Altri metodi noti includono le fasi di immagazzinare intere porzioni di software sul token, ma in tal modo si ha un impatto sulla velocità di esecuzione del software, legato al fatto che si deve accedere a tali porzioni, compilarle ed eseguirle. Di conseguenza, il controllo viene effettuato solitamente solo in fase di avvio del software e non durante tutta l'intervallo di utilizzo del software stesso .
Scopo della presente invenzione è fornire un sistema e un metodo di protezione di dati informativi in grado di superare gli inconvenienti dell'arte nota.
In maggior dettaglio, il sistema di autenticazione è basato su token accessibile mediante PIN, ed è configurato per autorizzare o negare l'accesso a informazioni da proteggere, il token avendo una memoria che immagazzina: una matrice ("array") contenente dati informativi (Ii-IN)numerici e/o alfanumerici e/o alfabetici, e dati casuali numerici e/o alfanumerici e/o alfabetici interposti tra dati informativi immediatamente consecutivi lungo una direzione di lettura della matrice; e un vettore di schema di sigillo cifrato, contenente informazioni relative alla disposizione dei dati informativi nella matrice e informazioni relative alla dimensione (tipicamente in bytes) di ciascun dato casuale, così da consentire l'accesso a ciascuno dei dati informativi nelle rispettive locazioni della matrice. Il sistema di autenticazione è configurato per: subordinare l'accesso al token all'inserimento del PIN corretto; decifrare il vettore di schema di sigillo; acquisire dal vettore di schema di sigillo le informazioni di disposizione dei dati informativi e le informazioni di spazio occupato da ciascun dato casuale; verificare una corrispondenza tra le informazioni di disposizione acquisite e la disposizione effettiva dei dati informativi nella matrice e tra le informazioni di dimensione acquisite e la dimensione effettiva dei dati casuali; autorizzare o negare l'accesso alle informazioni da proteggere sulla base di un risultato della verifica precedente.
Secondo la presente invenzione vengono realizzati un sistema e un metodo di protezione di dati informativi come definito nelle rivendicazioni allegate.
Per una migliore comprensione della presente invenzione ne vengono ora descritte forme di realizzazione preferite, a puro titolo di esempio non limitativo, con riferimento ai disegni allegati, nei quali:
- la figura 1 mostra, in forma schematica, un dispositivo (token) di generazione di chiavi di autenticazione;
- la figura 2 mostra un elaboratore, di tipo di per sé noto, atto ad essere operativamente accoppiato al dispositivo di figura 1;
- la figura 3 mostra, mediante diagramma di flusso, fasi di un metodo di protezione di dati informativi secondo una forma di realizzazione della presente invenzione;
- la figura 4 mostra in forma grafica un matrice comprendente una pluralità di dati/informazioni codificati secondo le fasi 10 e 12 del metodo di figura 3;
- la figura 5 mostra la matrice di figura 4 secondo una diversa forma di rappresentazione grafica;
- la figura 6 mostra, mediante diagramma di flusso, sottofasi del metodo di figura 3;
- la figura 7 mostra, mediante diagramma di flusso, ulteriori sottofasi del metodo di figura 3; e
- la figura 8 mostra, mediante diagramma di flusso, ulteriori fasi del metodo di protezione di dati informativi secondo la presente invenzione.
La presente descrizione è relativa ad un sistema e metodo per protezione di dati informativi, ed in particolare per cifrare o criptare ("encrypt") dati elettronici .
Più in dettaglio, i livelli di protezione forniti dalla presente invenzione comprendono: un livello fisico, includente un dispositivo di autenticazione (o "token"), atto a generare un codice di autenticazione pseudocasuale, ad esempio in formato numerico, o alfabetico, o alfanumerico; ed un livello software, includente fasi di crittografia eseguite mediante un programma per elaboratore .
Il dispositivo di autenticazione, schematicamente mostrato in figura 1 e indicato con il numero di riferimento 1, comprende un microprocessore 2, di tipo noto, atto a generare, su richiesta di un utente, il codice di autenticazione pseudocasuale secondo un certo algoritmo, che può tenere conto di una pluralità di fattori, quali ad esempio il numero di serie del dispositivo di autenticazione 1, un valore di data corrente, un valore temporale definito da un orologio interno al dispositivo di autenticazione 1, o altro ancora. Tale valore è generato via hardware da un algoritmo basato sul tempo e può variare tra diversi produttori di token. Tipicamente, non è dato sapere come viene generato il codice di autenticazione pseudocasuale mediante il token, e ogni fornitore di token adotta un algoritmo proprietario. Il metodo secondo la presente invenzione è indipendente dalla modalità con cui tale codice di autenticazione viene generato, e dunque non è qui ulteriormente descritto.
Il dispositivo di autenticazione 1 comprende inoltre una memoria 4, ad esempio una memoria di tipo flash, accoppiata al microprocessore 2.
Il programma atto a generare il codice di autenticazione è residente nella memoria 4 del dispositivo di autenticazione 1, in particolare in un'area privata 4a della memoria 4, da utilizzare per immagazzinare dati sensibili e accessibile mediante parola chiave, o PIN (numero identificativo personale, o "personal Identification number") . Un'area pubblica 4a della memoria 4 è atta a immagazzinare certificati di natura pubblica e informazioni non sensibili.
Il PIN è generato automaticamente e non viene reso disponibile all'utente finale. All'installazione, o al primo avvio del software, si richiede all'utente di scegliere una password di suo gradimento che sblocca l'utilizzo del PIN e ne memorizza l'hash (cioè il risultato di un'operazione non invertibile o "difficilmente" invertibile - in un database).
L'area privata 4a della memoria 4 può essere di tipo nascosto (l'utente non è a conoscenza della sua presenza), o visibile dall'utente, ma il cui accesso è comunque protetto mediante parola chiave, o password. Tale password può essere modificata, a patto di avere il seed record (il seme) generato dal fornitore, e l'autorizzazione di amministratore del token (noto come "Security Officer") che è coperto da altra password, tipicamente modificabile e non sovrascrivibile, che viene impostata ad un valore predefinito e salvata in un luogo sicuro.
L'area privata 4a della memoria 4 può essere utilizzata per memorizzare una pluralità di dati e/o informazioni, utilizzati durante le fasi del metodo di crittografia, come meglio illustrato nel seguito.
Il dispositivo di autenticazione 1 è, in una forma di realizzazione, atto ad essere collegato ad un elaboratore 6 (figura 2), in modo tale che dati informativi possano essere scambiati tra il dispositivo di autenticazione 1 e l'elaboratore 6. Ad esempio, il dispositivo di autenticazione 1 è provvisto di una porta USB per il collegamento all'elaboratore 6.
Si fa nel seguito riferimento ad un testo non codificato ("plain-text"), che si desidera codificare al fine di impedire l'accesso alle informazioni contenute nel testo non codificato da parte di un utente non autorizzato.
Con riferimento alla figura 3, è illustrato un diagramma di flusso che comprende fasi del metodo di cifratura secondo una forma di realizzazione della presente invenzione.
Secondo la presente invenzione, viene generato un "sigillo" ("seal") includente una pluralità di dati e informazioni, discrezionalmente scelti, che vengono criptati secondo uno schema casuale. La decriptazione e la lettura di tale sigillo è requisito per autorizzare o negare una o più ulteriori attività.
Secondo una applicazione preferita, la decriptazione e la lettura di tale sigillo è un requisito per autorizzare l'esecuzione di un programma software, o ottenere una licenza per l'esecuzione di tale programma software. Le fasi di cifratura secondo il metodo della presente invenzione non sono dunque volte a criptare il programma software da eseguire, ma a generare un sigillo cifrato la cui lettura è necessaria all'ottenimento dell'autorizzazione a eseguire tale programma software. Il metodo secondo la figura 3 comprende fasi di inizializzazione (fasi 10, 12) durante le quali il sigillo ("seal") viene generato a partire dal testo non codificato, e viene scritto nell'area privata 4a della memoria 4; e fasi di cifratura (fasi 14, 16) durante le quali un metodo di crittografia di tipo noto (ad esempio, un metodo noto scelto tra RSA, AES, DES, o altri ancora) viene utilizzato per cifrare il sigillo generato alle fasi 10, 12 al fine di garantire un ulteriore livello di protezione.
Il sigillo è generato sulla base dei dati e/o informazioni che costituiscono il testo non codificato, organizzando tali dati in una matrice ("array") come meglio descritto in seguito. Inoltre, il sigillo ha una dimensione, in bit, tale da essere compatibile con l'algoritmo di crittografia utilizzato alle fasi 14 e 16 (ad esempio, una lunghezza pari a 128 bits, o 196 bits, o 256 bit, o altra dimensione ancora) e lasciare sufficienti spazi "liberi" da riempire con dati casuali (random).
Il testo non codificato può comprendere una pluralità di dati e/o informazioni di tipo fisso (il cui valore, o l'informazione da essi trasportata, non varia nel tempo) e/o variabile (il cui valore, o l'informazione da essi trasportata, non è la stessa se considerata in diversi istanti temporali). Dati fissi sono, ad esempio codici identificativi predefiniti in forma di numeri, lettere e/o in formato alfanumerico, o altro ancora, quali ad esempio uno o più tra: nome commerciale o nome in codice del software, nome del produttore del software, numero progressivo della licenza per 1'utilizzatore corrente del software, nome e/o codice identificativo del cliente, data di inizializzazione, numero di serie del token, moduli del software da abilitare (in caso di software costituito da più moduli) e relative password/codici di licenza, e altri dati ancora a scelta.
Dati variabili sono, ad esempio, valori di data corrente, ora corrente, o altri dati che possono assumere un valore variabile sulla base di condizioni predefinite o non predefinite.
Per quanto riguarda i campi variabili, la correttezza del loro contenuto viene valutata "su appuntamento". Cioè, la componente software verifica che, dato un valore di tempo scritto ad un tempo t0, dopo che sono trascorsi "x" secondi, il valore di tempo sia il tempo t0+x (più o meno una tolleranza dell'ordine delle centinaia di millisecondi) . Il valore t0è l'istante in cui viene scritto il valore di data/ora, e "x" è un offset variabile deciso istantaneamente e randomicamente dal software secondo una distribuzione uniforme scelta a piacere i cui limiti sono specificati tra un minimo ed un massimo, solitamente dell'ordine delle decine di secondi/minuti.
Ciascun dato, fisso o variabile, è considerato, nel seguito della descrizione, come un singolo "elemento" ("item") e indicato con il riferimento Ιχ, I2, I3, ..., IN· Una pluralità N di elementi Ii-INdi questo tipo formano un insieme (organizzato in forma di vettore I) comprendente un numero N di elementi Ii-IN:
Ι= { Ι1I2I3I4I5· · IN}
Come detto, una applicazione della presente invenzione è autorizzare o negare l'esecuzione di un programma software, o ottenere una licenza per l'esecuzione di tale programma software. In questo caso, una copia del vettore I è salvata all'interno del programma software stesso in modo non accessibile ad un utente del programma software.
Quando considerato in formato digitale (come successione di bit con valore logico "1" o "0"), ciascun elemento Ii-INdell'insieme di N elementi Ii-INha una propria lunghezza L(i), misurabile in numero di bits e/o di bytes, dove 1 byte è un gruppo di 8 bits. In questo caso, "i" assume valori compresi tra 1 ed N, e dunque L (1) è la lunghezza del primo elemento del vettore I, L(2) è la lunghezza del secondo elemento del vettore I, e così via, dove L (N) è la lunghezza dell'elemento N-esimo (ultimo) del vettore I.
Inoltre, ciascun elemento I1-INha un proprio valore J(i), o Ad esempio se un elemento Ii-INè una data, il valore J(i) di quell'elemento è la data vera e propria, ad esempio nella forma giorno/mese/anno. Se l'elemento Ιχ-INè il nome del produttore del software, il valore J(i) di quell'elemento è il nome del produttore, e così via. Dunque, per ogni elemento Ii-IN, il valore J(i) è indifferentemente, un valore numerico o alfanumerico o alfabetico .
I summenzionati elementi Ii-INsono organizzati in una matrice ("array") 100 avente una pluralità M di campi definiti dall'intersezione di una riga x (con χ=χι, X2, ..., xR)con una rispettiva colonna y (con y=yi, y2, ..., yc). La matrice 100 è rappresentata in forma grafica in figura 4. Gli N elementi Ii-INoccupano ciascuno un rispettivo campo (x, y) della matrice 100. La matrice 100 ha un numero di campi pari a M=xR-ycmaggiore di N. In particolare, il valore di M è scelto in modo tale per cui gli elementi Ii-INsiano memorizzabili in rispettivi campi (x, y) non immediatamente consecutivi tra loro e che sia tale da supportare l'algoritmo di crittografia scelto. In altre parole, il campo immediatamente seguente, lungo le righe della matrice 100, un campo contenente un elemento Ii-IN, non contiene un altro tra gli elementi Ii-IN.
Quando tutti gli elementi Ii-INsono stati scritti nella matrice 100, i campi (x, y) della matrice 100 rimasti liberi vengono riempiti mediante bytes generati in modo casuale ("random"), tramite un generatore di numeri casuali di tipo noto. In questo modo, ciascun elemento Ii-INrisulta essere separato dagli altri elementi Ii-INda uno o più bytes casuali.
In figura 4 i bytes casuali sono indicati come RBx,ydove il pedice x,y assume il valore della corrispondente riga x e corrispondente colonna y del campo in cui i bytes casuali sono scritti. Ad esempio, in corrispondenza del campo identificato dalla prima riga x=xi e dalla prima colonna y=yi, sono memorizzati uno o più bytes casuali RBi,i. Analogamente, in corrispondenza del campo identificato dalla seconda riga x=X2 e dalla prima colonna y=yi, sono memorizzati uno o più bytes casuali RB2,I.
Sempre con riferimento alla figura 4, l'elemento li occupa il campo corrispondente alla prima riga x=xi e alla terza colonna y=y3, ed è indicato come Ili,2; analogamente, l'elemento I2occupa il campo corrispondente alla seconda riga x=x2e alla prima colonna y=yi, ed è indicato come 122, !; e così via.
Come si nota dalla figura 3, i bytes casuali RBx,ysono inseriti sia tra gli elementi Ii-IN(quando considerati in sequenza lungo le righe Xi-xR), sia prima del primo elemento li della matrice 100, sia dopo l'ultimo elemento INdella matrice 100. In altre parole, secondo questa forma di realizzazione, sia il primo campo della matrice 100, sia l'ultimo campo della matrice 100, contengono bytes casuali
RBX,y.
Risulta evidente che la lunghezza in bytes di ciascun elemento Ii-INe di ciascuna sequenza di bytes casuali RBx,ypuò avere lunghezza, in bytes, qualsiasi. Campi x,y della matrice 100 diversi tra loro possono contenere un diverso numero di bytes. Questa situazione è mostrata, in forma grafica esemplificativa, in figura 5, in cui i bytes casuali sono illustrati graficamente mediante campi riempiti con linea tratteggiata, e gli elementi Ii-INmediante campi vuoti ("blank").
Ciascun campo (x, y) della matrice 100 è, secondo una forma di realizzazione, identificato univocamente da un numero identificativo minore o uguale a M, e viceversa. L'associazione di un numero identificativo a ciascun campo della matrice 100 è realizzata, ad esempio, in modo progressivo percorrendo la matrice 100 lungo le righe x, cosicché al campo (x=l, y=l) corrisponde il numero "1", al campo (x=l, y=2) corrisponde il numero "2", e così via in modo tale che al campo (x=xR, y=yc) corrisponde il numero "M" . Risulta evidente che qualsiasi altra associazione è possibile .
Tornando alla figura 3, la fase 10 comprende definire un insieme ("set") Vi di N valori numerici interi identificativi dell'ordine reciproco con cui gli elementi Ii-INdevono essere inseriti nella matrice 100. L'ordine è, ad esempio, considerato a partire dal primo campo della matrice 100 percorrendo le righe x. Tuttavia, qualsiasi altro ordine può essere scelto.
Come mostrato in figura 4, ciascun elemento Ii-INè separato dagli altri elementi Ii-INmediante un campo (x, y) della matrice 100 contenente una sequenza di byte casuali RBx,y. A questo fine, fase 10 di figura 3, viene generato un insieme ("set") VRBdi N+l numeri casuali in cui ciascuno di tali numeri identifica la lunghezza, in bytes, di una rispettiva sequenza RBx,yche deve essere inserita nella matrice 100 come separatore degli elementi
11 IN
Dunque, l'insieme (vettore) Vi identifica l'ordine con cui inserire gli elementi Ii-INnella matrice 100, e l'insieme (vettore) VRBidentifica la lunghezza di ciascun blocco RBx,yche deve essere inserito tra un elemento Ii-IN-ie il successivo elemento I2-IN(ma anche come inizio e come termine della matrice 100) . I vettori Vi e VRBsono salvati in un vettore di schema di sigillo ("seal scheme array") SS, avente la seguente forma (i valori numerici indicati nel vettore di schema di sigillo SS sono esemplificativi di una possibile forma di realizzazione, e non limitativi): SS={Vi;VRB }={1,2,3,4,.. 23,4,46,5,11,...}·
In questo modo, in assenza del vettore di schema di sigillo SS, la semplice lettura della matrice 100 non consente di recuperare agevolmente i dati informativi (cioè non è possibile risalire immediatamente al testo non codificato, ovvero agli elementi Ii-IN)contenuti nella matrice 100.
Il vettore Vi comprende N campi (e quindi N valori nel caso in cui ciascun campo contenga un singolo valore), e il vettore VRBcomprende N+l campi (e di conseguenza N+l valori nel caso in cui ciascun campo contenga un solo valore); il vettore di schema di sigillo comprende dunque 2N+1 valori, in cui il valore di SS(N+l) è il numero di byte che precedono, nella matrice 100, il primo elemento li,· il valore di SS(N+2) è il numero di byte compresi tra il primo elemento li e il secondo elemento I2nella matrice 100; il valore di SS(N+3) è il numero di byte compresi tra il secondo elemento I2e il terzo elemento I3nella matrice 100; e così via. Il valore di SS(2N+1) è il numero di bytes inseriti nella matrice 100 dopo l'ultimo elemento IN.
Come detto precedentemente, la fase di definire l'insieme (vettore) Vi equivale a definire N numeri identificativi di un ordine con cui inserire reciprocamente gli elementi Ii-INnella matrice 100. Si noti che gli N valori che formano il vettore VTnon identificano rispettivi campo della matrice 100, ma sono rappresentativi dell'ordine di inserimento degli elementi Ii-INnella matrice 100, ad esempio quando considerati in sequenza lungo le righe x della matrice 100. In analogia con quanto fin qui descritto, il vettore Vi è, esemplificativamente, del tipo:
νΙ={1, 2, 3, 4,
Il vettore Vi è interpretato nel modo seguente: inserire l'elemento li come primo elemento nella matrice 100 (I (Vi(1))={li}, poiché VI(1)={1} e I(l)=Ii); inserire l'elemento I2come secondo elemento nella matrice 100 (I (Vi(2))={I2}, poiché Vi (2)={2} e I (2)=12); inserire l'elemento I3come terzo elemento nella matrice 100 (I (Vi(3))={I3}, poiché Vx(3)={3} e I (3)=I3); inserire l'elemento I4come quarto elemento nella matrice 100 (I (Vi(4))={I4}, poiché Vx(4)={4} e I (4)=14); e così via per tutti gli N elementi Ii-INdel vettore I.
Sempre come esempio qualitativo, la fase di definire l'insieme di N+l numeri casuali in cui ciascuno di tali numeri identifica la lunghezza di un rispettivo blocco RBx,yha come risultato la generazione del vettore VRB, del tipo seguente :
VRB={23, 4, 46, 5, 11,
Il vettore VRB è interpretato nel modo seguente: inserisci 23 bytes casuali prima del primo elemento nella matrice 100, come definito dal vettore VT(in questo esempio prima dell'elemento li); inserisci quattro bytes casuali dopo il primo elemento nella matrice 100, come definito dal vettore Vi (in questo esempio dopo l'elemento li); inserisci quarantasei bytes casuali dopo il secondo elemento nella matrice 100, come definito dal vettore Vi (in questo esempio dopo l'elemento I3); inserisci cinque bytes casuali dopo il terzo elemento nella matrice 100, come definito dal vettore Vi (in questo esempio dopo l'elemento I2); inserisci undici bytes casuali dopo il quarto elemento nella matrice 100, come definito dal vettore VT (in questo esempio dopo l'elemento I4).
L'operazione ordinamento deqli elementi Ii-INnella matrice 100 (cioè qenerando il vettore VIffasi 10 e 12 di fiqura 3), e/o la qenerazione del vettore VRB, può essere esequita un numero qualsiasi di volte, e consente di aqqiornare la matrice 100 ciclicamente, ad intervalli reqolari e/o in sequito a particolari eventi predeterminati. Anche il vettore di schema di sigillo SS viene aggiornato in modo corrispondente. In particolare, dati N elementi Ii-IN, sono possibili N! permutazioni degli stessi prima di ottenere nuovamente l'ordinamento di partenza della matrice 100. Questo significa che l'ordinamento degli elementi Ii-INcome definito dal vettore VTpuò essere variato N! volte prima di ritornare all'ordinamento iniziale.
In pratica, scelti due numeri interi primi "A" e "B", di valore compreso tra 1 e M, si esegue una funzione "shuffle" tale per cui si eseguono A volte le operazioni di:
(1) permutare la posizione di un primo valore del vettore Vi con la posizione di un secondo valore del vettore Vi (le due posizioni essendo scelte arbitrariamente o utilizzando due diversi contatori); e
(2) scambiare ("swap") la posizione di uno o più valori del vettore Vi con la posizione di rispettivi uno o più valori del vettore VIftali posizioni essendo successive alla posizione in cui originariamente era contenuto il primo valore menzionato al punto (1) precedente .
La fase (1) di permutare è eseguita "B" volte su "B" valori differenti, così da generare un vettore Vi che contiene valori ordinati in modo non predeterminato a priori .
Il valore di B è scelto in modo casuale e tale per cui B non è un divisore di N!<■>(N+l)!. In questo modo, i due numeri B e N!<■>(N+l)! sono primi tra loro e, sfruttando il fatto che non sono perfettamente divisibili, si evita che, dopo un certo numero di ripetizioni, si ritorni nuovamente sugli stessi valori.
Con maggior dettaglio, l'operazione di permutare (1) comprende eseguire una permutazione dei valori numerici contenuti in rispettive posizioni del vettore Vi. Come descritto in precedenza, infatti, il vettore Vi è un vettore di numeri interi, ciascuno dei quali descrive in quale posizione della matrice 100 inserire un rispettivo elemento Ii-IN(o, meglio il valore Ji-JNassociato a ciascun rispettivo elemento Ii-IN). La fase di permutare dunque comprende le fasi di:
(a)- selezionare un primo valore numerico contenuto in un rispettivo primo campo del vettore VT(es., VT(1), contenente il numero "1");
(b)- selezionare un secondo valore numerico contenuto in un rispettivo secondo campo, diverso dal primo campo, del vettore VT;
(c)- scambiare tra loro il primo valore numerico contenuto nel primo campo con il secondo valore numerico contenuto nel secondo campo.
La fase di permutare comprende inoltre la fase opzionale di:
(d)- ripetere le fasi (a)-(c).
Le figure 6 e 7 mostrano in maggior dettaglio, mediante diagrammi di flusso, le fasi (a)-(d) summenzionate .
Con riferimento alla figura 6, fase 20, si suppone di essere alla prima iterazione del metodo di figura 6. Il vettore VTè, ad esempio, del tipo VI={1, 2, 3, 4}. La variabile p è un indice che identifica, in questo esempio, un campo del vettore Vi e può assumere valori da 1 a N=4. Si seleziona la penultima posizione del vettore VIfche è Vx(N-l)=VX(3)={3}.
Quindi, fase 22, si seleziona l'ultimo campo del vettore Vi, cioè Vi(N)=Vi(4)={4}.
In seguito, fase 24, si confrontano tra loro i valori contenuti nei campi Vi(N-l) e Vi(N). Se Vi(N-l) è minore di Vi(N), allora, fase 26, si seleziona Vi (N-l) come primo elemento secondo la fase (a) summenzionata.
Altrimenti, fase 28, si decrementa il valore p di una unità e verifico, fase 29, se ho raggiunto l'inizio del vettore Vi. Se il valore corrente di p è pari a 0 sono uscito dal vettore Vi e ho terminato tutte le permutazioni possibili (il metodo termina). Se p è maggiore o pari a 1 allora si seleziona, fase 30, Vi(p); e si seleziona, fase 32, Vi(p+1). Si torna quindi alla fase 24 di confronto tra Vi(p) e Vi(p+1).
Continuando l'esempio precedente, dato il vettore Vi={1, 2, 3, 4}, la fase 24 porta alla fase 26, in quanto Vi(N-l)> Vi(N).
Quindi, fase 22, sempre supponendo di essere alla prima iterazione del metodo di figura 6, si seleziona l'ultimo campo del vettore Vlrcioè Vi(p+1)=Vi(4)={4 }. Le fasi 28-32 non sono eseguite. Il valore Vi(N-l)=3 è dunque selezionato come primo valore numerico della summenzionata fase (a).
Si passa quindi alla selezione del secondo valore numerico, secondo la summenzionata fase (b). Con riferimento alla figura 7, fase 36, seleziono, alla prima iterazione del metodo di figura 7, l'ultimo valore del vettore VT(cioè Vi(N)). Secondo il metodo di figura 7, per indicizzare il vettore VIfsi utilizza l'indice q. Dunque, alla fase 36, q=N.
Quindi, fase 38, si confronta il valore Vi(p) selezionato alla fase 26 di figura 6 con il valore Vi(q) corrente. Se Vi(q)>Vi(p), allora, fase 40, scambio il valore contenuto nel campo Vi(p) con il valore contenuto nel campo Vi(q) . In questo caso, considerando sempre il vettore VI={1, 2, 3, 4}, la fase 40 porta alla generazione del vettore VI={1, 2, 4, 3}.
Se il confronto secondo la fase 38 mostra che Vi(q)<Vi (p), allora, fase 42, decremento il valore di q di una unità. Nella fase 43 verifico che il valore corrente di q sia maggiore del valore corrente di p. In caso positivo, torno alla fase 38 per un nuovo confronto tra Vi(p) e Vi(q); in caso negativo, il metodo termina.
Quindi, si passa alla fase di "swapping" precedentemente citata. Durante questa fase, i valori numerici contenuti nelle N-p posizioni del vettore Vi che seguono la posizione p-esima vengono suddivisi in due sottogruppi di (N-p)/2 valori ciascuno. Quindi, i due sottogruppi di (N-p)/2 valori vengono scambiati di posizione tra loro. Nel caso in cui N-p sia un numero dispari, è possibile considerare i campi N-p+1, o scegliere un diverso gruppo.
Tornando al vettore Vi generato in seguito alla fase 40 di figura 7, cioè VI={1, 2, 4, 3}, il valore dell'indice p è pari a 3 e la fase di swap non produce effetto.
Iterando nuovamente le fasi 20-32 di figura 6 e figura 7 (seconda iterazione), il nuovo Vi vettore che si ottiene ha la seguente forma:
VI={1, 3, 4, 2}.
Quindi, eseguendo la fase di swap, si ottiene:
Vi<(2)>={1, 3, 2, 4}.
Iterando nuovamente le fasi 20-32 di figura 6 e figura 7 (terza iterazione), il vettore Vi che si ottiene ha la seguente forma:
Vi<(3)>={1, 3, 4, 2}.
La fase di swap non modifica in questo caso il vettore VI={1, 3, 2, 4}.
Iterando nuovamente le fasi 20-32 di figura 6 e figura 7 (quarta iterazione), il vettore VTche si ottiene ha la seguente forma:
VI={1, 4, 3, 2}.
Quindi, eseguendo la fase di swap, si ottiene:
VI<(4)>={1, 4, 2, 3}.
Si procede in questo modo ottenendo tutte le possibili permutazioni dei valori numerici contenuti nel vettore Vi.
Al fine di rendere casuale l'ordine degli elementi Ιχ-INnella matrice 100 al momento della sua prima generazione, è possibile eseguire "A" volte (con A numero casuale) le iterazioni delle fasi dei metodi delle figure 6-7 e della fase di swap così da generare un ordine dei valori numerici nel vettore Vi non predeterminabile a priori.
Secondo una ulteriore forma di realizzazione, ogni iterazione delle fasi dei metodi delle figure 6-7 è eseguita "B" volte prima di eseguire la fase di swap.
La fase di definire l'insieme (vettore) VRBdi N+l numeri casuali, in cui ciascuno di tali numeri identifica la lunghezza in bytes di un rispettivo blocco RBx,y, soddisfa almeno uno dei seguenti requisiti:
(1) almeno un blocco RBx,y(di qualsiasi dimensione/lunghezza in bytes) è inserito prima del primo elemento Ii-INnella matrice 100;
(2) almeno un blocco RBx,y(di qualsiasi dimensione/lunghezza in bytes) è inserito tra due elementi Ii-INconsecutivi lungo le righe x della matrice 100, così da separare tra loro due elementi Ii-INconsecutivi;
(3) almeno un blocco RBx,y(di qualsiasi dimensione/lunghezza in bytes) è inserito dopo l'ultimo elemento Ii-INnella matrice 100;
(4) la probabilità di distribuzione delle lunghezze in bytes di ciascun blocco RBx,yè uniforme; e
(5) la somma SRBdelle lunghezze, in bytes, di tutti i blocchi RBx,yè tale per cui la matrice 100 è completamente riempita (cioè, ∑±L(i)+SRB=M).
Secondo una forma di realizzazione della presente invenzione, la lunghezza di un rispettivo blocco RBx,y, soddisfa tutti i precedenti requisiti (1)—(5).
Ritornando al diagramma di flusso di figura 3, fase 14, la matrice 100 generata secondo le fasi 10 e 12 è criptata utilizzando una chiave ksgenerata in modo casuale mediante il dispositivo di autenticazione 1 di figura 1. A seconda dall'algoritmo di crittografia scelto, la chiave kspuò essere generata secondo un metodo standard. Nel caso esemplificativamente descritto, è il token che si occupa di generarla. La fase di crittografia mediante chiave ks, pertanto, invoca tale routine standard (e dunque, di per sé, non oggetto della presente invenzione).Ad esempio, per il metodo di crittografia AES, la chiave è lunga quanto il minimo blocco di dati crittografabile (tipicamente 32 bytes) e viene generata a partire da un vettore di inizializzazione che l'utente può scegliere o far generare in modo casuale.
Inoltre, la matrice 100 è criptata utilizzando un metodo di crittografia di tipo noto, ad esempio un algoritmo di crittografia asimmetrica quale RSA, oppure un algoritmo di cifratura a blocchi quale AES ("Advanced Encryption Standard"), oppure l'algoritmo DES ("Data Encryption Standard") , o qualsiasi altro algoritmo di cifratura noto in letteratura. I summenzionati algoritmi di cifratura RSA, AES, DES sono noti in letteratura e le relative fasi di cifratura non sono qui riportate per brevità. Anche la generazione delle chiavi ksè effettuata, come detto, mediante metodi noti in letteratura.
Come risultato della fase 14 di figura 3, si ottiene una matrice cifrata (o in generale un oggetto di testo cifrato), nel seguito indicata come "C_data".
Sia la chiave ksche l'oggetto di testo cifrato C_data sono memorizzati nell'area privata 4a della memoria 4 del dispositivo di autenticazione 1.
Analogamente a quanto descritto con riferimento alla cifratura della matrice 100, anche il vettore di schema di sigillo SS, che rappresenta la chiave di lettura della matrice 100, viene criptato (fase 14) mediante una rispettiva chiave kvgenerata in modo casuale mediante il dispositivo di autenticazione 1 di figura 1. La generazione della chiave kvavviene in modo analogo alla generazione della chiave ks, mediante un metodo noto, scelto a piacere. Ad esempio, facendo ancora riferimento all'algoritmo AES, questa chiave kvviene generata mediante un vettore di inizializzazione diverso dal vettore di inizializzazione utilizzato per la chiave ks.
Anche il vettore SS viene criptato con algoritmi noti, analogamente alla matrice 100. Ad esempio, si può utilizzare l'algoritmo di crittografia AES. Tuttavia, è evidente che altri algoritmi sono utilizzabili.
Sia la chiave kvche il vettore di schema di sigillo SS criptato (nel seguito anche indicato come "C_scheme") vengono salvati nell'area privata 4a della memoria 4 del dispositivo di autenticazione 1.
L'oggetto di testo cifrato C_data costituisce un "sigillo" che trasporta informazioni (gli elementi Ii-IN)la cui conoscenza è condizione necessaria per consentire l'accesso ad ulteriori dati e/o informazioni che si desidera proteggere. Ad esempio, continuando il riferimento alla applicazione preferita della presente invenzione, la decriptazione e la lettura di tale sigillo è requisito per autorizzare l'esecuzione di un programma software, o ottenere una licenza per l'esecuzione di tale programma software. Come detto precedentemente, una copia del vettore I che contiene gli elementi Ii-INè salvata all'interno del programma software stesso in modo non accessibile ad un utente del programma software. La verifica della corretta lettura della matrice 100 (utilizzando lo schema di sigillo SS) è verificata confrontando gli elementi Ii-INletti nella matrice 100 con gli elementi Ii-INdel vettore I salvato all'interno del programma software.
Per autorizzare l'accesso a tali ulteriori dati/informazioni/programma software, si eseguono fasi di un metodo secondo la figura 8.
Innanzitutto, fase 50, si esegue un controllo per verificare se il dispositivo di autenticazione 1 utilizzato corrisponde al dispositivo di autenticazione 1 atteso.
Questo controllo può essere eseguito verificando che il modello e/o il numero di serie del dispositivo di autenticazione 1 in uso siano coerenti e compatibili con quelli attesi.
Nel caso in cui il controllo di cui alla fase 50 fornisce esito positivo, allora, fase 52, si accede all'area privata 4a della memoria 4 per verificare se il sigillo è integro o è stato alterato. L'accesso all'area privata 4a della memoria 4 avviene, come detto, con un PIN che è generato in fase di inizializzazione della licenza e costituito da un set caratteri stampabili (alfanumerici più simboli) di lunghezza sufficiente (ad esempio 127 caratteri) in modo da rendere eventuali tentativi di attacco inefficaci o particolarmente difficoltosi. Infatti, nel caso si tenti di indovinare con tentativi successivi tale PIN, se si eccede un numero di tentativi prestabilito il token viene bloccato in maniera irrecuperabile costringendo a rivolgersi al produttore del software che è l'unico che lo può sbloccare.
Secondo una forma di realizzazione, si eseguono le seguenti fasi: (a) il software da proteggere, al tentativo di avvio da parte dell'utente, richiede all'utente l'inserimento del token e di una password personale; (b) l'utente fornisce la propria password personale richiesta al punto (a) precedente; (c) il software da proteggere verifica, con un proprio metodo che non è parte della presente invenzione, che la password personale dell'utente sia corretta (ad es. nel caso si sia utilizzata una funzione di hash, computa l'hash e lo verifica con un hash precedentemente memorizzato, ad esempio in un file, in un database, su un server, ecc.); (d) se la verifica al punto precedente (c) è corretta, il software da proteggere utilizza il PIN corrispondente alla licenza dell'utente per aprire la comunicazione con il token ed effettuare le relative verifiche secondo le fasi del metodo della presente invenzione.
Quindi, fase 54, utilizzando le chiavi k e k l'oggetto di testo cifrato C_data e lo schema di sigillo SS criptato C_scheme vengono decriptati, in modo noto utilizzando l'algoritmo di cifratura utilizzato secondo le fasi 14 e 16 di figura 3. Si verifica quindi la consistenza ( "consistency") tra le posizioni, nella matrice 100, degli elementi Ii-INcome identificate dallo schema di sigillo SS e le effettive posizioni degli elementi Ii-INnella matrice 100 .
Ad un primo controllo, si verifica, leggendo nelle posizioni riportate dallo schema di sigillo SS, che il contenuto letto della matrice 100 sia conforme con gli elementi Ii-INdel vettore I contenuto nel programma software che si desidera proteggere, ad esempio verificando uno o più dei seguenti parametri: (i) cardinalità dei campi; (ii) lunghezze dei campi; (iii) tipologia dei campi (numero, stringa, data, ecc.); (iv) contenuto dei campi fissi (ad es. nome del produttore del software); (v) coerenza tra software e nome del software riportato nel sigillo; (vi) coerenza tra informazioni legate all'hardware che riporta il sigillo (ad esempio numero di serie del chip del token) risultante dall'interrogazione dell 'hardware e dato equivalente inscritto nel sigillo. In particolare, questo ultimo punto (vi) implica che nel caso in cui un malintenzionato riesca a copiare totalmente - non distruggendo al contempo il chip il contenuto dell'area di memoria privata 4a in un altro token dello stesso modello, l'accesso ai dati sarebbe comunque negato, poiché legato a quel particolare hardware (token) .
Il metodo provvede anche, in tale fase, a leggere le informazioni variabili. A titolo di esempio - non limitativo, tali informazioni comprendono uno o più tra: numero di licenza; nome del cliente; data / ora di generazione del sigillo corrente; moduli attivati dalla licenza (se applicabile) .
Nel caso in cui l'accesso ai dati/inf ormazioni da proteggere è negato, fase 55, il metodo di figura 8 termina .
Nel caso in cui l'accesso ai dati/inf ormazioni da proteggere è consentito, allora, fase 56, viene generato in modo casuale un nuovo vettore di schema di sigillo SS e, sulla base del nuovo vettore di schema di sigillo SS così generato, si genera una nuova matrice analoga alla matrice 100. Secondo una forma di realizzazione, la nuova matrice contiene gli stessi elementi Ii-INdella matrice 100, organizzati secondo un nuovo ordine e separati da blocchi RBx,yaventi diverso numero di bytes. Alternativamente, secondo una diversa forma di realizzazione, la nuova matrice contiene elementi Ii<(a)>-IN-<(a)>diversi dagli elementi Ii-INdella matrice 100; anche il numero N' degli elementi Ii<(a)>-IN-<(a)>può essere diverso dal numero N degli elementi Ii-IN. Secondo una ulteriore forma di realizzazione, la nuova matrice contiene elementi Ii<(a)>-IN-<(a)>in parte comuni agli elementi Ii-INdella matrice 100 (ad esempio, i campi fissi sono gli stessi) e in parte diversi (ad esempio, i campi variabili possono essere differenti) . Si genera così un nuovo sigillo.
I campi di dati utilizzati per la generazione del nuovo sigillo sono gli stessi del sigillo originario come già descritto in precedenza. I dati di data/ora vengono forniti dalla macchina locale su cui il software sta girando durante la generazione del nuovo sigillo. Lo schema viene fatto evolvere dalla permutazione corrente in cui si trova. Gli spazi riservati ai Random Bytes (RBxy) vengono riallocati in maniera randomica (stesso criterio precedentemente descritto) .
Ogni qual volta il sigillo viene fatto evolvere secondo la fase 56 di figura 8, vengono eseguite anche le fasi di crittografia secondo le fasi 14-16 di figura 3, qui non riportate per brevità.
Quindi, dopo un certo lasso di tempo predefinito o casuale, si verifica nuovamente la congruenza tra lo schema di sigillo SS corrente e la matrice corrente, come descritto con riferimento alla fase 54.
Si continua iterando le fasi 54-56 fintantoché la fase 54 fornisce un risultato ritenuto accettabile, e cioè tale per cui la disposizione degli elementi Ii<(a)>-IN-<(a)>nella matrice corrente è conforme alla disposizione come identificata dallo schema di sigillo SS corrente, e le dimensioni in bytes dei blocchi RBx,ysono conformi alle dimensioni specificate dallo schema di sigillo SS corrente.
Quando la fase 54 fornisce in uscita un risultato positivo (corrispondenza tra il vettore SS e la matrice 100), allora il token utilizzato viene considerato come valido e si ottiene l'autorizzazione all'accesso agli ulteriori dati e/o informazioni (es., autorizzazione all'esecuzione di un programma software, o ottenimento di una licenza per l'esecuzione di tale programma software).
Da questo momento in poi, per la durata della sessione corrente di utilizzo del software il controllo verifica solo che 1'hardware del token continui a rispondere con la propria identità che è stata precedentemente confermata.
Tuttavia, il controllo di tipo approfondito riportato in precedenza può essere comandato dal software nuovamente sulla base dell'evento di richiesta da parte dell'utente di utilizzare le funzioni che si ritengono critiche per la fruizione del software stesso (ossia quelle che si considerano il produttore considera di maggior pregio). In caso di disconnessione del token, tale situazione viene rilevata e si richiede il re-inserimento dello stesso token (con "stesso" si intende quel particolare numero di serie), re-inizializzando - ad inserimento avvenuto - l'intera procedura di verifica.
In caso contrario, se il token non viene inserito oppure differisce per numero di serie, il software terminerà prematuramente la sua esecuzione (significa che una volta avviata una sessione con un token non è possibile continuarla con un altro token, seppur quest'ultimo contenga una licenza valida).
I vantaggi del trovato secondo la presente invenzione sono evidenti.
In particolare, secondo la presente invenzione, sono realizzati diversi livelli di protezione:
(1) un livello fisico, che richiede l'accesso al dispositivo di autenticazione 1, e tale per cui il chip è anti-manomissione, cioè se si prova ad estrarlo fisicamente è praticamente impossibile recuperare le informazioni ivi salvate che vengono perse/distrutte.
(2) un'area di memoria privata 4a, che è nascosta all'utente e accessibile solamente mediante password impostata dal produttore del software;
(3) un livello di crittografia, che consente una ulteriore protezione delle informazioni nel caso in cui l'area privata 4a della memoria venga scoperta e/o la password di accesso ad essa venga conosciuta;
(4) uno schema di disposizione reciproca degli elementi Ii-INtale per cui una semplice lettura di tale schema o della matrice generata a partire da tale schema non consente di recuperare facilmente i dati organizzati secondo tale schema;
(5) un meccanismo di verifica della consistenza tale per cui tentativi di accesso o decriptazione che causano anche minime variazioni dei dati memorizzati nella matrice causano l'invalidazione del sigillo.
(6) la possibilità di installare il software su più macchine e implementare una licenza flottante (floating) che abiliti solo le macchine nel quale viene inserito il/i token contentente/i la/e licenza/e. Ad esempio installazione su 10 macchine, ma con 3 token solamente.
Risulta infine chiaro che al trovato qui descritto ed illustrato, possono essere apportate modifiche e varianti senza per questo uscire dall'ambito protettivo della presente invenzione, come definito nelle rivendicazioni allegate.
Ad esempio, l'area privata 4a della memoria 4 può alloggiare una pluralità di sigilli generati come precedentemente descritto, così da gestire una pluralità di software e di utenti contemporaneamente.

Claims (26)

  1. RIVENDICAZIONI 1. Sistema di autenticazione per autorizzare un accesso a informazioni da proteggere, comprendente un token hardware ("hardware token") (1) avente una memoria (4) includente un'area di memoria privata (4a), accessibile mediante numero di identificazione personale, e immagazzinante ("storing"): - una pluralità di primi dati informativi ("items") (II-IN) di tipo numerico e/o alfanumerico e/o alfabetico; - una pluralità di primi dati casuali ("random data") (RBx#y)di tipo numerico e/o alfanumerico e/o alfabetico, e aventi ciascuno una rispettiva dimensione ("size"), detti primi dati informativi (1—IN)e detti primi dati casuali (RBx#y)essendo organizzati in una matrice ("array") (100), avente almeno una direzione di lettura, e in modo tale che ciascun primo dato informativo (1—IN)è separato da un successivo primo dato informativo (1—IN), lungo detta direzione di lettura, mediante uno tra detti primi dati casuali (RBx#y), l'area di memoria privata (4a) immagazzinando inoltre un primo vettore di schema di sigillo ("first seal scheme vector") (SS), di tipo cifrato, contenente prime informazioni di disposizione relativa dei primi dati informativi (1—IN)nella matrice (100) e prime informazioni di dimensione di ciascun primo dato casuale (RBx#y), così da consentire di accedere a ciascuno dei primi dati informativi (Ii-IN) nella matrice (100), detto sistema di autenticazione essendo inoltre configurato per: - subordinare ("subject") l'accesso all'area di memoria privata (4a) all'inserimento di detto numero di identificazione personale; - decifrare il primo vettore di schema di sigillo e acquisire dette prime informazioni di disposizione relativa dei primi dati informativi (Ii-IN) e dette prime informazioni di spazio occupato da ciascun primo dato casuale (RBx#y) nella matrice (100); - verificare una corrispondenza tra dette prime informazioni di disposizione relativa acquisite e la disposizione dei primi dati informativi (1—IN) nella matrice (100), e tra dette prime informazioni di dimensione acquisite e la dimensione dei primi dati casuali nella matrice (100) ; - autorizzare o negare l'accesso a detti dati informativi da proteggere sulla base di un risultato di detta verifica di corrispondenza tra dette prime informazioni di disposizione relativa acquisite e la disposizione dei primi dati informativi (1—IN) nella matrice (100), e tra dette prime informazioni di dimensione acquisite e le rispettive dimensioni di detti primi dati casuali (RBx#y).
  2. 2. Sistema di autenticazione secondo la rivendicazione 1, configurato inoltre per, nel caso in cui detta autorizzazione sia negata: - generare un secondo vettore di schema di sigillo, di tipo cifrato, contenente seconde informazioni di disposizione relativa dei primi dati informativi (Ii-IN)e seconde informazioni di dimensione di secondi dati casuali (RBx,y); - organizzare i primi dati informativi (Ii-IN)nella matrice (100) sulla base delle seconde informazioni di disposizione relativa, e in modo tale che ciascun primo dato informativo (Ii-IN)è separato da un successivo primo dato informativo (Ii-IN), lungo detta direzione di lettura, mediante un rispettivo secondo dato casuale (RBx#y)avente dimensione corrispondente a dette seconde informazioni di dimensione; - subordinare una ulteriore concessione di detta autorizzazione ad accedere a dette informazioni da proteggere alla: decifrazione del primo vettore di schema di sigillo e acquisizione delle prime informazioni di disposizione relativa e delle prime informazioni di spazio occupato; e verifica di una corrispondenza tra le prime informazioni di disposizione relativa acquisite e la disposizione dei primi dati informativi (Ii-IN)nella matrice (100), e tra le prime informazioni di dimensione acquisite e la dimensione dei primi dati casuali nella matrice (100) .
  3. 3. Sistema di autenticazione secondo la rivendicazione 1, configurato inoltre per, nel caso in cui detta autorizzazione sia negata: - acquisire secondi dati informativi (1—IN) aventi ciascuno un rispettivo valore (Ji-JN) numerico, o alfanumerico, o alfabetico; - generare una pluralità di secondi dati casuali ("random data") (RBx,y) aventi ciascuno un rispettivo valore numerico, o alfanumerico, o alfabetico, e una rispettiva dimensione ; - generare un secondo vettore di schema di sigillo (SS), di tipo cifrato, contenente seconde informazioni di disposizione relativa dei secondi dati informativi (1—IN) e seconde informazioni di dimensione dei secondi dati casuali (RBx,y); - organizzare i secondi dati informativi (1—IN) nella matrice (100) sulla base delle seconde informazioni di disposizione relativa, e in modo tale che ciascun secondo dato informativo (1—IN) è separato da un successivo secondo dato informativo (1—IN), lungo detta direzione di lettura, mediante un rispettivo secondo dato casuale (RBx,y) avente dimensione corrispondente a dette seconde informazioni di dimensione; e - subordinare una ulteriore concessione di detta autorizzazione ad accedere a dette informazioni da proteggere alla: decifrazione del secondo vettore di schema di sigillo e acquisizione delle seconde informazioni di disposizione relativa e delle seconde informazioni di spazio occupato; e verifica di una corrispondenza tra le seconde informazioni di disposizione relativa acquisite e la disposizione dei secondi dati informativi (Ii-IN)nella matrice (100), e tra le seconde informazioni di dimensione acquisite e la dimensione dei secondi dati casuali nella matrice (100).
  4. 4. Sistema di autenticazione secondo una qualsiasi delle rivendicazioni precedenti, in cui detti primi dati informativi (1—IN)comprendono dati di tipo fisso e/o dati di tipo variabile.
  5. 5. Sistema di autenticazione secondo una qualsiasi delle rivendicazioni precedenti, in cui le prime informazioni di disposizione relativa dei primi dati informativi (1—IN)si succedono tra loro in detto primo vettore di schema di sigillo (SS) con un ordine casuale.
  6. 6. Sistema di autenticazione secondo la rivendicazione 5, in cui detto ordine casuale con cui si succedono tra loro le prime informazioni di disposizione relativa dei primi dati informativi (1—IN)è ottenuto mediante un numero casuale di permutazioni di dette prime informazioni di disposizione relativa dei primi dati informativi (Ιχ- IN)·
  7. 7. Sistema di autenticazione secondo una qualsiasi delle rivendicazioni precedenti, configurato per eseguire una o più permutazioni delle prime informazioni di disposizione relativa dei primi dati informativi (Ii-IN)del primo vettore di schema di sigillo (SS) così da generare il secondo vettore di schema di sigillo.
  8. 8. Sistema di autenticazione secondo una qualsiasi delle rivendicazioni precedenti, configurato inoltre per cifrare la matrice (100) utilizzando una prima chiave di cifratura (ks)generata mediante un algoritmo di crittografia .
  9. 9. Sistema di autenticazione secondo la rivendicazione 8, in cui la prima chiave di cifratura (ks)è memorizzata nell'area di memoria privata (4a) della memoria (4).
  10. 10. Sistema di autenticazione secondo una qualsiasi delle rivendicazioni precedenti, in cui il primo e il secondo vettore di schema di sigillo (SS) sono cifrati mediante una rispettiva seconda chiave di cifratura (kv)generata mediante un algoritmo di crittografia.
  11. 11. Sistema di autenticazione secondo la rivendicazione 10, in cui le seconde chiavi di cifratura (kv)sono memorizzate nell'area di memoria privata (4a) della memoria (4).
  12. 12. Sistema di autenticazione secondo una qualsiasi delle rivendicazioni precedenti, configurato inoltre per verificare se il token hardware (1) corrisponde ad un token hardware atteso.
  13. 13. Sistema di autenticazione secondo una qualsiasi delle rivendicazioni precedenti, in cui verificare la corrispondenza tra dette prime informazioni di disposizione relativa acquisite e la disposizione dei primi dati informativi (Ii-IN) nella matrice (100) comprende verificare almeno uno tra: una coerenza tra il valore (Ji-JN) dei primi dati informativi (Ii-IN) nella matrice (100) ed un rispettivo valore atteso; e una corrispondenza tra una dimensione di un rispettivo primo dato informativo (Iχ— IN) ed una dimensione attesa per quel primo dato informativo (1—IN).
  14. 14. Sistema di autenticazione secondo una qualsiasi delle rivendicazioni precedenti, configurato inoltre per subordinare l'accesso all'area di memoria privata (4a) alla verifica di corrispondenza di un numero di serie del token hardware con un numero di serie atteso.
  15. 15. Metodo di autenticazione per autorizzare un accesso a informazioni da proteggere, comprendente: - acquisire una pluralità di primi dati informativi ("items") (1—IN) di tipo numerico e/o alfanumerico e/o alfabetico; - generare una pluralità di primi dati casuali ("random data") (RBx#y) di tipo numerico e/o alfanumerico e/o alfabetico, e aventi ciascuno una rispettiva dimensione ; organizzare detti primi dati informativi (Ii-IN) e detti primi dati casuali (RBx#y) in una matrice ("array") (100), avente almeno una direzione di lettura, in modo tale che ciascun primo dato informativo (Ii-IN) è separato da un successivo primo dato informativo (Ii-IN), lungo detta direzione di lettura, mediante uno tra detti primi dati casuali (RBx#y); - generare un primo vettore di schema di sigillo (SS), di tipo cifrato, contenente prime informazioni di disposizione relativa dei primi dati informativi (1—IN) nella matrice (100) e prime informazioni di dimensione di ciascun primo dato casuale (RBx#y), così da consentire un accesso a ciascuno dei primi dati informativi (1—IN) nella matrice (100) ; - subordinare una concessione di una autorizzazione ad accedere a dette informazioni da proteggere a: (i) inserimento di un numero di identificazione personale; (ii) decifrazione del primo vettore di schema di sigillo e acquisizione delle prime informazioni di disposizione relativa e delle prime informazioni di spazio occupato; (iii) verifica di una corrispondenza tra le prime informazioni di disposizione relativa acquisite e la disposizione dei primi dati informativi (Ii-IN)nella matrice (100), e tra le prime informazioni di dimensione acquisite e la dimensione dei primi dati casuali nella matrice (100); e - nel caso in cui detta verifica di corrispondenza sia positiva, concedere detta autorizzazione.
  16. 16. Metodo di autenticazione secondo la rivendicazione 15, comprendente inoltre, nel caso in cui detta autorizzazione sia neqata: - qenerare un secondo vettore di schema di sigillo, di tipo cifrato, contenente seconde informazioni di disposizione relativa dei primi dati informativi (1—IN)e seconde informazioni di dimensione di secondi dati casuali (RBx,y); - organizzare i primi dati informativi (1—IN)nella matrice (100) sulla base delle seconde informazioni di disposizione relativa, e in modo tale che ciascun primo dato informativo (1—IN)è separato da un successivo primo dato informativo (1—IN), lungo detta direzione di lettura, mediante un rispettivo secondo dato casuale (RBx#y)avente dimensione corrispondente a dette seconde informazioni di dimensione; subordinare una ulteriore concessione di detta autorizzazione ad accedere a dette informazioni da proteggere alla: decifrazione del primo vettore di schema di sigillo e acquisizione delle prime informazioni di disposizione relativa e delle prime informazioni di spazio occupato; e verifica di una corrispondenza tra le prime informazioni di disposizione relativa acquisite e la disposizione dei primi dati informativi (Ii-IN)nella matrice (100), e tra le prime informazioni di dimensione acquisite e la dimensione dei primi dati casuali nella matrice (100).
  17. 17. Metodo di autenticazione secondo la rivendicazione 15, comprendente inoltre, nel caso in cui detta autorizzazione sia negata: - acquisire secondi dati informativi (1—IN)di tipo numerico e/o alfanumerico e/o alfabetico; - generare una pluralità di secondi dati casuali ("random data") (RBx#y)di tipo numerico e/o alfanumerico e/o alfabetico, e aventi ciascuno una rispettiva dimensione; - generare un secondo vettore di schema di sigillo, di tipo cifrato, contenente seconde informazioni di disposizione relativa dei secondi dati informativi (1—IN)e seconde informazioni di dimensione dei secondi dati casuali (RBx#y); - organizzare i secondi dati informativi (1—IN)nella matrice (100) sulla base delle seconde informazioni di disposizione relativa, e in modo tale che ciascun secondo dato informativo (Ii-IN) è separato da un successivo secondo dato informativo (Ii-IN), lungo detta direzione di lettura, mediante un rispettivo secondo dato casuale (RBx,y) avente dimensione corrispondente a dette seconde informazioni di dimensione; e - subordinare una ulteriore concessione di detta autorizzazione ad accedere a dette informazioni da proteggere alla: decifrazione del secondo vettore di schema di sigillo e acquisizione delle seconde informazioni di disposizione relativa e delle seconde informazioni di spazio occupato; e verifica di una corrispondenza tra le seconde informazioni di disposizione relativa acquisite e la disposizione dei secondi dati informativi (Ii-IN) nella matrice (100), e tra le seconde informazioni di dimensione acquisite e la dimensione dei secondi dati casuali nella matrice (100) .
  18. 18. Metodo di autenticazione secondo una qualsiasi delle rivendicazioni 15-17, in cui acquisire la pluralità di primi dati informativi (11—IN) comprende acquisire dati di tipo fisso e/o dati di tipo variabile.
  19. 19. Metodo di autenticazione secondo una qualsiasi delle rivendicazioni 15-18, in cui generare il primo vettore di schema di sigillo (SS) comprende organizzare le prime informazioni di disposizione relativa dei primi dati informativi (Ii-IN)con un ordine casuale.
  20. 20. Metodo di autenticazione secondo la rivendicazione 19, in cui organizzare le prime informazioni di disposizione relativa dei primi dati informativi (Ii-IN)con un ordine casuale comprende effettuare un numero casuale di permutazioni di dette prime informazioni di disposizione relativa dei primi dati informativi (Ii-IN).
  21. 21. Metodo di autenticazione secondo la rivendicazione 16, comprendente inoltre eseguire un numero casuale di permutazioni delle prime informazioni di disposizione relativa dei primi dati informativi (Ii-IN)del primo vettore di schema di sigillo (SS) così da generare un ordinamento casuale di dette prime informazioni di disposizione relativa.
  22. 22. Metodo di autenticazione secondo una qualsiasi delle rivendicazioni 15-21, comprendente inoltre cifrare la matrice (100) utilizzando una prima chiave di cifratura (ks)generata mediante un algoritmo di crittografia.
  23. 23. Metodo di autenticazione secondo una qualsiasi delle rivendicazioni 15-22, in cui il primo vettore di schema di sigillo (SS) è cifrato mediante una seconda chiave di cifratura (kv)generata mediante un algoritmo di crittografia .
  24. 24. Metodo di autenticazione secondo la rivendicazione 16 o 17, in cui il secondo vettore di schema di sigillo (SS) è cifrato mediante una terza chiave di cifratura (kv)generata mediante un algoritmo di crittografia.
  25. 25. Metodo di autenticazione secondo una qualsiasi delle rivendicazioni 15-24, in cui verificare la corrispondenza tra dette prime informazioni di disposizione relativa acquisite e la disposizione dei primi dati informativi (1—IN)nella matrice (100) comprende verificare almeno uno tra: una coerenza tra il valore (Ji-JN)dei primi dati informativi (1—IN)nella matrice (100) ed un rispettivo valore atteso; e una corrispondenza tra una dimensione di un rispettivo primo dato informativo (Ιχ-IN)ed una dimensione attesa per quel primo dato informativo (Ii-IN).
  26. 26. Prodotto di programma per elaboratore caricabile in mezzi di elaborazione (1, 6) e progettato in modo tale che, quando eseguito, i mezzi di elaborazione diventino configurati per eseguire il metodo secondo una qualsiasi delle rivendicazioni 15-25.
IT000462A 2012-05-28 2012-05-28 Sistema e metodo di protezione di dati informativi ITTO20120462A1 (it)

Priority Applications (6)

Application Number Priority Date Filing Date Title
IT000462A ITTO20120462A1 (it) 2012-05-28 2012-05-28 Sistema e metodo di protezione di dati informativi
US13/901,986 US9246684B2 (en) 2012-05-28 2013-05-24 Data protection system and method
CN201310204033.3A CN103559454B (zh) 2012-05-28 2013-05-28 数据保护系统和方法
ES13169589.2T ES2663422T3 (es) 2012-05-28 2013-05-28 Sistema y método de protección de datos
EP13169589.2A EP2670080B1 (en) 2012-05-28 2013-05-28 Data protection system and method
JP2013111742A JP6184751B2 (ja) 2012-05-28 2013-05-28 データ保護システムおよび方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT000462A ITTO20120462A1 (it) 2012-05-28 2012-05-28 Sistema e metodo di protezione di dati informativi

Publications (1)

Publication Number Publication Date
ITTO20120462A1 true ITTO20120462A1 (it) 2013-11-29

Family

ID=46548739

Family Applications (1)

Application Number Title Priority Date Filing Date
IT000462A ITTO20120462A1 (it) 2012-05-28 2012-05-28 Sistema e metodo di protezione di dati informativi

Country Status (6)

Country Link
US (1) US9246684B2 (it)
EP (1) EP2670080B1 (it)
JP (1) JP6184751B2 (it)
CN (1) CN103559454B (it)
ES (1) ES2663422T3 (it)
IT (1) ITTO20120462A1 (it)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11423498B2 (en) * 2015-12-16 2022-08-23 International Business Machines Corporation Multimedia content player with digital rights management while maintaining privacy of users
US10362373B2 (en) 2016-01-07 2019-07-23 Cisco Technology, Inc. Network telemetry with byte distribution and cryptographic protocol data elements
US9971800B2 (en) * 2016-04-12 2018-05-15 Cisco Technology, Inc. Compressing indices in a video stream
US11200346B2 (en) * 2016-07-06 2021-12-14 Nippon Telegraph And Telephone Corporation Secure computation for reading multiple elements from a secure text array
US10333963B2 (en) * 2016-10-28 2019-06-25 Corax Cyber Security, Inc. Identifying a vulnerability of an asset of a network infrastructure to mitigate
IT201900016859A1 (it) 2019-09-20 2021-03-20 Leonardo Spa Sistema e metodo di valutazione dell'addestramento di un operatore in una missione addestrativa in tempo reale
CN112134881B (zh) * 2020-09-22 2023-03-21 宏图智能物流股份有限公司 一种基于序列号的网络请求防篡改方法
CN113507448B (zh) * 2021-06-17 2022-05-17 中国汽车技术研究中心有限公司 安全访问服务认证方法和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742035A (en) * 1996-04-19 1998-04-21 Kohut; Michael L. Memory aiding device for credit card pin numbers
US20040225880A1 (en) * 2003-05-07 2004-11-11 Authenture, Inc. Strong authentication systems built on combinations of "what user knows" authentication factors
US20110289576A1 (en) * 2009-11-23 2011-11-24 Fred Cheng Rubbing encryption algorithm and security attack safe otp token

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020116617A1 (en) * 1998-01-22 2002-08-22 Talton David N. System and method for authentication
US7272723B1 (en) * 1999-01-15 2007-09-18 Safenet, Inc. USB-compliant personal key with integral input and output devices
FR2822971A1 (fr) * 2001-04-03 2002-10-04 St Microelectronics Sa Systeme et procede de controle d'acces a des donnees protegees stockees dans une memoire
CN1855810B (zh) * 2005-04-26 2010-09-08 上海盛大网络发展有限公司 动态密码认证系统、方法及其用途
EP1752937A1 (en) * 2005-07-29 2007-02-14 Research In Motion Limited System and method for encrypted smart card PIN entry
CN102148683A (zh) * 2010-02-04 2011-08-10 上海果壳电子有限公司 基于hash芯片或加密芯片的双因素认证方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742035A (en) * 1996-04-19 1998-04-21 Kohut; Michael L. Memory aiding device for credit card pin numbers
US20040225880A1 (en) * 2003-05-07 2004-11-11 Authenture, Inc. Strong authentication systems built on combinations of "what user knows" authentication factors
US20110289576A1 (en) * 2009-11-23 2011-11-24 Fred Cheng Rubbing encryption algorithm and security attack safe otp token

Also Published As

Publication number Publication date
US20150326396A9 (en) 2015-11-12
ES2663422T3 (es) 2018-04-12
US20140351582A1 (en) 2014-11-27
JP6184751B2 (ja) 2017-08-23
CN103559454A (zh) 2014-02-05
EP2670080B1 (en) 2018-01-31
CN103559454B (zh) 2018-04-17
US9246684B2 (en) 2016-01-26
EP2670080A1 (en) 2013-12-04
JP2013251897A (ja) 2013-12-12

Similar Documents

Publication Publication Date Title
ITTO20120462A1 (it) Sistema e metodo di protezione di dati informativi
TWI750223B (zh) 區塊鏈加密射頻晶片存儲設計方法
RU2619895C1 (ru) Система и способы для шифрования данных
CN110710155A (zh) 渐进式密钥加密算法
US20130156180A1 (en) Method And Device For Securing Block Ciphers Against Template Attacks
CN1234081C (zh) 利用bios通过身份认证实现安全访问硬盘的方法
CN101149768B (zh) 一种专用处理器软件的加密和解密方法
CN103580855B (zh) 一种基于共享技术的UsbKey密钥管理方法
CN106776904A (zh) 一种不可信云计算环境中支持动态验证的模糊查询加密方法
JP6849862B2 (ja) パスワード認証のための準同型暗号
CN111314069A (zh) 基于区块链的摇号系统、方法、电子设备及存储介质
CN110517389B (zh) 设备密码的生成、验证方法、装置、设备和存储介质
CN111008390A (zh) 根密钥生成保护方法、装置、固态硬盘及存储介质
CN111739200B (zh) 一种指纹电子锁的加密、解密认证方法和指纹电子锁
EP3561705B1 (en) Secure activation of functionality in a data processing system using iteratively derived keys
JP2018536931A5 (it)
CN108574578A (zh) 一种黑匣子数据保护系统及方法
CN112532379A (zh) 一种文件保护方法及装置
CN105354462B (zh) 一种移动存储器的保护方法及移动存储器
CN104298897A (zh) 基于混沌技术的嵌入式版权认证方法及专用处理器
CN113032756A (zh) 一种数据访问授权认证系统及方法
CN108121903B (zh) 一种基于逻辑加密卡的密码管理方法及数据加密表示方法
CN111428232A (zh) 一种加密输入的密码处理方法、加密处理装置、智能锁
EP3881214B1 (en) Change-tolerant method of generating an identifier for a collection of assets in a computing environment
CN117278212A (zh) 密钥生成方法、装置、系统、电子设备及可读存储介质