Cifratura delle Password

Gli oggetti censiti nel registro di GovWay che possiedono una password sono i seguenti:

  • le utenze delle console di gestione e monitoraggio (descritte nella sezione Utenti);

  • gli applicativi e i soggetti registrati con credenziali “http-basic” (sezione Credenziali “http-basic”);

  • gli applicativi e i soggetti registrati con credenziali “api-key”; in questo caso viene cifrata la chiave di identificazione univoca (sezione Credenziali “api-key”).

Le password vengono cifrate per default con un algoritmo di cifratura: SHA-512-based Unix crypt ($6$).

Nota

Per garantire la retrocompatibilità con le utenze esistenti precedenti alla versione 3.3.2 di GovWay, la verifica delle password viene attuata anche usando il precedente algoritmo. La verifica in modalità “backward compatibility” può essere disattivata, una volta migrate tutte le password al nuovo formato di cifratura, agendo sul file <directory-lavoro>/consolePassword.properties:

# Abilitare l'opzione seguente per poter autenticare:
# - le utenze delle console esistenti memorizzate con la precedente cifratura MD5
# - le password 'basic' degli applicativi/soggetti memorizzati in chiaro
passwordEncrypt.backwardCompatibility=false

È possibile modificare il tipo di cifratura configurando i parametri presenti nel file <directory-lavoro>/consolePassword.properties:

# Tipo di cifratura (enum org.openspcoop2.utils.crypt.CryptType)
passwordEncrypt.type=SHA2_BASED_UNIX_CRYPT_SHA512
# In alternativa alla definizione di un tipo, è possibile fornire una classe che implementa l'interfaccia org.openspcoop2.utils.crypt.ICrypt
#passwordEncrypt.customType=className

# Charset utilizzato per le password
#passwordEncrypt.charsetName=UTF-8

# Parametri per il calcolo del 'salt'
passwordEncrypt.salt.length=16
passwordEncrypt.salt.secureRandom=true
#passwordEncrypt.salt.secureRandomAlgorithm=SHA1PRNG

# Parametri per il calcolo del Digest
#passwordEncrypt.digestAlgorithm=
#passwordEncrypt.iteration=intNumber

# Output format
#passwordEncrypt.base64Encoding=true/false

I tipi di cifratura supportati sono:

  • SHA2_BASED_UNIX_CRYPT_SHA256 e SHA2_BASED_UNIX_CRYPT_SHA512: SHA2-based Unix crypt in variante SHA-256 e SHA-512; consentono la personalizzazione del “salt” e del numero di iterazioni (“rounds”).

  • LIBC_CRYPT_MD5 e LIBC_CRYPT_MD5_APACHE: libc crypt() MD5 «$1$» e variante Apache «$apr1$»; consentono la personalizzazione del “salt”.

  • DES_UNIX_CRYPT: Unix crypt(3) DES; consente la personalizzazione del “salt”.

  • RFC2307_MD5, RFC2307_SMD5, RFC2307_SHA e RFC2307_SSHA: RFC2307 in variante MD5, SMD5, SHA e SSHA; non consente alcuna personalizzazione.

  • JASYPT_BASIC_PASSWORD e JASYPT_STRONG_PASSWORD: Jasypt in variante basic e strong; non consente alcuna personalizzazione.

  • JASYPT_CUSTOM_PASSWORD: Jasypt custom configurabile per “salt”, numero di iterazioni, algoritmo di digest e codifica base64/hex.

  • PBE_KEY_SPEC: PBE Key Spec configurabile per “salt”, numero di iterazioni, algoritmo di digest e codifica base64/hex.

  • B_CRYPT e S_CRYPT: BCrypt e SCrypt; non consente alcuna personalizzazione.

  • PLAIN: le password vengono salvate in chiaro