SlideShare a Scribd company logo
Authentication Concepts 
Charles Southerland 
Information Warfare 
● Summit 7 
October 1, 2014
The Three “A”s 
●Authentication 
●Authorization 
●Accounting / 
Audting
Accounting / Auditing 
● Log absolutely everything. 
● Know what is in your logs. 
● Protect your logs. 
● See my IWS talk from last 
year.
Accounting / Auditing 
● Log absolutely everything. 
● Know what is in your logs. 
● Protect your logs. 
● SHAMELESS PLUG: 
See my IWS talk from last 
year.
Authorization 
● Authorization is the 
process of determining 
and enforcing which 
privileges an 
authenticated entity has. 
● Most people use Access 
Control Lists to keep track 
of which entities have 
which privileges
Authentication != Authorization 
It is considered best practice to separate 
authentication from authorization so that 
authorization can be easily managed without 
fear of accidentally weakening the 
authentication system and vice versa. 
This is generally accomplished by keeping a 
username and password database used for 
authentication separate from the collection of 
access control lists used for authorization.
Authentication 
Authentication is the 
process of verifying 
that entities truly are 
what they identify 
themselves as.
Username-Only Systems 
● Without authentication, 
anyone would be able to 
lie about their identity. 
● There would be no 
accountability and no 
effective security.
Password-Only Systems 
● Unfortunately, a flawed 
authentication system 
can be about as bad as 
no authentication 
system at all.
Most Authentication Systems 
● The vast majority of 
authentication systems are 
based on a username and 
password. 
● ANOTHER SHAMELESS PLUG: 
My IWS talk from 2011 has 
some suggestions on how to 
approach passwords.
Password Storage 
● As a password is only 
used for authentication, 
only a hash of the 
password must be 
stored, not the password 
itself. 
● FINAL SHAMELESS PLUG: 
My IWS talk from 2012 
covers how to deal with 
passwords correctly.
Credentials 
More generally, authentication is 
accomplished through the verification of 
certain authentication credentials that an 
entity may have access to. 
Usernames and passwords are two 
common types of authentication 
credentials, but there are also other 
types of authentication credentials.
API Tokens 
● Another type of 
authentication credential is 
an API token, which generally 
allows a third-party 
application to access certain 
functionality 
programmatically. 
● It may be an appropriate 
option in some cases,but it is 
awfully similar to the 
password-only system.
OpenID / OAuth 
● OpenID is a system that 
uses URLs from third-party 
websites as an 
authentication credential. 
● OAuth is a system that 
allows the server to 
communicate with one of 
a few providers to obtain, 
among other things, 
authentication credentials 
for a user.
Cookies 
● A cookie is an 
authentication credential 
that is managed by the 
browser and 
automatically sent to the 
server with every 
request.
Captcha 
● A captcha is an 
authentication credential 
that tries to verify that a 
user is a human and not 
a program.
Simple Browser Fingerprint 
● A simple browser 
fingerprint (user agent 
string, some HTTP 
behavior) is often used 
as an authentication 
credential when cookies 
aren't available for some 
reason.
Advanced Browser Fingerprint 
● When simple browser 
fingerprinting is not enough, 
more advanced techniques 
are sometimes used. 
● Sites can use a Flash cookie 
as an authentication 
credential. 
● Recently there have been 
news articles about some 
sites which use canvas 
rendering behaviors as an 
authentication credential.
IP Address 
● A popular authentication 
credential with some 
administrators is the IP 
address of the computer 
attempting to 
authenticate.
Client-Side SSL 
● In my opinion, a client-side SSL 
certificate can make for a particularly 
good authentication credential in 
addition to providing improved transport 
security.
Multi-Factor Token 
● An increasingly popular 
authentication credential is a 
multi-factor authentication token. 
● In addition to the iconic RSA key 
fobs and the increasingly popular 
RFC6238-based systems (like 
Google Authenticator), providers 
like Yubico, Toopher, Duo, and 
Transakt are having more 
mainstream adoption. 
● Unfortunately, my own multi-factor 
system is still on the back-burner
Stateful Credentials 
Some credentials 
have a specific 
relationship to the 
state of the client 
and/or server.
XSRF Tokens 
● Cross-site request forgery 
is a technique often used 
in phishing in order to 
perform actions and/or 
request data while 
authenticated using the 
stored browser cookie. 
● An XSRF token is an 
authentication credential 
that is required for the 
next form submission to 
be accepted.
Anonymous Cookies 
● Nowadays, almost all websites will send the 
browser a cookie as soon as they connect so that 
they can begin tracking behavior as quickly as 
possible. 
● When this cookie is first received, the only 
information associated with it is that the browser 
did not just arrive for the first time.
Cookie Re-association 
● Should the user log in, 
the state of this 
authentication credential 
will change from being 
associated with an 
anonymous browser to 
being an associated with 
an authenticated user.
Partially De-authenticated Cookie 
As another example of a stateful 
authentication credential, if a user were 
accessing a website for some time after 
having authenticated, it may be 
permissable to continue to browse the site, 
but their cookie has changed state to the 
point where it will be necessary to re-authenticate 
before, e.g., purchasing an 
item or sending an email, whereas these 
actions would not have required re-authentication 
before the threshold had 
passed.
Credential Dependencies 
● In some cases, 
credentials can be 
thought of as 
depending on other 
pre-requisite 
credentials.
Unsalted Password Hashes 
● Even unsalted 
password hashes have 
dependencies: 
namely, the password. 
● DON'T FORGET: 
If you use unsalted 
password hashes, you 
will be vulnerable to 
rainbow tables.
Salted Password Hashes 
● The salted password 
hash depends on having 
access to the password 
and the per-user salt 
(another authentication 
credential). 
● Access to the per-user 
salt depends on having 
the username. 
● You could even consider 
having access to the 
database credentials as 
yet another dependency.
Typical Setup of Today 
● An anonymous cookie is used from the beginning (in 
paywalls, the cookie even changes state). 
● To login, the cookie is provided along with the XSRF 
token, the username, and the password. 
● The username gets the salt, the salt and password get 
the hash, and if the hash matches and if the XSRF 
token corresponds to the cookie's, then the user is 
logged in.
Multi-Credential Login 
● In more secure systems, even more authentication 
credentials are required at the same time. 
● It is not uncommon for some sites' login systems to 
depend on most of the following credentials 
simultaneously: a username, a password, a cookie, 
an XSRF token, a captcha, a multi-factor token, an IP 
address, a browser fingerprint, and a canvas 
fingerprint.
Virtual Credentials 
● It can be convenient to 
think of certain 
combinations of stateful 
credentials as being the 
dependencies for a kind of 
virtual credential. 
● For example, whatever 
specific combination of 
those credentials can be 
thought of as the 
dependencies for the 
“logged in” credential.
Region Blocking 
● In some cases, specific IP address ranges can 
help to authenticate whether a user is in a 
particular geographic area. 
● Hmm... some of these more complicated 
authentication concepts look like 
authorization, and that's bad, right?
The Blurry Line 
Now consider a web app that allows you to 
behave as an end user once you've logged 
in, but in order to behave as an 
administrator, you must be logged in and 
come from a specific IP address. 
Is this authentication or authorization?
Even Blurrier 
Now what if instead of coming from a 
specific IP address, you were required to 
use whatever multi-factor token you've set 
up? 
Especially given the notion of virtual 
credentials, couldn't authorization simply 
be a matter of authenticating some specific 
virtual credential with some specific set of 
credential dependencies?
But You Said We Should Use ACLs! 
● You could shoehorn 
some level of 
awareness of these 
authentication ideas 
into your ACLs. 
● Unfortunately, that 
would likely make 
your ACLs 
nightmarishly 
complex, thus 
defeating the 
purpose of ACLs.
Authorization as Virtual Credentials 
● If we instead look at 
authorization as nothing 
more than virtual 
credentials, then access 
to resources would 
simply be a matter of 
authenticating these 
virtual credentials. 
● The equivalent function 
of ACLs would then be 
encoded in the 
dependencies of virtual 
credentials and group 
membership.
Example (Part 1) 
A user goes to a website, where they are given 
a cookie. 
The recorded IP address, the browser 
fingerprint, and the cookie now give them the 
virtual credential of “anonymous user”. 
This virtual credential authorizes them to 
access various pages on the website.
Example (Part 2) 
● The user then goes to the login page, 
where they are given an XSRF token 
that will be associated with their 
cookie. 
● The IP address, the browser 
fingerprint, and (obviously) the cookie 
are still checked every single request 
to continue to authenticate the user.
Example (Part 3) 
● The user enters their username, 
password, and MFA token into the login 
form and submits it. 
● The server immediately checks that the 
IP address, the browser fingerprint, the 
cookie, and the XSRF token all match, 
and if they do, the user now has the 
virtual credential for “authorized form 
submission”.
Example (Part 4) 
● Since the user has the “authorized form 
submission” credential, the server uses 
the username to request the per-user 
salt from the database. 
● The server then uses the password and 
the per-user salt to get the calculated 
salted password hash.
Example (Part 5) 
● The server then uses the username to 
request the stored salted password 
hash from the database. 
● If the calculated salted password hash 
matches the stored salted password 
hash, then the user has the virtual 
credential for “first-factor 
authenticated”.
Example (Part 6) 
● The server uses the username to 
request the MFA key from the 
database. 
● The server uses the MFA key and the 
timestamp to calculate the expected 
MFA token. 
● If the expected MFA token matches the 
MFA token supplied by the user, the 
user will have the virtual credential for 
“second-factor authenticated”.
Example (Part 7) 
● Since the user has the “first-factor 
authenticated” and “second-factor 
authenticated” virtual credentials, the 
user now has the “multi-factor 
authenticated” virtual credential. 
● The user can browse the site so long as 
the IP address, browser fingerprint, and 
cookie match, and as long the time 
since acquiring the “multi-factor 
authenticated” credential is less than 
25 minutes.
Example (Part 8) 
● Suppose the user is also a moderator. 
Then their name would be in the 
“moderators” group. 
● Whenever the user goes to a part of the 
site that requires moderator priveleges, 
all that is necessary is for that part of 
the site to verify that the user has the 
“moderator” virtual credential, which it 
can do by checking that it has the 
“multi-factor authenticated” virtual 
credential and the “moderators group 
member” credential.
In Conclusion...
● It is important 
not to use 
terrible 
authentication 
systems.
● When using the 
ACL approach, 
do separate 
authentication 
and authorization.
Some stateful 
authentication 
credentials are 
standard 
practice now.
● In my opinion, 
complex 
authentication 
requirements 
would be better 
off without ACLs.
● I'm considering 
making a portable, 
extensible, 
lightweight 
implementation to 
be dropped in for 
simple web apps... 
any interest?
Questions?

More Related Content

What's hot (20)

PPTX
Micro Web Service - Slim and JWT
Tuyen Vuong
 
PPTX
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
Brian Campbell
 
PDF
Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Alvaro Sanchez-Mariscal
 
PDF
Authentication and Authorization Architecture in the MEAN Stack
FITC
 
PDF
Json web token api authorization
Giulio De Donato
 
PPTX
Single-Page-Application & REST security
Igor Bossenko
 
PPTX
Securing your APIs with OAuth, OpenID, and OpenID Connect
Manish Pandit
 
PDF
CIS14: Consolidating Authorization for API and Web SSO using OpenID Connect
CloudIDSummit
 
PDF
ConFoo 2015 - Securing RESTful resources with OAuth2
Rodrigo Cândido da Silva
 
PPTX
Securing Single Page Applications with Token Based Authentication
Stefan Achtsnit
 
PDF
Design and Implementation of an IP based authentication mechanism for Open So...
WilliamJohn41
 
PPT
Grid security
josephineusha
 
PPTX
Building Secure User Interfaces With JWTs
robertjd
 
PDF
OpenID Connect - An Emperor or Just New Cloths?
Oliver Pfaff
 
PDF
What are JSON Web Tokens and Why Should I Care?
Derek Edwards
 
PPTX
Access management
Venkatesh Jambulingam
 
PPTX
REST Service Authetication with TLS & JWTs
Jon Todd
 
PPTX
Mobile Native OAuth Decision Framework
Paul Madsen
 
PDF
Single Sign On with OAuth and OpenID
Gasperi Jerome
 
Micro Web Service - Slim and JWT
Tuyen Vuong
 
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
Brian Campbell
 
Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Alvaro Sanchez-Mariscal
 
Authentication and Authorization Architecture in the MEAN Stack
FITC
 
Json web token api authorization
Giulio De Donato
 
Single-Page-Application & REST security
Igor Bossenko
 
Securing your APIs with OAuth, OpenID, and OpenID Connect
Manish Pandit
 
CIS14: Consolidating Authorization for API and Web SSO using OpenID Connect
CloudIDSummit
 
ConFoo 2015 - Securing RESTful resources with OAuth2
Rodrigo Cândido da Silva
 
Securing Single Page Applications with Token Based Authentication
Stefan Achtsnit
 
Design and Implementation of an IP based authentication mechanism for Open So...
WilliamJohn41
 
Grid security
josephineusha
 
Building Secure User Interfaces With JWTs
robertjd
 
OpenID Connect - An Emperor or Just New Cloths?
Oliver Pfaff
 
What are JSON Web Tokens and Why Should I Care?
Derek Edwards
 
Access management
Venkatesh Jambulingam
 
REST Service Authetication with TLS & JWTs
Jon Todd
 
Mobile Native OAuth Decision Framework
Paul Madsen
 
Single Sign On with OAuth and OpenID
Gasperi Jerome
 

Viewers also liked (8)

PPTX
Authentication, authorization, and accounting Nawaf-Sultan
Nawaf_alghamdi
 
PPT
A A A
Cristian Vat
 
PPTX
Security
Akram Salih
 
PPT
Design and Performance Optimization of Authentication, Authorization, and Acc...
saidzaghloul
 
PDF
The Three Musketeers (Authentication, Authorization, Accounting)
Sarah Conway
 
PPT
Keamanan Jaringan - Pertemuan 4
Abrianto Nugraha
 
PPTX
Authentication, authorization, accounting(aaa) slides
rahul kundu
 
PDF
AAA Protocol
Netwax Lab
 
Authentication, authorization, and accounting Nawaf-Sultan
Nawaf_alghamdi
 
Security
Akram Salih
 
Design and Performance Optimization of Authentication, Authorization, and Acc...
saidzaghloul
 
The Three Musketeers (Authentication, Authorization, Accounting)
Sarah Conway
 
Keamanan Jaringan - Pertemuan 4
Abrianto Nugraha
 
Authentication, authorization, accounting(aaa) slides
rahul kundu
 
AAA Protocol
Netwax Lab
 
Ad

Similar to Authentication Concepts (20)

PPTX
Web application security part 02
Prachi Gulihar
 
PDF
Eliminating Secret Sprawl in the Cloud with HashiCorp Vault - 07.11.2018
HashiCorp
 
PPT
Single sign on assistant an authentication brokers
Finalyear Projects
 
PPTX
SINGLE SIGN-ON
Shambhavi Sahay
 
PPTX
O auth2 with angular js
Bixlabs
 
PPTX
Cloud Identity Management
Damian T. Gordon
 
PDF
Industry Best Practices for SSH Access
DevOps.com
 
PDF
Industry Best Practices For SSH - DevOps.com Webinar
Teleport
 
PPTX
How Cloud-Based Service Providers Can Integrate Strong Identity and Security
GlobalSign
 
PPTX
Symantec SSL Explained
Symantec Website Security
 
PDF
QA Fest 2019. Диана Пинчук. Тестирование аутентификации и авторизации (AuthN ...
QAFest
 
PDF
Distributed Authorization with Open Policy Agent.pdf
Nordic APIs
 
PPTX
Authentication and session v4
skimil
 
PPT
Web authentication
Pradeep J V
 
PDF
Rest Introduction (Chris Jimenez)
PiXeL16
 
PDF
apidays Helsinki & North 2023 - API authorization with Open Policy Agent, And...
apidays
 
PDF
Understanding Claim based Authentication
Mohammad Yousri
 
PDF
CIS14: Authentication: Who are You? You are What You Eat
CloudIDSummit
 
PDF
CIS14: Authentication: Who are You? You are What You Eat
CloudIDSummit
 
PPTX
Introduction to Public Key Infrastructure
Theo Gravity
 
Web application security part 02
Prachi Gulihar
 
Eliminating Secret Sprawl in the Cloud with HashiCorp Vault - 07.11.2018
HashiCorp
 
Single sign on assistant an authentication brokers
Finalyear Projects
 
SINGLE SIGN-ON
Shambhavi Sahay
 
O auth2 with angular js
Bixlabs
 
Cloud Identity Management
Damian T. Gordon
 
Industry Best Practices for SSH Access
DevOps.com
 
Industry Best Practices For SSH - DevOps.com Webinar
Teleport
 
How Cloud-Based Service Providers Can Integrate Strong Identity and Security
GlobalSign
 
Symantec SSL Explained
Symantec Website Security
 
QA Fest 2019. Диана Пинчук. Тестирование аутентификации и авторизации (AuthN ...
QAFest
 
Distributed Authorization with Open Policy Agent.pdf
Nordic APIs
 
Authentication and session v4
skimil
 
Web authentication
Pradeep J V
 
Rest Introduction (Chris Jimenez)
PiXeL16
 
apidays Helsinki & North 2023 - API authorization with Open Policy Agent, And...
apidays
 
Understanding Claim based Authentication
Mohammad Yousri
 
CIS14: Authentication: Who are You? You are What You Eat
CloudIDSummit
 
CIS14: Authentication: Who are You? You are What You Eat
CloudIDSummit
 
Introduction to Public Key Infrastructure
Theo Gravity
 
Ad

More from Charles Southerland (11)

PPTX
hextime (OKC LUGnuts 5C393C35)
Charles Southerland
 
PDF
HTTPS Sucks
Charles Southerland
 
PPT
Linux Users are People, Too!
Charles Southerland
 
ODP
Passwords
Charles Southerland
 
PDF
Program Derivation of Operations in Finite Fields of Prime Order
Charles Southerland
 
ODP
Program Derivation of Matrix Operations in GF
Charles Southerland
 
ODP
Logs And Backups
Charles Southerland
 
ODP
C Is Not Dead Yet
Charles Southerland
 
ODP
All Your Password Are Belong To Us
Charles Southerland
 
ODP
One-Time Pad Encryption
Charles Southerland
 
hextime (OKC LUGnuts 5C393C35)
Charles Southerland
 
HTTPS Sucks
Charles Southerland
 
Linux Users are People, Too!
Charles Southerland
 
Program Derivation of Operations in Finite Fields of Prime Order
Charles Southerland
 
Program Derivation of Matrix Operations in GF
Charles Southerland
 
Logs And Backups
Charles Southerland
 
C Is Not Dead Yet
Charles Southerland
 
All Your Password Are Belong To Us
Charles Southerland
 
One-Time Pad Encryption
Charles Southerland
 

Recently uploaded (20)

PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
State-Dependent Conformal Perception Bounds for Neuro-Symbolic Verification
Ivan Ruchkin
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PDF
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PDF
Generative AI vs Predictive AI-The Ultimate Comparison Guide
Lily Clark
 
PPTX
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
PDF
Market Insight : ETH Dominance Returns
CIFDAQ
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
State-Dependent Conformal Perception Bounds for Neuro-Symbolic Verification
Ivan Ruchkin
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
Generative AI vs Predictive AI-The Ultimate Comparison Guide
Lily Clark
 
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
Market Insight : ETH Dominance Returns
CIFDAQ
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 

Authentication Concepts

  • 1. Authentication Concepts Charles Southerland Information Warfare ● Summit 7 October 1, 2014
  • 2. The Three “A”s ●Authentication ●Authorization ●Accounting / Audting
  • 3. Accounting / Auditing ● Log absolutely everything. ● Know what is in your logs. ● Protect your logs. ● See my IWS talk from last year.
  • 4. Accounting / Auditing ● Log absolutely everything. ● Know what is in your logs. ● Protect your logs. ● SHAMELESS PLUG: See my IWS talk from last year.
  • 5. Authorization ● Authorization is the process of determining and enforcing which privileges an authenticated entity has. ● Most people use Access Control Lists to keep track of which entities have which privileges
  • 6. Authentication != Authorization It is considered best practice to separate authentication from authorization so that authorization can be easily managed without fear of accidentally weakening the authentication system and vice versa. This is generally accomplished by keeping a username and password database used for authentication separate from the collection of access control lists used for authorization.
  • 7. Authentication Authentication is the process of verifying that entities truly are what they identify themselves as.
  • 8. Username-Only Systems ● Without authentication, anyone would be able to lie about their identity. ● There would be no accountability and no effective security.
  • 9. Password-Only Systems ● Unfortunately, a flawed authentication system can be about as bad as no authentication system at all.
  • 10. Most Authentication Systems ● The vast majority of authentication systems are based on a username and password. ● ANOTHER SHAMELESS PLUG: My IWS talk from 2011 has some suggestions on how to approach passwords.
  • 11. Password Storage ● As a password is only used for authentication, only a hash of the password must be stored, not the password itself. ● FINAL SHAMELESS PLUG: My IWS talk from 2012 covers how to deal with passwords correctly.
  • 12. Credentials More generally, authentication is accomplished through the verification of certain authentication credentials that an entity may have access to. Usernames and passwords are two common types of authentication credentials, but there are also other types of authentication credentials.
  • 13. API Tokens ● Another type of authentication credential is an API token, which generally allows a third-party application to access certain functionality programmatically. ● It may be an appropriate option in some cases,but it is awfully similar to the password-only system.
  • 14. OpenID / OAuth ● OpenID is a system that uses URLs from third-party websites as an authentication credential. ● OAuth is a system that allows the server to communicate with one of a few providers to obtain, among other things, authentication credentials for a user.
  • 15. Cookies ● A cookie is an authentication credential that is managed by the browser and automatically sent to the server with every request.
  • 16. Captcha ● A captcha is an authentication credential that tries to verify that a user is a human and not a program.
  • 17. Simple Browser Fingerprint ● A simple browser fingerprint (user agent string, some HTTP behavior) is often used as an authentication credential when cookies aren't available for some reason.
  • 18. Advanced Browser Fingerprint ● When simple browser fingerprinting is not enough, more advanced techniques are sometimes used. ● Sites can use a Flash cookie as an authentication credential. ● Recently there have been news articles about some sites which use canvas rendering behaviors as an authentication credential.
  • 19. IP Address ● A popular authentication credential with some administrators is the IP address of the computer attempting to authenticate.
  • 20. Client-Side SSL ● In my opinion, a client-side SSL certificate can make for a particularly good authentication credential in addition to providing improved transport security.
  • 21. Multi-Factor Token ● An increasingly popular authentication credential is a multi-factor authentication token. ● In addition to the iconic RSA key fobs and the increasingly popular RFC6238-based systems (like Google Authenticator), providers like Yubico, Toopher, Duo, and Transakt are having more mainstream adoption. ● Unfortunately, my own multi-factor system is still on the back-burner
  • 22. Stateful Credentials Some credentials have a specific relationship to the state of the client and/or server.
  • 23. XSRF Tokens ● Cross-site request forgery is a technique often used in phishing in order to perform actions and/or request data while authenticated using the stored browser cookie. ● An XSRF token is an authentication credential that is required for the next form submission to be accepted.
  • 24. Anonymous Cookies ● Nowadays, almost all websites will send the browser a cookie as soon as they connect so that they can begin tracking behavior as quickly as possible. ● When this cookie is first received, the only information associated with it is that the browser did not just arrive for the first time.
  • 25. Cookie Re-association ● Should the user log in, the state of this authentication credential will change from being associated with an anonymous browser to being an associated with an authenticated user.
  • 26. Partially De-authenticated Cookie As another example of a stateful authentication credential, if a user were accessing a website for some time after having authenticated, it may be permissable to continue to browse the site, but their cookie has changed state to the point where it will be necessary to re-authenticate before, e.g., purchasing an item or sending an email, whereas these actions would not have required re-authentication before the threshold had passed.
  • 27. Credential Dependencies ● In some cases, credentials can be thought of as depending on other pre-requisite credentials.
  • 28. Unsalted Password Hashes ● Even unsalted password hashes have dependencies: namely, the password. ● DON'T FORGET: If you use unsalted password hashes, you will be vulnerable to rainbow tables.
  • 29. Salted Password Hashes ● The salted password hash depends on having access to the password and the per-user salt (another authentication credential). ● Access to the per-user salt depends on having the username. ● You could even consider having access to the database credentials as yet another dependency.
  • 30. Typical Setup of Today ● An anonymous cookie is used from the beginning (in paywalls, the cookie even changes state). ● To login, the cookie is provided along with the XSRF token, the username, and the password. ● The username gets the salt, the salt and password get the hash, and if the hash matches and if the XSRF token corresponds to the cookie's, then the user is logged in.
  • 31. Multi-Credential Login ● In more secure systems, even more authentication credentials are required at the same time. ● It is not uncommon for some sites' login systems to depend on most of the following credentials simultaneously: a username, a password, a cookie, an XSRF token, a captcha, a multi-factor token, an IP address, a browser fingerprint, and a canvas fingerprint.
  • 32. Virtual Credentials ● It can be convenient to think of certain combinations of stateful credentials as being the dependencies for a kind of virtual credential. ● For example, whatever specific combination of those credentials can be thought of as the dependencies for the “logged in” credential.
  • 33. Region Blocking ● In some cases, specific IP address ranges can help to authenticate whether a user is in a particular geographic area. ● Hmm... some of these more complicated authentication concepts look like authorization, and that's bad, right?
  • 34. The Blurry Line Now consider a web app that allows you to behave as an end user once you've logged in, but in order to behave as an administrator, you must be logged in and come from a specific IP address. Is this authentication or authorization?
  • 35. Even Blurrier Now what if instead of coming from a specific IP address, you were required to use whatever multi-factor token you've set up? Especially given the notion of virtual credentials, couldn't authorization simply be a matter of authenticating some specific virtual credential with some specific set of credential dependencies?
  • 36. But You Said We Should Use ACLs! ● You could shoehorn some level of awareness of these authentication ideas into your ACLs. ● Unfortunately, that would likely make your ACLs nightmarishly complex, thus defeating the purpose of ACLs.
  • 37. Authorization as Virtual Credentials ● If we instead look at authorization as nothing more than virtual credentials, then access to resources would simply be a matter of authenticating these virtual credentials. ● The equivalent function of ACLs would then be encoded in the dependencies of virtual credentials and group membership.
  • 38. Example (Part 1) A user goes to a website, where they are given a cookie. The recorded IP address, the browser fingerprint, and the cookie now give them the virtual credential of “anonymous user”. This virtual credential authorizes them to access various pages on the website.
  • 39. Example (Part 2) ● The user then goes to the login page, where they are given an XSRF token that will be associated with their cookie. ● The IP address, the browser fingerprint, and (obviously) the cookie are still checked every single request to continue to authenticate the user.
  • 40. Example (Part 3) ● The user enters their username, password, and MFA token into the login form and submits it. ● The server immediately checks that the IP address, the browser fingerprint, the cookie, and the XSRF token all match, and if they do, the user now has the virtual credential for “authorized form submission”.
  • 41. Example (Part 4) ● Since the user has the “authorized form submission” credential, the server uses the username to request the per-user salt from the database. ● The server then uses the password and the per-user salt to get the calculated salted password hash.
  • 42. Example (Part 5) ● The server then uses the username to request the stored salted password hash from the database. ● If the calculated salted password hash matches the stored salted password hash, then the user has the virtual credential for “first-factor authenticated”.
  • 43. Example (Part 6) ● The server uses the username to request the MFA key from the database. ● The server uses the MFA key and the timestamp to calculate the expected MFA token. ● If the expected MFA token matches the MFA token supplied by the user, the user will have the virtual credential for “second-factor authenticated”.
  • 44. Example (Part 7) ● Since the user has the “first-factor authenticated” and “second-factor authenticated” virtual credentials, the user now has the “multi-factor authenticated” virtual credential. ● The user can browse the site so long as the IP address, browser fingerprint, and cookie match, and as long the time since acquiring the “multi-factor authenticated” credential is less than 25 minutes.
  • 45. Example (Part 8) ● Suppose the user is also a moderator. Then their name would be in the “moderators” group. ● Whenever the user goes to a part of the site that requires moderator priveleges, all that is necessary is for that part of the site to verify that the user has the “moderator” virtual credential, which it can do by checking that it has the “multi-factor authenticated” virtual credential and the “moderators group member” credential.
  • 47. ● It is important not to use terrible authentication systems.
  • 48. ● When using the ACL approach, do separate authentication and authorization.
  • 49. Some stateful authentication credentials are standard practice now.
  • 50. ● In my opinion, complex authentication requirements would be better off without ACLs.
  • 51. ● I'm considering making a portable, extensible, lightweight implementation to be dropped in for simple web apps... any interest?