dell’integrazione delle applicazioni, soprattutto relative alla Pubblica Amministrazione, con una maggiore sicurezza applicativa, si rende necessaria la possibilità di una autenticazione con la Carta Nazionale dei Servizi, la smart card per accedere ai servizi online della Pubblica Amministrazione su tutto il territorio nazionale. Perché questo talk… Progettando delle nuove applicazioni, soprattutto in ambiti quali PA o bancarie/assicurative è necessario avere un livello maggiore di sicurezza oltre alle classiche username e password.
in Italia questa tecnologia (o almeno la possibilità di utilizzo) sia già attiva da parecchi anni, è poco utilizzata: in rete, infatti, non abbiamo trovato nessun post in merito. Perché questo talk… Abbiamo quindi deciso …di aiutare gli sviluppatori all’utilizzo di tale tecnologia con talk e guide online. …e di invitare i responsabili di settore ad introdurre questa nuova tecnologia nelle loro applicazioni!
Carta Nazionale dei Servizi (CNS) è una smart card per accedere ai servizi online della Pubblica Amministrazione su tutto il territorio nazionale. E’ lo strumento fondamentale per rendere immediatamente fruibili i servizi già in rete e per accelerarne la diffusione. La CNS è una straordinaria innovazione per una nuova e più efficace interazione tra cittadino e Pubblica Amministrazione. Il Progetto CNS
Progetto CNS La Carta Nazionale dei Servizi è un documento informatico, rilasciato da una Pubblica Amministrazione, con la finalità di identificare in rete il titolare della carta. Utilizza una smart card in grado di registrare in modo protetto le informazioni necessarie per l’autenticazione in rete. Non è un documento di riconoscimento “a vista” come la Carta di Identità elettronica (CIE) perché non contiene la foto del titolare e non richiede particolari caratteristiche e requisiti per il supporto grafico.
comunque al microchip e al software, identici a quelli della CIE, dà accesso agli stessi servizi e consente modalità più flessibili e veloci di produzione e diffusione, anche attraverso canali di distribuzione alternativi rispetto a quelli istituzionali della CIE. La distribuzione della Carta Nazionale dei Servizi va, quindi, in parallelo con il piano di rinnovo delle carte di identità. Nel nostro talk vedremo come è possibile utilizzare indifferentemente la CNS o la CIE. Il Progetto CNS
Carta Nazionale dei Servizi permette: - le funzionalità della firma digitale - l’utilizzo dei servizi in rete da parte del titolare attraverso un certificato di autenticazione della carta, che, in combinazione con il PIN utente, consente le funzioni di riconoscimento in rete - le funzionalità della carta sanitaria (funzione facoltativa) - l’autenticazione del cittadino per servizi anagrafici, modulistica, servizi sanitari, pagamenti online - l’utilizzo per funzioni di pagamento tra privati e Pubblica Amministrazione grazie ai protocolli di intesa tra queste ultime, le banche e le Poste Italiane I Servizi
Identità Digitale (AGID) pubblica periodicamente l'elenco dei certificatori accreditati e i loro certificati in vari formati. La lista contiene i certificati dei certificatori utilizzabili per verificare i certificati di autenticazione a bordo delle CNS. Al fine dell’autenticazione del cittadino in rete è necessario che i server di autenticazione ritengano affidabili i certificati contenuti nella lista, chiamata TLS (Trust Service status List) I formati disponibili sono : XML e PDF leggibile. Certificatori
Sanitaria come CNS La TS-CNS rappresenta l'evoluzione "tecnologica" della Tessera Sanitaria (TS) in quanto oltre ai servizi sanitari normalmente offerti dalla tessera sanitaria nazionale permette l'accesso ai servizi in rete offerti dalla Pubblica Amministrazione in assoluta sicurezza e nel rispetto della privacy. La TS-CNS e' gratuita, viene spedita a tutti i cittadini assistiti dal Servizio Sanitario Nazionale in sostituzione, alla scadenza, dell'attuale Tessera Sanitaria ed ha, normalmente, validità di sei anni, o pari alla durata del permesso di soggiorno.
futuro… L’Anagrafe Nazionale Popolazione Residente (ANPR) si realizza come unica banca dati con le informazioni anagrafiche della popolazione residente a cui faranno riferimento non solo i Comuni, ma l'intera Pubblica amministrazione e tutti coloro che sono interessati ai dati anagrafici, in particolare i gestori di pubblici servizi. Agenda Digitale, questa sconosciuta! L'Agenda Digitale Italiana rappresenta l'insieme di azioni e norme per lo sviluppo delle tecnologie, dell'innovazione e dell'economia digitale. L’Agenda Digitale è una delle sette iniziative faro della strategia Europa 2020, che fissa gli obiettivi per la crescita nell’Unione europea da raggiungere entro il 2020.
futuro… Con l'istituzione del Sistema Pubblico per la gestione dell'Identità Digitale di cittadini e imprese (SPID) le pubbliche amministrazioni potranno consentire l'accesso in rete ai propri servizi, oltre che con lo stesso SPID, solo mediante la carta d'identità elettronica e la carta nazionale dei servizi. La possibilità di accesso con carta d'identità elettronica e carta nazionale dei servizi resta comunque consentito indipendentemente dalle modalità predisposte dalle singole amministrazioni.
futuro… Partito l’accreditamento per i gestori di identità digitale SPID : dal momento in cui verrà ufficializzata da AgID l’iscrizione nel registro SPID del primo Identity Provider, le pubbliche amministrazioni avranno 24 mesi di tempo per adeguare i sistemi di login dei propri siti all’accesso tramite SPID. Le sei Regioni (Piemonte, Emilia Romagna, Toscana, Liguria, Marche, Friuli Venezia Giulia), Agenzia delle Entrate, Inps e Inail, che hanno partecipato alla fase di test del sistema, permetteranno l’accesso ai propri servizi digitali tramite identità SPID già da fine anno. Comunicato Stampa del 15 Settembre 2015
CNS sono smartcard basate su standard ISO/IEC 7816: Alcune caratteristiche: ⁃ basato su un dispositivo esterno contenente un chip di cifratura, non accessibile o duplicabile normalmente ⁃ l'accesso è regolato tramite un codice PIN, e un PUK in caso di tentativi multipli errati di accesso ⁃ un certificato di firma digitale basato su standard X.509 ⁃ un identificativo univoco della carta ⁃ i dati personali del possessore quali codice fiscale, nome,cognome Alcune note tecniche
CNS permettono l'autenticazione presso i servizi della pubblica amministrazione: ciò avviene mediante l'utilizzo del certificato X.509 presente in ognuna di essa. L'utente una volta configurato il proprio dispositivo, presenterà il proprio certificato all'applicazione come credenziali di accesso e in questo modo può essere riconosciuto senza l'utilizzo di username/password e in modo sicuro. Alcune note tecniche
X.509 X.509 è uno standard ITU-T per le infrastrutture a chiave pubblica (PKI). Definisce formati standard per i certificati a chiave pubblica, certificati di attributo ed un certification path validation algorithm. Ogni certificato viene rilasciato da una certification authority (CA) che accoppia una chiave pubblica ad un Nome Distintivo (o Common Name). Include anche gli standard per le implementazioni di certificate revocation list (CRL, liste di revoca di certificati), un aspetto spesso sottovalutato dei sistemi PKI.
X.509 La modalità di controllo della validità di un certificato approvata dall'IETF si chiama Online Certificate Status Protocol (OCSP). Un sistema informativo che vuole fornire ai suoi utenti la possibilità di accesso mediante un certificato dovrà avere a disposizione una lista di CA con cui sia possibile identificarsi e i relativi certificati.
1 Installare le CA sul nodo che regola l'accesso ⁃ recuperare i certificati delle CA da cui volete che sia possibile l'accesso dalla TSL ⁃ convertire i certificati in un formato utilizzabile dall'AS ⁃ i certificati sono in formato .cer, mentre normalmente Apache e derivati richiedono formati .pem ⁃ vengono di solito inseriti in un unico file denominato SSL Certification Chain in formato .crt
python gratuito che automatizza gran parte della procedura: https://gist.github.com/3v1n0/e371f58162795e0635f2 COME UTILIZZARE LO SCRIPT mkdir /var/tmp/certs ./parse-gov-certs.py --output-folder /var/tmp/certs Convertirà tutti i certificati in formato .pem nella cartella /var/tmp/certs Adesso scegliamo quali certificati accettare aggiungendoli tutti in fondo ad un file .crt cd /var/tmp/certs cat * >> /etc/pki/tls/certs/ca-CNS-bundle.crt STEP 1 - Pratica
un file di configurazione di apache (o createne uno nuovo) e all'interno di una direttiva VirtualHost inserite: SSLEngine on SSLProtocol +TLSv1.1 +TLSv1.2 SSLVerifyClient require SSLVerifyDepth 4 SSLOptions +ExportCertData +StdEnvVars SSLCACertificateFile /etc/pki/tls/certs/ca-CNS-bundle.crt STEP 2
vogliamo che il nodo abbia anche la funzione di reverse proxy utilizzeremo la direttiva: <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /app/ ajp://localhost:8009/app/ ProxyPassReverse / ajp://localhost:8009/app/ Dove app è il Context Url di una applicazione installata su un server locale che supporta ajp. STEP 3
4 public class SecurityConfig { @Configuration public static class FormLoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { @Autowired @Qualifier(“cnsUserDetailsService”) private UserDetailsService cnsUserDetailsService; @Override protected void configure(HttpSecurity http) throws Exception { http .csrf() .and() .x509().userDetailsService(cnsUserDetailsService); } } } Esempio in J2EE/Spring Security private String parseCommonName(String commonName) { if (commonName.contains(CF_SEPARATOR)){ commonName =commonName.substring(commonName.indexOf(“\””)+1, commonName.indexOf(CF_SEPARATOR)); LOG.info("CODICE FISCALE:{}",commonName); } return commonName; } Il common name ricevuto dalla funzione sarà in formato “codiceFiscale/codice_identificativo_hash_certificato” , eccone un esempio approsimato commonName:\"PRRFNC91XXXXXXXXX/1205100000658867.b5QRhzT+5BkQaw1slnemfdgirrY=\"
Utili Apache 2 Mette a disposizione molte funzionalità fondamentali per un applicazione a livello enterprise. Può funzionare da load balancer, gestire diversi configurazioni a seconda del dominio di accesso, interfacciarsi con molti altri application server tramite mod_proxy permettendo di far convivere fra di loro sistemi molto diversi Usate sistemi basati su Unix Apache ha una perfetta sinergia con questi sistemi, fornendo molte funzionalità lato OS che lato Apache per facilitare la gestione di sistemi complessi.
per gradi - Configurate per primo l'HTTPS e assicuratevi di non essere bloccati da firewall o selinux - Configurate l'accesso tramite dei certificati di prova e CA di prova (ne trovate online o createne una ad-hoc magari simile ai certificati della CNS in modo da assicurarvi che avete configurato l'autenticazione correttamente - Create una pagina di prova in php che effettui il dump del certificato ricevuto, potreste voler controllare l’interno di un certificato in caso siate impossibilitati a collegarvi in debug all'ambiente o che il certificato venga propagato dal server alle applicazioni Consigli Utili
per gradi - Installate i certificati e provate a fare un giro completo - Fate in modo che la vostra applicazione sia accessibile tramite username/password almeno in ambiente di test Consigli Utili I certificati non rendono la vostra applicazione inviolabile - ricordatevi di coprire le più note vulnerabilità segnate da OWASP!
La CNS rappresenta senz'altro un metodo molto robusto di autenticazione: - con le dovute accortezze può essere anche facilmente implementabile, la diffusione delle applicazione sarà certamente un fattore determinante del suo successo o dell'ennesimo fallimento - le smartcard sono tuttavia ancora afflitte da tecnologia proprietaria e know-how difficilmente reso pubblico - questa modalità di autenticazione potrebbe essere adottata e omogeneizzata in tutta l'area europea - presenta certamente problemi di privacy