Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student...

21
Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Depa Corso Svizzera, 185 – 10149, Torino, Italy [email protected] Sperimentazioni di sicurezza A.A. 2009-2010

Transcript of Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student...

Page 1: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Sperimentazioni di Sicurezza, A.A. 2009/2010

OpenIDOpenID

Speaker:Luca Maria Aiello, PhD studentUniversità degli Studi di Torino, Computer Science DepartmentCorso Svizzera, 185 – 10149, Torino, [email protected]

Sperimentazioni di sicurezza A.A. 2009-2010

Page 2: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Cos’è OpenID?

o OpenID è un protocollo per l’autenticazione utente basato sul principio del Single Sign On• Progettato per essere utilizzato nell’ambito di

servizi web• Un utente può riutilizzare la stessa identità

digitale per accedere a diversi servizio Ideato da Bradley Fitzpatrick (creatore di

LiveJournal) nel 2005o Attualmente alla versione 2.0o Sito ufficiale: http://openid.net

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 3: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Schema protocollare generale

o OpenID Provider (OP), Relying Party (RP), User Agent (UA)o Passi:

• L’utente inserisce uno User-Supplied Identifier sul RP tramite lo UA.• Normalizzazione

• youropenid.com http://youropenid.com• Discovery• Association (shared secret tra OP e RP)• RP redirige UA verso OP con una richiesta di autenticazione• OP stabilisce se l’utente è autorizzato o meno• OP redirige UA verso RP• RP verifica le informazioni ottenute

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 4: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Architettura e protocollo

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 5: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Alcuni Identity Provider…

Visitare http://openiddirectory.com per un elenco esteso

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 6: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Come ottenere un OpenID?

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 7: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Creazione di un identificatore OpenID

o OpenID provider• http://www.myopenid.com

o Seguire la procedura guidata “Sign Up For An OpenID”• Obiettivo: ottenere un identificatore del tipo

http://vashthestampede.myopenid.com• Possibilità di inserire informazioni aggiuntive (Cognome, Nome,

Sesso, Eta’, etc…)• Diverse “Persona” (da utilizzare in differenti servizi)

o Una volta ottenuto un OpenID, testarlo presso un servizio abilitato• Provate http://www.ziki.com

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 8: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Obiettivo del laboratorio

o Sviluppare un sito web minimale che effettui un controllo degli accessi tramite OpenID, anziché con username e password• Integrazione con un OpenID consumer• Interazione con un OpenID provider• Uso della OpenID delegation

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 9: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Identity provider

o La configurazione di rete del laboratorio (firewall) non consente al sito web disponibile sulla rete locale di interagire con un OpenID provider al di fuori della rete dipartimentale

o Installeremo un semplicissimo identity provider interno• phpMyId, una semplice implementazione in PHP di un identity

provider• Single-user• Dipendenze minimali• Nessun database

• Download: http://siege.org/projects/phpMyID (versione 0.9)

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 10: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Configurazione phpMyID (1)

o Potete installare localmente il providero Posizionare il pacchetto nella document rooto Lanciare http://sito:port/phpMyID/MyID.config.php per

controllarne l’installazioneo Scelti username e password

• echo -n 'username:realm:password' | openssl md5o Inserire il valore ottenuto nel campo auth_passwordo Configurare (opzionale) i dati sul profilo

• ‘nickname’, ‘email’,’fullname’ ,’dob’, ‘gender’, ‘postcode’, ‘country’, ‘language’, ‘timezone’;

o Configurare le eventuali features opzionalio Per maggiori info vedere il README

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 11: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Configurazione phpMyID (2)

<?php// IF YOU HAVE NOT DONE SO, PLEASE READ THE README FILE FOR DIRECTIONS!!!/** * phpMyID - A standalone, single user, OpenID Identity Provider * * @package phpMyID * @author CJ Niemira <siege (at) siege (dot) org> * @copyright 2006-2008 * @license http://www.gnu.org/licenses/gpl.html GNU Public License * @url http://siege.org/projects/phpMyID * @version 2 *//** * User profile * @name $profile * @global array $GLOBALS['profile'] */$GLOBALS['profile'] = array(

# Basic Config - Required'auth_username' => 'test','auth_password' => '37fa04faebe5249023ed1f6cc867329b',

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 12: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Configurazione phpMyID (3)

# Optional Config - Please see README before setting these# 'microid' => array('[email protected]', 'http://delegator.url'),# 'pavatar' => 'http://your.site.com/path/pavatar.img',

# Advanced Config - Please see README before setting these# 'allow_gmp' => false,# 'allow_test' => false,# 'auth_realm' => 'phpMyID',# 'force_bigmath' => false,# 'idp_url' => 'http://your.site.com/path/MyID.config.php',# 'lifetime' => 1440,# 'paranoid' => false, # EXPERIMENTAL

# Debug Config - Please see README before setting these# 'debug' => false,# 'logfile' => '/tmp/phpMyID.debug.log',);

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 13: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Configurazione phpMyID (4)

/** * Simple Registration Extension * @name $sreg * @global array $GLOBALS['sreg'] */$GLOBALS['sreg'] = array (# 'nickname' => 'Joe',# 'email' => '[email protected]',# 'fullname' => 'Joe Example',# 'dob' => '1970-10-31',# 'gender' => 'M',# 'postcode' => '22000',# 'country' => 'US',# 'language' => 'en',# 'timezone' => 'America/New_York');require('MyID.php');?> Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 14: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Configurazione phpMyID (5)

o Per testare la corretta configurazione• http://yourdomain.com/path/to/MyID.config.php?openid.mode=login

o Per effettuare il log out• http://yourdomain.com/path/to/MyID.config.php?openid.mode=logout

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 15: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Consumer

o Utilizzeremo PHP-OpenID• Sviluppato da JanRain• Può essere usato anche come provider• Download: http://openidenabled.com/php-openid (versione

2.1.3)o Potete utilizzare qualunque altra libreria consumer a vostro

piacimento• Alcuni pacchetti “open”: http://wiki.openid.net/Libraries• Esistono implementazioni in diversi linguaggi di

programmazione…

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 16: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Installazione e prova del consumer

o Copiare la directory consumer nel sottoalbero dei documenti pubblici di Apache

o Copiare la directory Auth nella cartella consumer o Accedere alla pagina Consumer/index.phpo Specificare il proprio URL nel form

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 17: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Delegation

o Può essere comodo rendere indipendente il proprio identificatore dal particolare Identity provider in uso

o Si sceglie come identificatore l’URL del sito web personaleo Nella pagina dell’URL, si aggiungono le direttive openid.server e

openid.delegate

<html> <head>

<title>Wolfwood's Blog</title> <link rel="openid.server“ href=“http://www.myopenid.com/server”> <link rel="openid.delegate" href=“http://wolfwood.myopenid.com”>

</head> <body>

V: That cross is awfully heavy!N: That's because it's filled with mercy…

</body> </html>

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 18: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

Consumer e provider alternativi

o Esistono altri provider scritti in PHP:• http://wiki.openid.net/Run_your_own_identity_server

o Un altra libreria consumer è whobar, della Sxip corp.• Pensata per sistemi Unix-Linux ma funziona anche su Windows

con qualche piccola modifica• http://code.sxip.com/whobar/

o Potete utilizzare la combinazione di provider e consumer che preferite

o Esistono anche pacchetti scritti in linguaggi differenti da PHP

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 19: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

OpenID e HTTPS

o Provate a utilizzare https affinché la password inviata all’OpenID provider sia cifrata con una chiave di sessione• Semplice configurazione di Apache…

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 20: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

OpenIDOpenID

Speaker:Luca Maria Aiello, PhD studentUniversità degli Studi di Torino, Computer Science DepartmentCorso Svizzera, 185 – 10149, Torino, [email protected]

Sperimentazioni di sicurezza A.A. 2009-2010

Grazie per l’attenzione!

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 21: Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenID Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department.

©2009 by Luca Maria Aiello. Permission to make digital or hard copies of part or all of this material is currently granted without fee provided that copies are made only for personal or classroom use, are not distributed for profit or commercial advantage, and that new copies bear this notice and the full citation.

Sperimentazioni di Sicurezza, A.A. 2009/2010