Strong Authentication in Web Application #SCS III

89
Sylvain Maret / Digital Security Expert / OpenID Switzerland @smaret Version 1.0 / 2PM Strong Authentication in Web Application “State of the Art 2011”

description

Swiss Cyber Storm 3 Security Conference / OWASP TrackStrong Authentication: State of the Art 2011 Risk Based Authentication Biometry - Match on Card OTP for Smartphones OTP SMS PKI SuisseID Mobile-OTP OATH (HOTP, TOTP, OCRA) Open Source approachHow to integrate Strong Authentication in Web Application? OpenID, SAML, Identity Federation for Strong Authentication API, SDK, Agents, Web Services, Modules PAM, Radius, JAAS Reverse Proxy (WAF) and WebSSO PKI / SSL client authentication PHP example with Multi-OTP PHP class AppSec (Threat Modeling - OWASP)

Transcript of Strong Authentication in Web Application #SCS III

Page 1: Strong Authentication in Web Application #SCS III

Sylvain Maret / Digital Security Expert / OpenID Switzerland

@smaret

Version 1.0 / 2PM

Strong Authentication in Web Application

“State of the Art 2011”

Page 2: Strong Authentication in Web Application #SCS III
Page 3: Strong Authentication in Web Application #SCS III

RSA FAILED ?

Page 4: Strong Authentication in Web Application #SCS III

Who am I?

Security Expert

17 years of experience in ICT Security

Principal Consultant at MARET Consulting

Expert at Engineer School of Yverdon & Geneva University

Swiss French Area delegate at OpenID Switzerland

Co-founder Geneva Application Security Forum

OWASP Member

Author of the blog: la Citadelle Electronique

http://ch.linkedin.com/in/smaret or @smaret

http://www.slideshare.net/smaret

Chosen field

AppSec & Digital Identity Security

Page 5: Strong Authentication in Web Application #SCS III

Protection of digital identities: a topical issue…

Strong Auth

Page 6: Strong Authentication in Web Application #SCS III

«Digital identity is the cornerstone of trust»

http://fr.wikipedia.org/wiki/Authentification_forte

Page 7: Strong Authentication in Web Application #SCS III

Definition of strong authentication

Strong Authentication on Wikipedia

Page 8: Strong Authentication in Web Application #SCS III

Strong Authentication

A new paradigm?

Page 9: Strong Authentication in Web Application #SCS III

Which Strong Authentication technology ?

Legacy Token / OTP / PKI / SuisseID ? / Open Source Solution ?

Page 10: Strong Authentication in Web Application #SCS III
Page 11: Strong Authentication in Web Application #SCS III

OTP PKI (HW) Biometry

Strong

authentication

Encryption

Digital signature

Non repudiation

Strong link with

the user

Page 12: Strong Authentication in Web Application #SCS III

Strong Authentication

with PKI

Page 13: Strong Authentication in Web Application #SCS III

PKI: Digital Certificate

Software Certificate

(PKCS#12;PFX)

Hardware Token (Crypto PKI)

Strong Authentication

Page 14: Strong Authentication in Web Application #SCS III

SSL/TLS Mutual Authentication : how does it work?

Web Server

Alice

Validation

Authority

Valid

Invalid

Unknown

CRL

or

OCSP Request

SSL / TLS Mutual Authentication

Page 15: Strong Authentication in Web Application #SCS III

Demo #1: Software Certificate Auth using an IDP OpenID

http://www.clavid.com/

Page 16: Strong Authentication in Web Application #SCS III

Strong Authentication with Biometry (Match on Card technology)

A reader

Biometry

SmartCard

A card with chip

Technology MOC

Crypto Processor

PC/SC

PKCS#11

Digital certificate X509

Page 17: Strong Authentication in Web Application #SCS III

Strong Authentication

With

(O)ne (T)ime (P)assword

Page 18: Strong Authentication in Web Application #SCS III

(O)ne (T)ime (P)assword

OTP Time Based

Like SecurID

OTP Event Based

OTP Challenge

Response Based

Others:

OTP via SMS

OTP via email

Biometry and OTP

Bingo Card

Etc.

Page 19: Strong Authentication in Web Application #SCS III

OTP T-B?

OTP E-B?

OTP C-R-B?

Crypto - 101

Page 20: Strong Authentication in Web Application #SCS III

Crypto-101 / Time Based OTP

ie = OTP(K,T) = Truncate(HMAC-SHA-1(K,T))

K=Secret Key / Seed

T=UTC Time

HASH Function

OTP

Page 21: Strong Authentication in Web Application #SCS III

Crypto-101 / Event Based OTP

ie = OTP(K,C) = Truncate(HMAC-SHA-1(K,C))

K=Secret Key / Seed

C = Counter

HASH Function

OTP

Page 22: Strong Authentication in Web Application #SCS III

Crypto-101 / OTP Challenge Response Based

K=Secret Key / Seed

nonce

HASH Function

OTP

Challenge

ie:

Page 23: Strong Authentication in Web Application #SCS III

Other[s] OTP technologies…

OTP Via SMS

By Elcard

“Flicker code” Generator Software

that converts already

encrypted data into

optical screen animation

Page 24: Strong Authentication in Web Application #SCS III

Demo #2: Protect WordPress (OTP Via SMS)

Page 25: Strong Authentication in Web Application #SCS III

How to Store

my Secret Key ?

A Token !

Page 26: Strong Authentication in Web Application #SCS III

OTP Token: Software vs Hardware ?

Page 27: Strong Authentication in Web Application #SCS III

Software OTP for Smartphone

http://itunes.apple.com/us/app/iotp/id328973960

Page 28: Strong Authentication in Web Application #SCS III
Page 29: Strong Authentication in Web Application #SCS III

Where are[is] the seed ?

Page 30: Strong Authentication in Web Application #SCS III
Page 31: Strong Authentication in Web Application #SCS III

Seed generation & distribution ? Still a good model ?

Editor / Vendor

Secret Key are[is]

generated on promise

K1

K1 K1

Threat

Agent

(APT)

Page 32: Strong Authentication in Web Application #SCS III

TokenCode

Page 33: Strong Authentication in Web Application #SCS III

New Standards

&

Open Source

Page 34: Strong Authentication in Web Application #SCS III

Technologies accessible to everyone

Initiative for Open AuTHentication (OATH)

HOTP

TOTP

OCRA

Etc.

Mobile OTP

(Use MD5 …..)

Page 35: Strong Authentication in Web Application #SCS III

Initiative for Open AuTHentication (OATH)

HOTP

Event Based OTP

RFC 4226

TOTP

Time Based OTP

Draft IETF Version 8

OCRA

Challenge/Response OTP

Draft IETF Version 13

Token Identifier

Specification

IETF KeyProv Working Group

PSKC - Portable Symmetric Key

Container, RFC 6030

DSKPP - Dynamic Symmetric

Key Provisioning Protocol, RFC

6063

And more !

http://www.openauthentication.org/specifications

Page 36: Strong Authentication in Web Application #SCS III

(R)isk

(B)ased

(A)uthentication

Page 37: Strong Authentication in Web Application #SCS III

RBA (Risk-Based Authentication) = Behavior Model

Page 39: Strong Authentication in Web Application #SCS III
Page 40: Strong Authentication in Web Application #SCS III

Integration with

web application

Page 41: Strong Authentication in Web Application #SCS III

Web application: basic authentication model

Page 42: Strong Authentication in Web Application #SCS III

Web application: Strong Authentication Implementation Blueprint

Page 43: Strong Authentication in Web Application #SCS III

“Shielding" approach: perimetric authentication using Reverse Proxy / WAF

Page 44: Strong Authentication in Web Application #SCS III

Module/Agent-based approach (example)

Page 45: Strong Authentication in Web Application #SCS III

Demo #3: Apache and Mod_OpenID (Using Biometry / OTP)

Page 46: Strong Authentication in Web Application #SCS III

Demo #3: Challenge / Response OTP with Biometry

Page 47: Strong Authentication in Web Application #SCS III

API/SDK based approach (example)

Page 48: Strong Authentication in Web Application #SCS III

Multi OTP PHP Class Demo #4 & Hardening OS

Page 49: Strong Authentication in Web Application #SCS III

Proof of Concept Code by

Anne Gosselin, Antonio Fontes, Sylvain Maret !

if (! empty($_REQUEST['pma_username'])) {

// The user just logged in

$GLOBALS['PHP_AUTH_USER'] = $_REQUEST['pma_username'];

// we combine both OTP + PIN code for the token verification

$fooPass = empty($_REQUEST['pma_password']) ? '' : $_REQUEST['pma_password'];

$fooOtp = empty($_REQUEST['pma_otp']) ? '' : $_REQUEST['pma_otp'];

$GLOBALS['PHP_AUTH_PW'] = $fooPass.''.$fooOtp;

// OTP CHECK

require_once('./libraries/multiotp.class.php');

$multiotp = new Multiotp();

$multiotp->SetUser($GLOBALS['PHP_AUTH_USER']);

$multiotp->SetEncryptionKey('DefaultCliEncryptionKey');

$multiotp->SetUsersFolder('./libraries/users/');

$multiotp->SetLogFolder('./libraries/log/');

$multiotp->EnableVerboseLog();

$otpCheckResult = $multiotp->CheckToken($GLOBALS['PHP_AUTH_PW']);

// the PIN code use kept for accessing the database

$GLOBALS['PHP_AUTH_PW'] = substr($GLOBALS['PHP_AUTH_PW'], 0, strlen($GLOBALS['PHP_AUTH_PW'])

if($otpCheckResult == 0)

return true;

else

die("auth failed.");

Page 50: Strong Authentication in Web Application #SCS III

Howto #1

Step1: Add a new method using cookie authentication

In config.inc.php

Page 51: Strong Authentication in Web Application #SCS III

Step2: Add pma_otp field

In common.inc.php

Page 52: Strong Authentication in Web Application #SCS III

Step3: Add new input

File ori: cookie.auth.lib.php

New file: cookieotp.auth.lib.php

Page 53: Strong Authentication in Web Application #SCS III

File ori: cookie.auth.lib.php

Page 54: Strong Authentication in Web Application #SCS III

Step3: Call multiotpNew file: cookieotp.auth.lib.php

Page 55: Strong Authentication in Web Application #SCS III

Demo 4#: PHP[OTP] integration for[in] phpmyadmin

Page 56: Strong Authentication in Web Application #SCS III

Multi OTP PHP Class by André Liechti (Switzerland)

http://www.multiotp.net/

Source Code will be publish soon:

http://www.citadelle-electronique.net/

Page 57: Strong Authentication in Web Application #SCS III
Page 58: Strong Authentication in Web Application #SCS III

SSH Hardening with OTP Multi OTP PHP Class

PAM

AES 256

Page 59: Strong Authentication in Web Application #SCS III

Strong Authentication and Application SecurityStrong Authentication

&

Application Security

Page 60: Strong Authentication in Web Application #SCS III

Threat Modeling

“detecting web application

threats before coding”

Page 61: Strong Authentication in Web Application #SCS III

ICAM:

a changing paradigm

on Strong Authentication

Page 62: Strong Authentication in Web Application #SCS III

Federation of identity approach a change of paradigm:

using IDP for Authentication and Strong Authentication

Identity Provider

SAML, OpenID, etc

Page 63: Strong Authentication in Web Application #SCS III

OpenID> What is it?

> How does it work?

> How to integrate?

SECTION 2

Page 64: Strong Authentication in Web Application #SCS III

OpenID - What is it?

> Internet SingleSignOn

> Relatively Simple Protocol

> User-Centric Identity Management

> Internet Scalable

> Free Choice of Identity Provider

> No License Fee

> Independent of Identification Methods

> Non-Profit Organization

Page 65: Strong Authentication in Web Application #SCS III

OpenID - How does it work?

1

3

5

Enabled Service

Identity Providere.g. clavid.com

6

4, 4a

hans.muster.clavid.com

User Hans Muster

Caption

1. User enters OpenID

2. Discovery

3. Authentication

4. Approval

4a. Change Attributes

5. Send Attributes

6. Validation

2 Identity URLhttps://hans.muster.clavid.com

Page 66: Strong Authentication in Web Application #SCS III

Surprise! You may already

have an OpenID !

Page 67: Strong Authentication in Web Application #SCS III

Other Well Known

&

Simple Providers

http://en.wikipedia.org/wiki/List_of_OpenID_providers

Page 68: Strong Authentication in Web Application #SCS III

Get an OpenID with Strong Authentication for free !

Page 69: Strong Authentication in Web Application #SCS III

Questions ?

Page 72: Strong Authentication in Web Application #SCS III

Backup Slides

Page 73: Strong Authentication in Web Application #SCS III

Kerckhoffs's Principle ?

Page 74: Strong Authentication in Web Application #SCS III

Une conviction forte !

Authentification forte

Page 75: Strong Authentication in Web Application #SCS III

SECTION 1

SAML>What is it?

>How does it work?

Page 76: Strong Authentication in Web Application #SCS III

Using SAML for Authentication and Strong Authentication

(Assertion

Consumer Service)

Page 77: Strong Authentication in Web Application #SCS III

SAML – What is it?

SAML (Security Assertion Markup Language):

> Defined by the Oasis Group

> Well and Academically Designed Specification

> Uses XML Syntax

> Used for Authentication & Authorization

> SAML Assertions> Statements: Authentication, Attribute, Authorization

> SAML Protocols> Queries: Authentication, Artifact, Name Identifier Mapping, etc.

> SAML Bindings> SOAP, Reverse-SOAP, HTTP-Get, HTTP-Post, HTTP-Artifact

> SAML Profiles> Web Browser SingleSignOn Profile, Identity Provider Discovery Profile, Assertion Query

/ Request Profile, Attribute Profile

Page 78: Strong Authentication in Web Application #SCS III

SAML – How does it work?

Identity Providere.g. clavid.ch

User Hans Muster

Enabled Service

e.g. Google Apps

for Business

12

2

6

3

4

4

Page 79: Strong Authentication in Web Application #SCS III

Example with HTTP POST Binding

+ PIN

Web App SAML Ready

AuthN

ACS

Ressource

IDP MC

Access Resource

1

3 <AuthnRequest>

Redirect 302

Single Sign On

Service

4<AuthnRequest>

Credential

Challenge 5a

User Login

<Response>

in HTML Form 6

7POST

<Response>

8Ressource

Browser

2

5b

Page 80: Strong Authentication in Web Application #SCS III

A major event in the world of strong authentication

12 October 2005: the Federal Financial Institutions Examination Council (FFIEC) issues a directive

« Single Factor Authentication » is not enough for the web financial applications

Before end 2006 it is compulsory to implement a strong authentication system

http://www.ffiec.gov/press/pr101205.htm

And the PCI DSS norm Compulsory strong authentication for distant accesses

And now European regulations Payment Services (2007/64/CE) for banks

Social Networks, Open Source

Page 81: Strong Authentication in Web Application #SCS III

Out of Band Authentication

Page 82: Strong Authentication in Web Application #SCS III

Phone Factor

Page 83: Strong Authentication in Web Application #SCS III

SAML

Page 84: Strong Authentication in Web Application #SCS III

SAML AuthnRequst Transfer via Browser

Redirect-Binding

POST-Binding

Page 85: Strong Authentication in Web Application #SCS III

A SAML AuthnRequest (no magic, just XML)

<?xml version="1.0" encoding="UTF-8"?>

<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol“

ID="glcmfhikbbhohichialilnnpjakbeljekmkhppkb“

Version="2.0”

IssueInstant="2008-10-14T00:57:14Z”

ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST”

ProviderName="google.com”

ForceAuthn="false”

IsPassive="false”

AssertionConsumerServiceURL="https://www.google.com/a/unopass.net/acs">

<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">

google.com

</saml:Issuer>

<samlp:NameIDPolicy AllowCreate="true"

Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" />

</samlp:AuthnRequest>

Page 86: Strong Authentication in Web Application #SCS III

SAML Assertion Transfer via Browser

POST-Binding

Page 87: Strong Authentication in Web Application #SCS III

A SAML Assertion Response (no magic, just XML)

<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"

ID="s247893b2ec90665dfd5d9bd4a092f5e3a7194fef4"

InResponseTo="hkcmljnccpheoobdofbjcngjbadmgcfhaapdbnni"

Version="2.0"

IssueInstant="2008-10-15T17:24:46Z"

Destination="https://www.google.com/a/unopass.net/acs">

<saml:Issuer>

http://idp.unopass.net:80/opensso

</saml:Issuer>

<samlp:Status>

<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>

</samlp:Status>

<saml:Assertion

ID="s295c56ccd7872209ae336b934d1eed5be52a8e6ec"

IssueInstant="2008-10-15T17:24:46Z"

Version="2.0">

<saml:Issuer>http://idp.unopass.net:80/opensso</saml:Issuer>

<Signature>

… A DIGITAL SIGNATURE …

</Signature>

...

Page 88: Strong Authentication in Web Application #SCS III

A SAML Assertion Response (no magic, just XML)

...

<saml:Subject>

<saml:NameID

NameQualifier="http://idp.unopass.net:80/opensso">

sylvain.maret

</saml:NameID>

<saml:SubjectConfirmation Method="urn:oasis:...:bearer">

<saml:SubjectConfirmationData

InResponseTo="hkcmljnccpheoobdofbjcngjbadmgcfhaapdbnni"

NotOnOrAfter="2008-10-15T17:34:46Z"

Recipient="https://www.google.com/a/unopass.net/acs"/>

</saml:SubjectConfirmation>

</saml:Subject>

...

Page 89: Strong Authentication in Web Application #SCS III

A SAML Assertion Response (no magic, just XML)

...

<saml:Conditions NotBefore="2008-10-15T17:14:46Z"

NotOnOrAfter="2008-10-15T17:34:46Z">

<saml:AudienceRestriction>

<saml:Audience>google.com</saml:Audience>

</saml:AudienceRestriction>

</saml:Conditions>

<saml:AuthnStatement AuthnInstant="2008-10-15T17:24:46Z“

SessionIndex="s2bb816b5a8852dcc29f3301784c1640f245a9ec01">

<saml:AuthnContext>

<saml:AuthnContextClassRef>

urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport

</saml:AuthnContextClassRef>

</saml:AuthnContext>

</saml:AuthnStatement>

</saml:Assertion>

</samlp:Response>