Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? •...

29
Sicurezza su Reti a.a. 2001/2002 Sistemi di elaborazione delle informazioni: Sicurezza su reti Seminario a cura di: Izzo Vincenzo matr. 056/100086 Roberto Maria Grazia matr . 056/100040 Rago Sabina matr. 056/000999 Petito Simona matr. 056/100597 Torre Vittorio matr. Sicurezza su Reti a.a. 2001/2002 ETOKEN USB: IMPIEGHI E SVILUPPO DI APPLICAZIONI Sicurezza su Reti a.a. 2001/2002 Cos’è un Etoken? A cosa serve? E-Token R2 E-Token PRO Funzioni in VB Esempi applicativi Programmazione in VB e VBScript Sommario Sicurezza su Reti a.a. 2001/2002 Etoken: cos’è? EToken è il primo strumento USB per la sicurezza ed integrità dei dati e delle reti in ambiente Internet. Si basa sulla facilità d'uso e sulla estrema funzionalità delle porte Universal Serial Bus (USB). Non richiede alcuna ulteriore apparecchiatura per il suo utilizzo. VANTAGGI - eliminazione costi - massimizzazione facilità d'uso - sicurezza Sicurezza su Reti a.a. 2001/2002 Etoken: cos’è? Si basa sulla pionieristica tecnologia della Aladdin, sviluppata fin dal 1988 per la protezione del sw per PC e MAC con chiavi USB, che ha permesso di usare con successo milioni di porte USB in PC, laptop, palmtop. Crittografa informazioni Custodisce in un dispositivo USB della dimensione di una chiave: § chiavi private § password § certificati di firme digitali Sicurezza su Reti a.a. 2001/2002 Etoken: a cosa serve? Offre soluzioni per : Autenticazione utenti Web Access Control Applicazioni PKI portabili e salvataggio certificati digitali Sicurezza per accesso remoto

Transcript of Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? •...

Page 1: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

1

Sicurezza su Reti a.a. 2001/2002

Sistemi di elaborazione delle informazioni:Sicurezza su reti

Seminario a cura di:Izzo Vincenzo matr. 056/100086Roberto Maria Grazia matr. 056/100040Rago Sabina matr. 056/000999Petito Simona matr. 056/100597Torre Vittorio matr.

Sicurezza su Reti a.a. 2001/2002

ETOKEN USB: IMPIEGHI E SVILUPPO DI

APPLICAZIONI

Sicurezza su Reti a.a. 2001/2002

• Cos’è un Etoken?

• A cosa serve?

• E-Token R2

• E-Token PRO

• Funzioni in VB

• Esempi applicativi

• Programmazione in VB e VBScript

Sommario

Sicurezza su Reti a.a. 2001/2002

Etoken: cos’è?• EToken è il primo strumento USB per la sicurezza ed

integrità dei dati e delle reti in ambiente Internet. • Si basa sulla facilità d'uso e sulla estrema

funzionalità delle porte Universal Serial Bus (USB).

• Non richiede alcuna ulteriore apparecchiatura per il suo utilizzo.

VANTAGGI- eliminazione costi- massimizzazione facilità d'uso- sicurezza

Sicurezza su Reti a.a. 2001/2002

Etoken: cos’è?• Si basa sulla pionieristica tecnologia

della Aladdin, sviluppata fin dal 1988 per la protezione del sw per PC e MAC con chiavi USB, che ha permesso di usare con successo milioni di porte USB in PC, laptop, palmtop.

• Crittografa informazioni• Custodisce in un dispositivo USB

della dimensione di una chiave: § chiavi private§ password § certificati di firme digitali

Sicurezza su Reti a.a. 2001/2002

Etoken: a cosa serve?

Offre soluzioni per :Ø Autenticazione utentiØ Web Access ControlØ Applicazioni PKI portabili e salvataggio certificati digitaliØ Sicurezza per accesso remoto

Page 2: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

2

Sicurezza su Reti a.a. 2001/2002

Autenticazione utenti

• PRIMA :accessi "password based" che minavano la sicurezza aziendale

• ORA :logon sicuro alla rete basato su un doppio fattore di autenticazione:ü Qualcosa che l’utente conosce

(password o passphrase);ü Qualcosa che l’utente possiede

(eToken)

Sicurezza su Reti a.a. 2001/2002

Web Access Control

• Offre un'elevata sicurezza hardware alle società che effettuano transazioni finanziarie, legali o commerciali tramite Internet e la cui integrità deve essere garantita.

Sicurezza su Reti a.a. 2001/2002

Applicazioni PKI

• Gli utenti di applicazioni PKI possono: ü salvare a bordo di eToken le credenziali privateü creare un ambiente applicativo sicuro ü facilitarne notevolmente l'utilizzo.

Sicurezza su Reti a.a. 2001/2002

Sicurezza per accesso remotoOFFRE

soluzioni "out of the box" per la protezione di Intranet ed Extranet.

PERMETTEdi eseguire un logon sicuro alla VPN di SecuRemote di Checkpoint.

Bisogna ricordare solo una password

Sicurezza su Reti a.a. 2001/2002

Sicurezza per accesso remotoOFFRE

soluzioni "out of the box" per la protezione di Intranet ed Extranet.

PERMETTEdi eseguire un logon sicuro alla VPN di SecuRemote di Checkpoint.

Bisogna ricordare solo una password

SecuRemote e SecureClient estendono la sicurezza al desktop e laptop.Con SecuRemote e SecureClient i dati sono criptati prima che essi lascino il computer del client.

Sicurezza su Reti a.a. 2001/2002

Etoken R2• Combina grande sicurezza e semplice implementazione per

autenticazione utente, access control, confidenzialità e integrità dei dati.

• Comprende il protocollo per l’autenticazione DESX a 120 bits.• Memorizza e cifra credenziali quali chiavi private, password,

certificati digitali. • Memoria 16 K o 32 K.• Economico e facile da usare.

Page 3: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

3

Sicurezza su Reti a.a. 2001/2002

Etoken R2• Combina grande sicurezza e semplice implementazione per

autenticazione utente, access control, confidenzialità e integrità dei dati.

• Comprende il protocollo per l’autenticazione DESX a 120 bits.• Memorizza e cifra credenziali quali chiavi private, password,

certificati digitali. • Memoria 16 K o 32 K.• Economico e facile da usare.

DESX (DES eXtended ) è un algoritmo di cifratura che estende il DES a

una chiave di 120 bits aggiungendo due operazioni complesse che

incrementano sicurezza ed efficienza. Decifrare un messaggio cif rato

con il DESX significa trovare la giusta informazione in 2118 ope razioni.

E’ stato provato che ciò è matematicamente difficile.

Sicurezza su Reti a.a. 2001/2002At least 100,000Memory cell rewrites

At least 10 yearsMemory data retention

Hard molded plastic, tamper evidentCasing

USB type A (Universal Serial Bus)Connector

IP X8 – IEC 529Water resistance certification

0-100% without condensationHumidity rating

-40 C to 85 C (-40 F to 185 F)Storage temperature

0 C to 70 C (32 F to 158 F)Operating temperature

120mWPower dissipation

5gWeight

47 x 16 x 8 mm (1.85 x 0.63 x 0.31 inches)Dimensions

Secured and encrypted EEPROM memory chipChip security level

DES-X 120-bit *On board security algorithms / processors

16 k & 32kModels (by memory size)

PKCS#11 v2.01, CAPI (Microsoft Crypto API), Siemens/Infinion APDU commands PC/SC, X.509v3 certificates, SSLv3, IPSec/IKE PRO

Certifications & standards

Windows 98, Windows NT4.0, Windows 2000, Windows MEOperating systems

Sicurezza su Reti a.a. 2001/2002

Etoken PRO

• Fornisce autenticazione doppia.• Non ripudio.• Comprende un chip crittografico RSA in grado di generare la coppia

di chiavi simmetriche; il chip Siemens SLE66C, è certificato ITSEC E4.

• Tiene traccia delle manomissioni ed è resistente all’acqua. • Fornito di memoria a 16K o 32 K.

Sicurezza su Reti a.a. 2001/2002

Hard molded plastic, tamper evidentCasing

At least 10 yearsMemory data retention

At least 100,000Memory cell rewrites

USB type A (Universal Serial Bus)Connector

IP X8 – IEC 529Water resistance certification

0-100% without condensationHumidity rating

-40 C to 85 C (-40 F to 185 F)Storage temperature

0 C to 70 C (32 F to 158 F)Operating temperature

120mWPower dissipation

5gWeight

Support for ISO 7816 1-4 specifications.ISO specification support

47 x 16 x 8 mm (1.85 x 0.63 x 0.31 inches)Dimensions

RSA 1024 Bit signature approx. 1.0 sec RSA 1024 Bit key generation approx.25 sec

Speed

Smartcard chip security level ITSEC LE4 Smart card security certification (infinion).

Smartcard chip security level

RSA 1024-bit, DES, 3DES (Triple DES) , SHA1, (MD5 - optional)On board security algorithms / processors

16 k & 32kModels (by memory size)

PKCS#11 v2.01, CAPI (Microsoft Crypto API), Siemens/Infinion APDU commands PC/SC, X.509v3 certificates, SSLv3, IPSec/IKE PRO

Certifications & standards

Windows 98, Windows NT4.0, Windows 2000, Windows MEOperating systems

Sicurezza su Reti a.a. 2001/2002 Sicurezza su Reti a.a. 2001/2002

Ø CryptAcquireContextØ CryptGetProvParamØ CryptCreateHashØ CryptGenKeyØ CryptHashSessionKeyØ CryptDestroyHashØ CryptDestroyKeyØ CryptEncrypt Ø CryptDecrypt

Funzioni

Page 4: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

4

Sicurezza su Reti a.a. 2001/2002

o Usata per acquisire un handle di un particolare contenitore dichiavi all’interno di un particolare CSP.

o Restituisce l’handle che può essere usato per chiamare il CSP selezionato.

CryptAcquireContext

Sicurezza su Reti a.a. 2001/2002

BOOL WINAPI CryptAcquireContext(

*phProv ,

pszContainer,

pszProvider,

dwProvType,

DWORD dwFlags

);

CryptAcquireContext: ParametriIndirizzo della copia

dell’handle del CSP.

Sicurezza su Reti a.a. 2001/2002

BOOL WINAPI CryptAcquireContext(

*phProv ,

pszContainer,

pszProvider,

dwProvType,

DWORD dwFlags

);

CryptAcquireContext: Parametri

Nome del contenitore delle chiavi. Il nome è indipendente dal metodo usato per la memorizzazione delle chiavi. NULL se si usa il nome di default.

Sicurezza su Reti a.a. 2001/2002

BOOL WINAPI CryptAcquireContext(

*phProv ,

pszContainer,

pszProvider,

dwProvType,

DWORD dwFlags

);

CryptAcquireContext: ParametriSpecifica il servizio crittografico usato.Se il parametro è NULL si userà il provider di default.

Sicurezza su Reti a.a. 2001/2002

BOOL WINAPI CryptAcquireContext(

*phProv ,

pszContainer,

pszProvider,

dwProvType,

DWORD dwFlags

);

CryptAcquireContext: ParametriSpecifica i tipi di provider.

• PROV_RSA_FULL• PROV_RSA_SIG• PROV_DSS• PROV_DSS_DH• PROV_SSL

Sicurezza su Reti a.a. 2001/2002

BOOL WINAPI CryptAcquireContext(

*phProv ,

pszContainer,

pszProvider,

dwProvType,

DWORD dwFlags

);

CryptAcquireContext: Parametri

Questo parametro normalmente è settato a ZERO ma alcune

applicazioni setteranno uno o più flags.

Page 5: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

5

Sicurezza su Reti a.a. 2001/2002

Quando CryptAcquireContext è chiamato, molti CSP richiedono l’ input al proprio user prima di concedere l’accesso alle chiavi private nel contenitore delle chiavi.

FlagsCRYPT_VERIFY_CONTEXT : Se settato l’applicazione non avrà accesso alle chiavi private. Il parametro pszContainer deve essere settato a NULL.

Sicurezza su Reti a.a. 2001/2002

FlagsCRYPT_NEW_KEYSET : Se settato un nuovo contenitore di chiavi sarà creato con il nome specificato da pszContainer. Se pszContainer vale NULL allora il contenitore di chiavi creato avrà il nome di default.

CRYPT_MACHINE_KEYSET : Per default le chiavi sono memorizzate nella porzione del registro Hkey_Current_User. Questo flag può essere combinato con tutti gli altri flag indicando che la locazione per la chiave è Hkey_Local_Machine.

CRYPT_DELETE_KEYSET : Se settato il contenitore di chiavi specificato dalla funzione pszContainer sarà cancellato.

N.BN.B: Quando il contenitore di chiavi viene creato, molti CSP non creanoautomaticamente nessuna coppia di chiavi publica/privata. Queste chiavi dovranno essere create in un passo successivo con la funzione CryptGenKey.

Sicurezza su Reti a.a. 2001/2002

La funzione CryptAcquireContext restituisce:

TRUE se ha successo

FALSE altrimenti.

Questa funzione non prende parametri e restituisce il codice dell’ultimo errore.

Eventuali errori possono essere ritrovati grazie alla funzione

GETLASTERROR

FALSETRUE

Sicurezza su Reti a.a. 2001/2002

• Moduli indipendenti che eseguono il reale lavoro crittografico.

• Scritti per essere completamente indipendenti da una particolare applicazione

• Una data applicazione potrà utilizzare una moltitudine di CSP.

Cryptographic Service Provider(CSP)

Sicurezza su Reti a.a. 2001/2002

CryptGetProvParam: Parametri

Questa funzione recupera i parametri che controllano le operazioni di un CSP.

BOOL WINAPI CryptGetProvParam(

HCRYPTPROV hProv,

DWORD dwParam,

BYTE *pbData,

DWORD *pcbData,

DWORD dwFlags

);

Handle al CSP al quale si riferiscono i

parametri

Page 6: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

6

Sicurezza su Reti a.a. 2001/2002

CryptGetProvParam: Parametri

Questa funzione recupera i parametri che controllano le operazioni di un CSP.

BOOL WINAPI CryptGetProvParam(

HCRYPTPROV hProv,

DWORD dwParam,

BYTE *pbData,

DWORD *pcbData,

DWORD dwFlags

);

Numero del parametro. Può essere scelto tra diversi.

Sicurezza su Reti a.a. 2001/2002

CryptGetProvParam: Parametri

Questa funzione recupera i parametri che controllano le operazioni di un CSP.

BOOL WINAPI CryptGetProvParam(

HCRYPTPROV hProv,

DWORD dwParam,

BYTE *pbData,

DWORD *pcbData,

DWORD dwFlags

);

Puntatore a un buffer che riceve i dati del parametro specificato.La forma di

questi dati cambia a seconda del numero di parametro scelto.

Sicurezza su Reti a.a. 2001/2002

CryptGetProvParam: Parametri

Questa funzione recupera i parametri che controllano le operazioni di un CSP.

BOOL WINAPI CryptGetProvParam(

HCRYPTPROV hProv,

DWORD dwParam,

BYTE *pbData,

DWORD *pcbData,

DWORD dwFlags

);

Puntatore a una variadile che specifica la lunghezza in bytes del buffer puntato da pbData. Quando la funzione termina, la variabile puntata dal parametro pcbData

contiene il numero di bytes memorizzati nel buffer.

Sicurezza su Reti a.a. 2001/2002

CryptGetProvParam: Parametri

Questa funzione recupera i parametri che controllano le operazioni di un CSP.

BOOL WINAPI CryptGetProvParam(

HCRYPTPROV hProv,

DWORD dwParam,

BYTE *pbData,

DWORD *pcbData,

DWORD dwFlags

);

Valori dei flag. A seconda del numero del parametro specificato possono

essere settati diversi flags.

Sicurezza su Reti a.a. 2001/2002

Numero del parametro

Numero della versione del CSP. Il buffer puntato da pbData conterràun valore DWORD che indica il numero di versione del CSP.

PP_VERSION

Nome del CSP. Quando questo parametro è specificato, la funzione riempie il buffer puntato da pbData con il nome del CSP.

PP_NAME

Tipi di CSP implementati: CRYPT_IMPL_HARDWARE, CRYPT_IMPL_SOFTWARE, CRYPT_IMPL_MIXED, CRYPT_IMPL_UNKNOWN.

PP_IMPTYPE

Nomi dei contenitori della chiave.Quando questo parametro èspecificato, la funzione riempie il buffer puntato da pbData con il nome di uno dei contenitori della chiave mantenuto dal CSP.

PP_ENUMCONTAINER

Informazioni sull’algoritmo. Quando questo parametro è specificato, la funzione riempie il buffer puntato da pbData con le informazioni su uno degli algoritmi supportati da CSP.

PP_ENUMALGS

Nome del contenitore della chiave.Quando questo parametro èspecificato, la funzione riempie il buffer puntato da pbData con il nome del contenitore corrente della chiave.

PP_CONTAINER

Sicurezza su Reti a.a. 2001/2002

Informazioni sull’algoritmoQuando chiamiamo CryptGetProvParam con il parametro PP_ENUMALGS i dati restituiti nel buffer puntato da pbDatasono nella seguente forma:

ALG_ID aiAlgid;

DWORD dwBits;

DWORD dwNameLen;

CHAR szName[dwNameLen];

Identificatoredell’algoritmo.Numero di bits della chiave usata dall’algoritmo.Numero di caratteri del nome dell’algoritmo.

Zero terminante il nome dell’algoritmo.

Page 7: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

7

Sicurezza su Reti a.a. 2001/2002

Flags

CRYPT_FIRST

CRYPT_MACHINE_KEYSET

Viene restituito il primo valore della enumerazione.

Indica che la locazione della chiave è

Hkey_Local_Machine in luogo di

Hkey_Current_user.

Sicurezza su Reti a.a. 2001/2002

La funzione CryptGetProvParam restituisce:

TRUE se ha successo

FALSE altrimenti.

Eventuali errori possono essere ritrovati grazie alla funzioneGetLastError.

FALSETRUE

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_MORE_DATA

• ERROR_NO_MORE_ITEMS

• NTE_BAD_FLAGS

• NTE_BAD_TYPE

• NTE_BAD_UID Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptGetProvParam

Uno dei parametri specifica un handle non

valido.

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_MORE_DATA

• ERROR_NO_MORE_ITEMS

• NTE_BAD_FLAGS

• NTE_BAD_TYPE

• NTE_BAD_UID Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptGetProvParam

Uno dei parametri contiene un valore non valido ( puntatore illegale ).

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_MORE_DATA

• ERROR_NO_MORE_ITEMS

• NTE_BAD_FLAGS

• NTE_BAD_TYPE

• NTE_BAD_UID Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptGetProvParam

Il Buffer non è abbastanza grande da

poter contenere tutti i dati restituiti dalla funzione.

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_MORE_DATA

• ERROR_NO_MORE_ITEMS

• NTE_BAD_FLAGS

• NTE_BAD_TYPE

• NTE_BAD_UID Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptGetProvParam

E’ stata raggiunta la fine dell’output.

Nessun dato valido è stato messo nel

buffer.

Page 8: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

8

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_MORE_DATA

• ERROR_NO_MORE_ITEMS

• NTE_BAD_FLAGS

• NTE_BAD_TYPE

• NTE_BAD_UID Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptGetProvParam

Il parametro dwFlags non vale zero.

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_MORE_DATA

• ERROR_NO_MORE_ITEMS

• NTE_BAD_FLAGS

• NTE_BAD_TYPE

• NTE_BAD_UID Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptGetProvParam

Dwflags specifica un numero di parametro sconosciuto.

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_MORE_DATA

• ERROR_NO_MORE_ITEMS

• NTE_BAD_FLAGS

• NTE_BAD_TYPE

• NTE_BAD_UID Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptGetProvParam

Il parametro hProv non contiene un handle valido.

Sicurezza su Reti a.a. 2001/2002

CryptCreateHash

• La funzione CryptCreateHash è usata per inizializzarel’hashingdi un flusso di dati.

• Essa restituisce al chiamante un riferimento ad un aggetto hash CSP.

Sicurezza su Reti a.a. 2001/2002

CryptCreateHash: Parametri

BOOL WINAPI CryptCreateHash(

HCRYPTPROV hProv,

ALG_ID Algid,

HCRYPTKEY hKey,

DWORD dwFlags,

HCRYPTHASH *phHash );

Handle al CSP ottenuto chiamando la funzione CryptAcquireContext.

Sicurezza su Reti a.a. 2001/2002

CryptCreateHash: Parametri

BOOL WINAPI CryptCreateHash(

HCRYPTPROV hProv,

ALG_ID Algid,

HCRYPTKEY hKey,

DWORD dwFlags,

HCRYPTHASH *phHash );

Identificatoredell’algoritmo di hashing.

Page 9: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

9

Sicurezza su Reti a.a. 2001/2002

CryptCreateHash: Parametri

BOOL WINAPI CryptCreateHash(

HCRYPTPROV hProv,

ALG_ID Algid,

HCRYPTKEY hKey,

DWORD dwFlags,

HCRYPTHASH *phHash );

Se l’algoritmo per l’hashing utilizza una chiave, questa deve essere passata

come parametro alla funzione.Se l’algoritmo non richiede una chiave allora questo parametro deve essere

zero.

Sicurezza su Reti a.a. 2001/2002

CryptCreateHash: Parametri

BOOL WINAPI CryptCreateHash(

HCRYPTPROV hProv,

ALG_ID Algid,

HCRYPTKEY hKey,

DWORD dwFlags,

HCRYPTHASH *phHash );

Valore del flag. Questo parametro è riservato

per usi futuri.

Sicurezza su Reti a.a. 2001/2002

CryptCreateHash: Parametri

BOOL WINAPI CryptCreateHash(

HCRYPTPROV hProv,

ALG_ID Algid,

HCRYPTKEY hKey,

DWORD dwFlags,

HCRYPTHASH *phHash );

Indirizzo al quale la funzione copia il riferimento al un nuovo oggetto

hash creato.

Sicurezza su Reti a.a. 2001/2002

La funzione CryptCreateHash restituisce:

TRUE se ha successo

FALSE altrimenti.

Eventuali errori possono essere ritrovati grazie alla funzioneGetLastError..

FALSETRUE

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_NOT_ENOUGH_MEMORY

• NTE_BAD_ALGID

• NTE_BAD_FLAGS

• NTE_BAD_KEY

• NTE_NO_MEMORY Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptCreateHash

Uno dei parametri specifica un handle non

valido.

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_NOT_ENOUGH_MEMORY

• NTE_BAD_ALGID

• NTE_BAD_FLAGS

• NTE_BAD_KEY

• NTE_NO_MEMORY Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptCreateHash

Uno dei parametri contiene un valore non valido ( puntatore illegale ).

Page 10: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

10

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_NOT_ENOUGH_MEMORY

• NTE_BAD_ALGID

• NTE_BAD_FLAGS

• NTE_BAD_KEY

• NTE_NO_MEMORY Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptCreateHash

Il Sistema Operativo lavora in uno spazio di

memoria che non è il suo.

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_NOT_ENOUGH_MEMORY

• NTE_BAD_ALGID

• NTE_BAD_FLAGS

• NTE_BAD_KEY

• NTE_NO_MEMORYGli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptCreateHash

Il parametro Algidspecifica un algoritmo che non è supportato dal CSP

usato.

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_NOT_ENOUGH_MEMORY

• NTE_BAD_ALGID

• NTE_BAD_FLAGS

• NTE_BAD_KEY

• NTE_NO_MEMORYGli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptCreateHash

Il parametro dwFlags non vale zero.

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_NOT_ENOUGH_MEMORY

• NTE_BAD_ALGID

• NTE_BAD_FLAGS

• NTE_BAD_KEY

• NTE_NO_MEMORYGli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptCreateHash

Un algoritmo di hashing che usa una chiave è specificato da pararmetri

Algid e hKey che sono entrambi zero o specificano un handle non valido.

Sicurezza su Reti a.a. 2001/2002

Questi sono gli errori più comuni restituiti da questa funzione:

• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• ERROR_NOT_ENOUGH_MEMORY

• NTE_BAD_ALGID

• NTE_BAD_FLAGS

• NTE_BAD_KEY

• NTE_NO_MEMORYGli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptCreateHash

Il CSP lavora in uno spazio di memoria non suo.

Sicurezza su Reti a.a. 2001/2002

CryptGenKey

Questa funzione genera chiavi crittografiche random per usarle con il modulo CSP.

Viene restituito un handle della chiave che può essere usato per altre funzioni CryptoAPI che lo richiedono.

CryptGenKey

Page 11: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

11

Sicurezza su Reti a.a. 2001/2002

CryptGenKey: Parametri

BOOL WINAPI CryptGenKey(

HCRYPTPROV hProv,

ALG_ID Algid,

DWORD dwFlags,

HCRYPTHASH *phHash );

Handle ottenibile tramite la funzione CryptAcquireContext .

Sicurezza su Reti a.a. 2001/2002

CryptGenKey: Parametri

BOOL WINAPI CryptGenKey(

HCRYPTPROV hProv,

ALG_ID Algid,

DWORD dwFlags,

HCRYPTHASH *phHash );

Identificativo per l’algoritmo con il quale la chiave che si sta

generando dovrà essere usata. I valori validi variano a seconda

del CSP usato.

Sicurezza su Reti a.a. 2001/2002

CryptGenKey: Parametri

BOOL WINAPI CryptGenKey(

HCRYPTPROV hProv,

ALG_ID Algid,

DWORD dwFlags,

HCRYPTHASH *phHash );

Tipo di chiave che si va a generare. Il valore può essere 0 oppure si possono

settare uno o più flag(in XOR).

Sicurezza su Reti a.a. 2001/2002

CryptGenKey: Parametri

BOOL WINAPI CryptGenKey(

HCRYPTPROV hProv,

ALG_ID Algid,

DWORD dwFlags,

HCRYPTHASH *phHash );

Indirizzo nel quale la funzione copia l’handle della chiave che

si sta generando.

Sicurezza su Reti a.a. 2001/2002

Flags

CRYPT_EXPORTABLE

CRYPT_CREATE_SALT

CRYPT_NO_SALT

CRYPT_USER_PROTECTED

CRYPT_PREGEN

CryptExportKey

Sicurezza su Reti a.a. 2001/2002

Flags

CRYPT_EXPORTABLE

CRYPT_CREATE_SALT

CRYPT_NO_SALT

CRYPT_USER_PROTECTED

CRYPT_PREGEN

chiavi di sessione

chiavi private

chiavi pubbliche

Page 12: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

12

Sicurezza su Reti a.a. 2001/2002

Flags

CRYPT_EXPORTABLE

CRYPT_CREATE_SALT

CRYPT_NO_SALT

CRYPT_USER_PROTECTED

CRYPT_PREGEN

Sicurezza su Reti a.a. 2001/2002

Flags

CRYPT_EXPORTABLE

CRYPT_CREATE_SALT

CRYPT_NO_SALT

CRYPT_USER_PROTECTED

CRYPT_PREGEN si sta tentando “questa azione” usando la chiave

Dialog box

Sicurezza su Reti a.a. 2001/2002

Flags

CRYPT_EXPORTABLE

CRYPT_CREATE_SALT

CRYPT_NO_SALT

CRYPT_USER_PROTECTED

CRYPT_PREGEN

Sicurezza su Reti a.a. 2001/2002

La funzione CryptGenKey restituisce:

TRUE se ha successo

FALSE altrimenti.

Eventuali errori possono essere ritrovati grazie alla funzioneGetLastError..

FALSETRUE

Sicurezza su Reti a.a. 2001/2002

GetLastError di CryptGenKey

Questi sono gli errori più comuni restituiti da questa funzione:• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• NTE_BAD_ALGID

• NTE_BAD_FLAGS

• NTE_BAD_UID

• NTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

Uno dei parametri specifica un handle non valido.

Uno dei parametri contiene un valore non valido; spesso indica un puntatore illegale.

Sicurezza su Reti a.a. 2001/2002

GetLastError di CryptGenKey

Questi sono gli errori più comuni restituiti da questa funzione:• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• NTE_BAD_ALGID

• NTE_BAD_FLAGS

• NTE_BAD_UID

• NTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

Il parametro Algid specifica un algoritmo che il CSP in uso non supporta.

Il parametro dwFlags contiene un valore non valido.

Page 13: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

13

Sicurezza su Reti a.a. 2001/2002

GetLastError di CryptGenKey

Questi sono gli errori più comuni restituiti da questa funzione:• ERROR_INVALID_HANDLE

• ERROR_INVALID_PARAMETER

• NTE_BAD_ALGID

• NTE_BAD_FLAGS

• NTE_BAD_UID

• NTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

Il parametro hProv non contiene un handle valido.

Errore inaspettato.

Sicurezza su Reti a.a. 2001/2002

if(!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0)) {

printf(“error during CryptAcquireContext!\n”, GetLastError());

goto done;

}

Ottenere l’handle con CryptAcquireContext

Esempio

Sicurezza su Reti a.a. 2001/2002

if(!CryptGenKey( hprov, CALG_RC2, CRYPT_EXPORTABLE, &hKey)) {

printf(“error duringCryptGenKey!\n”, GetLastError());

goto done;

}

Generare la chiave di sessione

Esempio

if(!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0)) {

printf(“error during CryptAcquireContext!\n”, GetLastError());

goto done;

}

Sicurezza su Reti a.a. 2001/2002

Cifrare/decifrare un messaggio// ora è possibile cifrare o decifrare un messaggio usando hkeydone:

Esempio

if(!CryptGenKey( hprov, CALG_RC2, CRYPT_EXPORTABLE, &hKey)) {

printf(“error duringCryptGenKey!\n”, GetLastError());

goto done;

}

if(!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0)) {

printf(“error during CryptAcquireContext!\n”, GetLastError());

goto done;

}

Sicurezza su Reti a.a. 2001/2002

Distruggere la chiaveif(hKey != 0) CryptDestroyKey(hKey);

Esempio

if(!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0)) {

printf(“error during CryptAcquireContext!\n”, GetLastError());

goto done;

}

if(!CryptGenKey( hprov, CALG_RC2, CRYPT_EXPORTABLE, &hKey)) {

printf(“error duringCryptGenKey!\n”, GetLastError());

goto done;

}// ora è possibile cifrare o decifrare un messaggio usando hkeydone:

Sicurezza su Reti a.a. 2001/2002if(hProv != 0) CryptReleaseContext(hProv, 0);

Esempio

Rilasciare l’handle

// ora è possibile cifrare o decifrare un messaggio usando hkeydone:

if(!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0)) {

printf(“error during CryptAcquireContext!\n”, GetLastError());

goto done;

}

if(!CryptGenKey( hprov, CALG_RC2, CRYPT_EXPORTABLE, &hKey)) {

printf(“error duringCryptGenKey!\n”, GetLastError());

goto done;

}

if(hKey != 0) CryptDestroyKey(hKey);

Page 14: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

14

Sicurezza su Reti a.a. 2001/2002

CryptHashSessionKey: Parametri Questa funzione è usata per computare l’hash crittografico su una chiave.

BOOL WINAPICryptHashSessionKey(

HCRYPTHASH hHash,

HCRYPTKEY hKey,

DWORD dwFlags

);

Handle ad un oggetto hash.

Sicurezza su Reti a.a. 2001/2002

CryptHashSessionKey: Parametri Questa funzione è usata per computare l’hash crittografico su una chiave.

BOOL WINAPICryptHashSessionKey(

HCRYPTHASH hHash,

HCRYPTKEY hKey,

DWORD dwFlags

);

Handle all’oggettokey di cui si deve

fare l’hash.

Sicurezza su Reti a.a. 2001/2002

CryptHashSessionKey: Parametri Questa funzione è usata per computare l’hash crittografico su una chiave.

BOOL WINAPICryptHashSessionKey(

HCRYPTHASH hHash,

HCRYPTKEY hKey,

DWORD dwFlags

);

Questo parametro è riservato ad usi futuri e dovrebbe sempre essere

settato a 0.

Sicurezza su Reti a.a. 2001/2002

La funzione CryptHashSessionKey restituisce:

TRUE se ha successo

FALSE altrimenti.

Eventuali errori possono essere ritrovati grazie alla funzioneGetLastError..

FALSETRUE

Sicurezza su Reti a.a. 2001/2002

GetLastError di CryptHashSessionKeyGli errori che si verificano più comunemente sono:

ERROR_INVALID_HANDLE

ERROR_INVALID_PARAMETER

NTE_BAD_ALGID

NTE_BAD_FLAGS

NTE_BAD_HASH

NTE_BAD_HASH_STATE

NTE_KEY

NTE_BAD_UID

NTE_FAILGli errori con il prefisso NTE sono generati dal particolare CSP usato.

Uno dei parametri specifica un handle non valido.

Uno dei parametri contiene un valore non valido; spesso indica un puntatore illegale.

Sicurezza su Reti a.a. 2001/2002

GetLastError di CryptHashSessionKeyGli errori che si verificano più comunemente sono:

ERROR_INVALID_HANDLE

ERROR_INVALID_PARAMETER

NTE_BAD_ALGID

NTE_BAD_FLAGS

NTE_BAD_HASH

NTE_BAD_HASH_STATE

NTE_KEY

NTE_BAD_UID

NTE_FAILGli errori con il prefisso NTE sono generati dal particolare CSP usato.

L’handle hHash specifica un algoritmo che il corrente CSP non supporta.

Il parametro dwFlags è DIVERSO da 0.

L’oggetto hash specificato dal parametro hHash non è valido.

Page 15: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

15

Sicurezza su Reti a.a. 2001/2002

GetLastError di CryptHashSessionKeyGli errori che si verificano più comunemente sono:

ERROR_INVALID_HANDLE

ERROR_INVALID_PARAMETER

NTE_BAD_ALGID

NTE_BAD_FLAGS

NTE_BAD_HASH

NTE_BAD_HASH_STATE

NTE_KEY

NTE_BAD_UID

NTE_FAILGli errori con il prefisso NTE sono generati dal particolare CSP usato.

E’ stato fatto un tentativo per aggiungere dati ad un oggetto hash che è già “finito”.

E’ stato usato un algoritmo per fare l’ hash della chiave ma la chiave di sessione non è più valida.

Il contesto CSP specificato alla creazione dell’oggetto hash non può essere trovato.

Sicurezza su Reti a.a. 2001/2002

GetLastError di CryptHashSessionKeyGli errori che si verificano più comunemente sono:

ERROR_INVALID_HANDLE

ERROR_INVALID_PARAMETER

NTE_BAD_ALGID

NTE_BAD_FLAGS

NTE_BAD_HASH

NTE_BAD_HASH_STATE

NTE_KEY

NTE_BAD_UID

NTE_FAILGli errori con il prefisso NTE sono generati dal particolare CSP usato.

Errore inaspettato.

Sicurezza su Reti a.a. 2001/2002

o Elimina l’oggetto hash puntato da un handle

o Tutti gli oggetti hash dovrebbero essere distrutti alla fine del programma.

CryptDestroyHash

Sicurezza su Reti a.a. 2001/2002

CryptDestroyHash: Parametri

BOOL WINAPI CryptDestroyHash (

HCRYPTHASH hHash

);

Puntatore all’ oggetto hash da distruggere.

Sicurezza su Reti a.a. 2001/2002

La funzione CryptDestroyHash restituisce:

TRUE se ha successo

FALSE altrimenti.

Eventuali errori possono essere ritrovati grazie alla funzioneGetLastError..

FALSETRUE

Sicurezza su Reti a.a. 2001/2002

Codici d’errore più comuni:

ERROR_BUSYERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_HASH NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDestroyHash

Il CSP specificato dal parametro hProv è al

momento usato da altri processi.

Page 16: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

16

Sicurezza su Reti a.a. 2001/2002

Codici d’errore più comuni:

ERROR_BUSYERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_HASH NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDestroyHash

Uno dei parametri specifica unhandle non valido.

Sicurezza su Reti a.a. 2001/2002

Codici d’errore più comuni:

ERROR_BUSYERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_HASH NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDestroyHash

Uno dei parametri contiene un valore non valido ( un puntatore

illegale ).

Sicurezza su Reti a.a. 2001/2002

Codici d’errore più comuni:

ERROR_BUSYERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_HASH NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDestroyHash

L’handle hHash specifica un algoritmo che il corrente

CSP non supporta.

Sicurezza su Reti a.a. 2001/2002

Codici d’errore più comuni:

ERROR_BUSYERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_HASH NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDestroyHash

L’oggetto hash specificato dal parametro hHash non è

valido

L’oggetto hash specificato dal parametro hHash non è

valido.

Sicurezza su Reti a.a. 2001/2002

Codici d’errore più comuni:

ERROR_BUSYERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_HASH NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDestroyHash

Il contesto CSP specificato alla creazione dell’oggetto

hash non può essere trovato.

Sicurezza su Reti a.a. 2001/2002

o Quando un oggetto hash è distrutto, la maggior parte dei CSPs puliranno la memoria nel CSP dove l’oggetto hash era contenuto.

o Ci dovrebbe essere una corrispondenza uno-a-uno tra chiamate a CryptCreateHash e CryptDestroyHash.

CryptDestroyHash

Page 17: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

17

Sicurezza su Reti a.a. 2001/2002

o Rilascia l’handle riferito dal parametro hKey

o Se l’handle si riferisce ad una chiave di sessione, o a una chiave pubblica che era stata importata nel CSP tramite CryptImportKey,questa funzione distrugge la chiave e libera la memoria che la chiave occupava.

o Se l’handle si riferisce ad una coppia chiave pubblica/privata (ottenuta da CryptGetUserKey ), la coppia non è distrutta da questa funzione. – Solo l’handle !!!

CryptDestroyKey

Sicurezza su Reti a.a. 2001/2002

CryptDestroyKey: Parametri

BOOL WINAPI CryptDestroyKey (

HCRYPTKEY hKey

);

… e chiaramente …

Sicurezza su Reti a.a. 2001/2002

La funzione CryptDestroyKey restituisce:

TRUE se ha successo

FALSE altrimenti.

Eventuali errori possono essere ritrovati grazie alla funzioneGetLastError..

FALSETRUE

Sicurezza su Reti a.a. 2001/2002

In questo caso i codici d’errore possibili sono:

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_HASH NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDestroyKey

Uno dei parametri specifica unhandle non valido.

Sicurezza su Reti a.a. 2001/2002

In questo caso i codici d’errore possibili sono:

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_HASH NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDestroyKey

Uno dei parametri contiene un valore non valido ( un puntatore

illegale ).

Sicurezza su Reti a.a. 2001/2002

In questo caso i codici d’errore possibili sono:

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_HASH NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDestroyKey

L’oggetto hash specificato dal parametro hHash non è

valido.

Page 18: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

18

Sicurezza su Reti a.a. 2001/2002

In questo caso i codici d’errore possibili sono:

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_HASH NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDestroyKey

Il contesto CSP specificato alla creazione dell’oggetto

hash non può essere trovato.

Sicurezza su Reti a.a. 2001/2002

CryptEncrypt

Ø Usata per codificare dati.

Ø L'algoritmo usato è designato dalla chiave tenuta dal modulo di CSP il cui riferimento è il parametro hKey.

Ø Importanti cambi sono stati fatti alle CryptoAPI per sostenere l’ interoperabilità di e-mail di S/MIME.

Sicurezza su Reti a.a. 2001/2002

CryptEncrypt: ParametriBOOL WINAPI CryptEncrypt(

HCRYPTKEY hKey,

HCRYPTHASH hHash,

BOOL Final,

DWORD dwFlags,

BYTE *pbData,

DWORD *pcbData,

DWORD cbBuffer

);

Handle alla chiave da usare per lacifratura. Si ottiene usando la

funzione CryptGenKey. Questa chiave specifica l'algoritmo di

cifratura usato.

Sicurezza su Reti a.a. 2001/2002

CryptEncrypt: ParametriBOOL WINAPI CryptEncrypt(

HCRYPTKEY hKey,

HCRYPTHASH hHash,

BOOL Final,

DWORD dwFlags,

BYTE *pbData,

DWORD *pcbData,

DWORD cbBuffer

);

Handle a un oggetto di tipo Hash. Se nessun pasticcio sarà fatto,

questo parametro deve essere zero.

Sicurezza su Reti a.a. 2001/2002

CryptEncrypt: ParametriBOOL WINAPI CryptEncrypt(

HCRYPTKEY hKey,

HCRYPTHASH hHash,

BOOL Final,

DWORD dwFlags,

BYTE *pbData,

DWORD *pcbData,

DWORD cbBuffer

);

Valore booleano:•TRUE se questa è l’ultima sezione da cifrare,•FALSE altrimenti.

Sicurezza su Reti a.a. 2001/2002

CryptEncrypt: ParametriBOOL WINAPI CryptEncrypt(

HCRYPTKEY hKey,

HCRYPTHASH hHash,

BOOL Final,

DWORD dwFlags,

BYTE *pbData,

DWORD *pcbData,

DWORD cbBuffer

);

Riservato per un uso futuro. Dovrebbe essere sempre zero.

.

Page 19: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

19

Sicurezza su Reti a.a. 2001/2002

CryptEncrypt: ParametriBOOL WINAPI CryptEncrypt(

HCRYPTKEY hKey,

HCRYPTHASH hHash,

BOOL Final,

DWORD dwFlags,

BYTE *pbData,

DWORD *pcbData,

DWORD cbBuffer

);

Puntatore ad un buffer che contiene i dati da codificare. I dati codificati saranno

messi in questo stesso buffer.

Sicurezza su Reti a.a. 2001/2002

CryptEncrypt: ParametriBOOL WINAPI CryptEncrypt(

HCRYPTKEY hKey,

HCRYPTHASH hHash,

BOOL Final,

DWORD dwFlags,

BYTE *pbData,

DWORD *pcbData,

DWORD cbBuffer

);

Indirizzo della lunghezza dei dati

Sicurezza su Reti a.a. 2001/2002

CryptEncrypt: ParametriBOOL WINAPI CryptEncrypt(

HCRYPTKEY hKey,

HCRYPTHASH hHash,

BOOL Final,

DWORD dwFlags,

BYTE *pbData,

DWORD *pcbData,

DWORD cbBuffer

);

Contiene il numero di byte nel buffer pbData.

Sicurezza su Reti a.a. 2001/2002

CryptEncrypt

• Quando un grande ammontare di dati deve essere codificato, può essere fatto in sezioni. Questo viene fatto chiamando ripetutamente CryptEncrypt.

• Il parametro Final dovrebbe essere messo a Vero sull'ultima chiamata di CryptEncrypt, così il motore dicifratura può finire il processo di cifratura.

Sicurezza su Reti a.a. 2001/2002

CryptReleaseContext

• Usata per il rilascio di un handle e di un contenitore di chiave da parte di un CSP .

• Questa potrebbe essere eseguita quando l’applicazione ha finito di usare il CSP. Dopo che questa funzione è chiamata, l’handle CSP specificato dal parametro hProv non sarà valido a lungo.

• Nè il contenitore di chiave nè alcuna coppia di chiavi sono distrutti da questa funzione.

Sicurezza su Reti a.a. 2001/2002

CryptReleaseContext: Parametri

BOOL WINAPI CryptReleaseContext(HCRYPTPROV hProv, DWORD dwFlags

);

Handle che l’applicazione ottiene usando la funzione

CryptAcquireContext.

Page 20: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

20

Sicurezza su Reti a.a. 2001/2002

CryptReleaseContext: Parametri

BOOL WINAPI CryptReleaseContext(HCRYPTPROV hProv, DWORD dwFlags

);

Flags normalmente settati a ZERO.

Sicurezza su Reti a.a. 2001/2002

La funzione CryptReleaseContext restituisce:

TRUE se ha successo

FALSE altrimenti.

Eventuali errori possono essere ritrovati grazie alla funzioneGetLastError..

FALSETRUE

Sicurezza su Reti a.a. 2001/2002

GetLastError di CryptReleaseContextQui di seguito sono elencati i codici di errore più comunemente restituiti dalla funzione GetLastError.

§ ERROR_BUSY

§ ERROR_INVALID_HANDLE

§ ERROR_INVALID_PARAMETER

§ NTE_BAD_FLAGS

§ NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

Il CSP specificato dal parametro hProv è al

momento usato da altri processi.

Sicurezza su Reti a.a. 2001/2002

GetLastError di CryptReleaseContextQui di seguito sono elencati i codici di errore più comunemente restituiti dalla funzione GetLastError.

§ ERROR_BUSY

§ ERROR_INVALID_HANDLE

§ ERROR_INVALID_PARAMETER

§ NTE_BAD_FLAGS

§ NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

Uno dei parametri specifica unhandle non valido.

Sicurezza su Reti a.a. 2001/2002

GetLastError di CryptReleaseContextQui di seguito sono elencati i codici di errore più comunemente restituiti dalla funzione GetLastError.

§ ERROR_BUSY

§ ERROR_INVALID_HANDLE

§ ERROR_INVALID_PARAMETER

§ NTE_BAD_FLAGS

§ NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

Uno dei parametri contiene un valore non valido ( un puntatore

illegale ).

Sicurezza su Reti a.a. 2001/2002

GetLastError di CryptReleaseContextQui di seguito sono elencati i codici di errore più comunemente restituiti dalla funzione GetLastError.

§ ERROR_BUSY

§ ERROR_INVALID_HANDLE

§ ERROR_INVALID_PARAMETER

§ NTE_BAD_FLAGS

§ NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

Il parametro dwFlags non vale zero.

Page 21: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

21

Sicurezza su Reti a.a. 2001/2002

GetLastError di CryptReleaseContextQui di seguito sono elencati i codici di errore più comunemente restituiti dalla funzione GetLastError.

§ ERROR_BUSY

§ ERROR_INVALID_HANDLE

§ ERROR_INVALID_PARAMETER

§ NTE_BAD_FLAGS

§ NTE_BAD_UID

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

Il parametro hProv non contiene un handle valido.

Sicurezza su Reti a.a. 2001/2002

CryptReleaseContext

• Dopo che questa funzione è stata chiamata, la sessione è finita, tutte le chiavi di sessione e tutti gli oggetti hash che erano stati creati usando l’handle hProv, diventano non validi.

• In pratica tali oggetti dovrebbero essere distrutti ( con le funzioni CryptDestroyKey e CryptDestroyHash )prima che la funzione CryptReleaseContext venga chiamata.

Sicurezza su Reti a.a. 2001/2002

CryptDecrypt

• Tale funzione è usata per decodificare dati che erano stati precedentemente criptati usando la funzione CryptEncrypt.

• Importanti cambiamenti sono stati fatti alle CryptoAPI per supportare l’S/MIME, che concerne il trattamento dell’impacchettamento dei messaggi.

• A causa di alcune importanti leggi francesi, i Microsoft CSPs non possono codificare dati quando il sistema operativo Microsoft® Windows NT® è usato in Francia. Quindi questa funzione fallirà con l’errore NTE_PERM.

Sicurezza su Reti a.a. 2001/2002

CryptDecrypt: Parametri

BOOL WINAPI CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pcbData

);

Handle per la chiave da usare nella decifratura.

Si ottiene da CryptGenKey o

CryptImportKey. Questa chiave specifica

l’algoritmo di decifratura usato.

Sicurezza su Reti a.a. 2001/2002

CryptDecrypt: Parametri

BOOL WINAPI CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pcbData

);

Handle ad un oggetto hash. E’usato solo se l’hash di un dato ècomputato. Se non si ha nessun

hash, il parametro vale zero.

Sicurezza su Reti a.a. 2001/2002

CryptDecrypt: Parametri

BOOL WINAPI CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pcbData

);

Valore booleano:•TRUE se questa è l’ultima sezione da decifrare•FALSE altrimenti

Page 22: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

22

Sicurezza su Reti a.a. 2001/2002

CryptDecrypt: Parametri

BOOL WINAPI CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pcbData

);

Flags normalmente settati a zero.

Sicurezza su Reti a.a. 2001/2002

CryptDecrypt: Parametri

BOOL WINAPI CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pcbData

);

Buffer che contiene i dati da decifrare.Dopo la decifratura il testo in chiaro è contenuto

in questo stesso buffer.

Sicurezza su Reti a.a. 2001/2002

CryptDecrypt: Parametri

BOOL WINAPI CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pcbData

);

Indirizzo della lunghezza dei dati

Sicurezza su Reti a.a. 2001/2002

La funzione CryptDecrypt restituisce:

TRUE se ha successo

FALSE altrimenti.

Eventuali errori possono essere ritrovati grazie alla funzioneGetLastError..

FALSETRUE

Sicurezza su Reti a.a. 2001/2002

Qui di seguito sono elencati i codici degli errori più comunemente restituiti dalla funzione GetLastError.

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_DATANTE_BAD_FLAGSNTE_BAD_HASHNTE_BAD_KEYNTE_BAD_LEN NTE_BAD_UIDNTE_DOUBLE_ENCRYPTNTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDecrypt

Uno dei parametri specifica unhandle non valido.

Sicurezza su Reti a.a. 2001/2002

Qui di seguito sono elencati i codici degli errori più comunemente restituiti dalla funzione GetLastError.

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_DATANTE_BAD_FLAGSNTE_BAD_HASHNTE_BAD_KEYNTE_BAD_LEN NTE_BAD_UIDNTE_DOUBLE_ENCRYPTNTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDecrypt

Uno dei parametri contiene un valore non valido ( un puntatore

illegale ).

Page 23: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

23

Sicurezza su Reti a.a. 2001/2002

Qui di seguito sono elencati i codici degli errori più comunemente restituiti dalla funzione GetLastError.

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_DATANTE_BAD_FLAGSNTE_BAD_HASHNTE_BAD_KEYNTE_BAD_LEN NTE_BAD_UIDNTE_DOUBLE_ENCRYPTNTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDecrypt

L’handle hHash specifica un algoritmo che il corrente

CSP non supporta.

Sicurezza su Reti a.a. 2001/2002

Qui di seguito sono elencati i codici degli errori più comunemente restituiti dalla funzione GetLastError.

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_DATANTE_BAD_FLAGSNTE_BAD_HASHNTE_BAD_KEYNTE_BAD_LEN NTE_BAD_UIDNTE_DOUBLE_ENCRYPTNTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDecrypt

Il dato da decifrare non è valido.

Sicurezza su Reti a.a. 2001/2002

Qui di seguito sono elencati i codici degli errori più comunemente restituiti dalla funzione GetLastError.

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_DATANTE_BAD_FLAGSNTE_BAD_HASHNTE_BAD_KEYNTE_BAD_LEN NTE_BAD_UIDNTE_DOUBLE_ENCRYPTNTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDecrypt

Il parametro dwFlags non vale zero.

Sicurezza su Reti a.a. 2001/2002

Qui di seguito sono elencati i codici degli errori più comunemente restituiti dalla funzione GetLastError.

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_DATANTE_BAD_FLAGSNTE_BAD_HASHNTE_BAD_KEYNTE_BAD_LEN NTE_BAD_UIDNTE_DOUBLE_ENCRYPTNTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDecrypt

L’oggetto hash specificato dal parametro hHash non è

valido.

Sicurezza su Reti a.a. 2001/2002

Qui di seguito sono elencati i codici degli errori più comunemente restituiti dalla funzione GetLastError.

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_DATANTE_BAD_FLAGSNTE_BAD_HASHNTE_BAD_KEYNTE_BAD_LEN NTE_BAD_UIDNTE_DOUBLE_ENCRYPTNTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDecrypt

Il parametro hKey non contiene un handle valido per una

chiave.

Sicurezza su Reti a.a. 2001/2002

Qui di seguito sono elencati i codici degli errori più comunemente restituiti dalla funzione GetLastError.

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_DATANTE_BAD_FLAGSNTE_BAD_HASHNTE_BAD_KEYNTE_BAD_LEN NTE_BAD_UIDNTE_DOUBLE_ENCRYPTNTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDecrypt

La dimensione del buffer di output ètroppo piccola per contenere il testo

in chiaro generato.

Page 24: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

24

Sicurezza su Reti a.a. 2001/2002

Qui di seguito sono elencati i codici degli errori più comunemente restituiti dalla funzione GetLastError.

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_DATANTE_BAD_FLAGSNTE_BAD_HASHNTE_BAD_KEYNTE_BAD_LEN NTE_BAD_UIDNTE_DOUBLE_ENCRYPTNTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDecrypt

Il parametro hProv non contiene un handle valido

Sicurezza su Reti a.a. 2001/2002

Qui di seguito sono elencati i codici degli errori più comunemente restituiti dalla funzione GetLastError.

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_DATANTE_BAD_FLAGSNTE_BAD_HASHNTE_BAD_KEYNTE_BAD_LEN NTE_BAD_UIDNTE_DOUBLE_ENCRYPTNTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDecrypt

L’applicazione cerca di decifrare lo stesso

dato due volte.

Sicurezza su Reti a.a. 2001/2002

Qui di seguito sono elencati i codici degli errori più comunemente restituiti dalla funzione GetLastError.

ERROR_INVALID_HANDLEERROR_INVALID_PARAMETERNTE_BAD_ALGID NTE_BAD_DATANTE_BAD_FLAGSNTE_BAD_HASHNTE_BAD_KEYNTE_BAD_LEN NTE_BAD_UIDNTE_DOUBLE_ENCRYPTNTE_FAIL

Gli errori con il prefisso NTE sono generati dal particolare CSP usato.

GetLastError di CryptDecrypt

Errore inaspettato.

Sicurezza su Reti a.a. 2001/2002

CryptDecrypt

Ø Se il dato è stato decifrato e simultaneamente ne è stato calcolato il valore hash, un handle all’oggetto hash può essere passato nel parametro hHash.

Ø Il valore hash sarà aggiornato con il testo in chiaro decifrato.

Ø Questa opzione è utile quando si decifra e si verifica la firma contemporaneamente.

Sicurezza su Reti a.a. 2001/2002

CryptDecryptØ Prima di chiamare la funzione CryptDecrypt, l’applicazione

deve ottenere un handle per l’oggetto hash chiamando la funzione CryptCreateHash.

Ø Dopo che la decifratura è completata, si può:a. ottenere il valore hash dell’oggetto attraverso CryptGetHashParam,b. firmarlo attraverso CryptSignHashc. utilizzarlo per verificare una firma digitale attraverso

CryptVerifySignature.

Ø La decifratura di un gran numero di dati può avvenire in sezionichiamando ripetutamente la funzione CryptDecrypt.

Sicurezza su Reti a.a. 2001/2002

Page 25: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

25

Sicurezza su Reti a.a. 2001/2002

Esempio ApplicativoL’esempio mostrato nelle slide successive ci da dimostrazione di come utilizzare le funzioni analizzate finora.

• Option Explicit• Private Sub cmdRun_Click()•• Dim ret As Long• Dim phProv, phHash, phKey As Long• Dim sResult As String•• ret = CryptAcquireContext(phProv, "eToken Sample", "eToken Base Cryptographic Provider", PROV_RSA_FULL, 0)

Sicurezza su Reti a.a. 2001/2002

Esempio Applicativo• If ret <> 0 Then• sResult = " - Creating a session key and setting the eToken as the

provider"• Else• ret = CryptAcquireContext(phProv, "eToken Sample", "eToken Base

Cryptographic Provider", PROV_RSA_FULL, CRYPT_NEWKEYSET)• sResult = " - Creating a new key"• If ret = 0 Then• sResult = " - Acquisition of context failed"• End If• End If

Sicurezza su Reti a.a. 2001/2002

Esempio Applicativo

• txtProgress.Text = txtProgress.Text + "CryptAcquireContext()" +sResult + CRLF + CRLF

• If CryptCreateHash(phProv, CALG_MD5, 0, 0, phHash) = 1Then• sResult = " - An empty hash object has been created"• Else• sResult = " - Error during CryptBeginHash"• End If• txtProgress.Text = txtProgress.Text + "CryptAcquireContext()" +

sResult + CRLF + CRLF

Sicurezza su Reti a.a. 2001/2002

Esempio Applicativo• If CryptGenKey(phProv, CALG_DES, CRYPT_EXPORTABLE,

phKey) = 1 Then• sResult = " - A random session key has been created"• Else• sResult = " - Error during CryptGenKey"• End If• txtProgress.Text = txtProgress.Text + "CryptGenKey()" + sResult +

CRLF + CRLF• If CryptHashSessionKey(phHash, phKey, 0) = 1Then• sResult = " - Session key has been hashed"• Else• sResult = " - Error during CryptHashSessionKey"• End If

Sicurezza su Reti a.a. 2001/2002

Esempio Applicativo• txtProgress.Text = txtProgress.Text + "CryptHashSessionKey()" +

sResult + CRLF + CRLF• sResult = " - Hash object has been destroy"• txtProgress.Text = txtProgress.Text + "CryptDestroyHash()" +

sResult + CRLF + CRLF• sResult = " - key object has been destroy"• txtProgress.Text = txtProgress.Text + "CryptDestroyKey()" +

sResult + CRLF + CRLF• sResult = " - Release the CSP"• txtProgress.Text = txtProgress.Text + "CryptReleaseContext()" +

sResult + CRLF + CRLF

• End SubSicurezza su Reti a.a. 2001/2002

Page 26: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

26

Sicurezza su Reti a.a. 2001/2002

Configurazione<HTML><HEAD><META NAME="GENERATOR" Content="Microsoft Developer Studio"><META HTTP-EQUIV="Content-Type" content="text/html;"><TITLE>Document Title</TITLE></HEAD><BODY><h2> eTocx Configuration VBScript sample for eToken Pro</h2>

<SCRIPT LANGUAGE="VBScript"> <!--Dim tokenDim conf

Sicurezza su Reti a.a. 2001/2002

ConfigurazioneOn Error Resume Next

set token =CreateObject("eTocx.eTokenPro")

document.write "<br>Attaching to reader <b>AKS ifdh 0</b>"token.attach "AKS ifdh 0"

If Err.Number = 0 Thendocument.write "<br>Locking token..."token.lock

If Err.Number = 0 Thendocument.write "<br>Getting configuration..."set conf = token.getconf

Questo codice avvia l'applicazione creando l'oggetto Token PRO. È

quindi possibile fare riferimento all'oggetto nel

codice utilizzando la variabile oggetto definita. Nell'esempio seguente, la

variabile oggetto viene utilizzata per accedere alle proprietà e ai metodi del

nuovo oggetto Token PRO.

Rappresenta la pagina corrente nell'Editor HTML.

Collega l’oggetto token alla porta

USB.

Setta la variabile conf alla configurazione dell’ e-Token

In tal modo si prende possesso della risorsa e-Token

Sicurezza su Reti a.a. 2001/2002

ConfigurazioneIf Err.Number = 0 Then

document.write "<br>Token ID..."document.write conf.tokenId

document.write "<br>Token color..."document.write conf.color

End If

document.write "<br>Unlocking token..."token.unlock

End If

document.write "<br>Detaching from token..."token.detach

End If

Stampa a video nella pagina HTML l’id dell’ e-Token

Stampa a video il colore dell’e-Token.

Rilascia la risorsa e-Token.

Chiude definitivamente l’ e-TokenSicurezza su Reti a.a. 2001/2002

Configurazione' Error Handling

If Err.Number <> 0 ThenMsgBox "Error occured (0x" & Hex(Err.Number) & ") description: " & Err.Description,

vbOKOnly + vbExclamation, "Runtime Error"Err.Clear ' Clear the error.

End Ifset token = Nothingset conf = Nothing--></SCRIPT>

<BR><BR><a href = etoken.htm>Back to eToken Samples main menu</a>

</BODY></HTML>

In questa parte di codice vengono gestiti eventuali errori

Sicurezza su Reti a.a. 2001/2002

Configurazione password<HTML><HEAD><META NAME="GENERATOR" Content="Microsoft Developer Studio"><META HTTP-EQUIV="Content-Type" content="text/html;"><TITLE>Document Title</TITLE></HEAD><BODY><h2> eTocx Login Logout VBScript sample for eToken Pro</h2>

<SCRIPT LANGUAGE="VBScript"> <!--Dim baDim token

Sicurezza su Reti a.a. 2001/2002

Configurazione password

On Error Resume Next

set ba = CreateObject("eTocx.ByteArray")set token =CreateObject("eTocx.eTokenPro")

document.write "<br>Attaching to reader <b>AKS ifdh 0</b>"token.attach "AKS ifdh 0"

If Err.Number = 0 Thendocument.write "<br>Locking token..."token.lock

If Err.Number = 0 Thendocument.write "<br>Logging in with password 1234567890..."ba.create_bstr "1234567890"token.login ba

Si creano due oggetti:un e_Token PRO un array di byte

Si inserisce la stringa 1234567890 nella

variabile ba.

Si effettua un login nell’e-Token con la stringa

contenuta in ba.

Page 27: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

27

Sicurezza su Reti a.a. 2001/2002

Configurazione password

If Err.Number = 0 Thendocument.write "<br>Changing password to 1111..."ba.create_bstr "1111"token.changePassword ba

If Err.Number = 0 Thendocument.write "<br>Logging in with password 1111..."ba.create_bstr "1111"token.login ba

If Err.Number = 0 Thendocument.write "<br>Changing password back to 1234567890..."ba.create_bstr "1234567890"

End If

Cambia la password dell’e-Token con quella contenuta in ba.

Sicurezza su Reti a.a. 2001/2002

Configurazione passwordtoken.changePassword ba

End If

document.write "<br>Logging out..."token.logout

End If

document.write "<br>Unlocking token..."token.unlock

End If

document.write "<br>Detaching from token..."token.detach

End If

Effettua il logout dell’ e-Token.

Sicurezza su Reti a.a. 2001/2002

Configurazione password' Error HandlingIf Err.Number <> 0 ThenMsgBox "Error occured (0x" & Hex(Err.Number) & ") description: " & Err.Description,

vbOKOnly + vbExclamation, "Runtime Error"Err.Clear ' Clear the error.

End Ifset token = Nothingset ba = Nothing--></SCRIPT><BR><BR><a href = etoken.htm>Back to eToken Samples main menu</a>

</BODY></HTML>

Sicurezza su Reti a.a. 2001/2002

Manipolazione file binari

<HTML><HEAD><META NAME="GENERATOR"Content="Microsoft Developer Studio"><META HTTP-EQUIV="Content-Type" content="text/html;"><TITLE>Document Title</TITLE></HEAD><BODY><h2> eTocxFile manipulation VBScript sample for eTokenPro</h2>

<SCRIPT LANGUAGE="VBScript"> <!--

Sicurezza su Reti a.a. 2001/2002

Manipolazione file binari' Print an arraysub printarray(a)

For i = 0 To a.length - 1document.write a.get(i)," "

Nextend subsub printarrayStr(a)

For i = 0 To a.length - 1Dim xx = Chr(a.get(i))

document.write x, " "Next

end sub

Dim baDim tokenDim dataRead

Questa funzione,tramite un ciclo for, stampa a video il contenuto

dell’array a.

Questa funzione,tramite un ciclo for, stampa a video il contenuto dell’array a trasformandolo in

una stringa di caratteri utilizzando la funzione Chr()

Sicurezza su Reti a.a. 2001/2002

Manipolazione file binariOn Error Resume Nextset ba = CreateObject("eTocx.ByteArray")set token = CreateObject ("eTocx.eTokenPro")

document.write "<br>Attaching to reader <b>AKS ifdh 0</b>"token .attach "AKSifdh 0"

If Err.Number = 0 Thendocument.write "<br>Locking token..."token.lock

If Err.Number = 0 Thendocument.write "<br>Logging in with password 1234567890..."ba.create_bstr "1234567890"token.login ba

Page 28: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

28

Sicurezza su Reti a.a. 2001/2002

Manipolazione file binari

If Err.Number = 0 Thendocument.write "<br>Checking if file 3f00/6666/0001 exists..."if token.isFileExist ("3f0066660001") Thendocument.write "<br>Deleting file 3f00/6666/0001..."token.del "3f0066660001"

End If

If Err.Number = 0 Thendocument.write "<br>Creating a public binary EF file 3f00/6666/0001..."token.createBinaryFile "3f0066660001", 100, 0

Il file con il nome indicato tra “” viene cancellato.

Effettua un controllo sull’esistenza di un file nell’e-Token.

Crea un file binario con il nome indicato tra apici……….

Sicurezza su Reti a.a. 2001/2002

Manipolazione file binari

If Err.Number = 0 Thendocument.write "<br>Getting directory contents ..."Dim childrenset children = token.dir("3f006666")

If Err.Number = 0 ThenDo

Dim mm = children.nextif m <> "" Thendocument.write "<BR>", m

End IfLoop Until m = ""document.write "<BR>"

Crea una directory con il nome indicato tra “”.

Sicurezza su Reti a.a. 2001/2002

Manipolazione file binaridocument.write "<br>Writing the file..."

ba.create_bstr"1234567890123456789012345678901234567890123456789012345678"

token.writeBinaryFile "3f0066660001",0,ba

If Err.Number = 0 Thendocument.write "<br>Reading the file..."document.write"<br> data: "set dataRead = token.readBinaryFile ("3f0066660001", 0, 30)

If Err.Number = 0 ThenprintarrayStr dataRead

End IfEnd If

End If

Si effetua una scrittura nel file binario della variabile ba.

Si effettua una lettura nel file binario.

Sicurezza su Reti a.a. 2001/2002

Manipolazione file binaridocument.write "<br>Deleting file..."

token.del "3f0066660001"End If

End If

document.write "<br>Logging out..."token.logout

End If

document.write "<br>Unlocking token ..."token.unlock

End If

document.write "<br>Detaching from token..."token.detach

End If

Sicurezza su Reti a.a. 2001/2002

Manipolazione file binari

' Error HandlingIf Err.Number <> 0 ThenMsgBox "Error occured (0x" & Hex(Err.Number) & ") description : " & Err.Description ,

vbOKOnly + vbExclamation , "Runtime Error"Err.Clear ' Clear the error.

End If

set token = Nothingset ba = Nothing--></SCRIPT>

Sicurezza su Reti a.a. 2001/2002

Manipolazione file binari

<BR><BR><a href = etoken.htm>Back to eToken Samples main menu</a>

</BODY></HTML>

Page 29: Sommario Etoken: cos’è?ads/corso-security/www/CORSO-0102/eTokenus… · • A cosa serve? • E-Token R2 • E-Token PRO • Funzioni in VB • Esempi applicativi • Programmazione

29

Sicurezza su Reti a.a. 2001/2002