This article appeared in the March 2021 issue of the Information Systems Security Association (ISSA) journal. You can unlock full access to the journal here: https://www.members.issa.org/page/ISSAJournal.
An in-depth look at single sign-on capabilities, how they work, and how they can be improved.
This is not the first time SSO systems have been hacked. In late 2018, Facebook made worldwide news due to its SSO implementation having caused the breach [5] of an estimated fifty million user accounts and theft of their personally identifiable information. Similarly, vulnerabilities [6] in SSO implementations have compromised accounts at Google, Oracle, Microsoft, Atlassian, Zoom, etc. with protocol attacks [7] discussed at peer-reviewed technical conferences.
As futile as it might seem to advocate for ripping out SSO technology from an IT infrastructure, a confluence of events makes this the most opportune time to do so. And, in doing so, it can eliminate risks within the infrastructure, reduce access control complexity, and eliminate unneeded software and associated Operations, Administration and Maintenance (OAM) costs while delighting users with the new experience. This paper describes how to do so.
Background
An early implementation of SSO was realized as Kerberos [8] in the late 1980s as part of MIT’s Athena Project. In the following decades, SSO was implemented in Security Assertion Markup Language [9] (SAML), OAuth [10] and OpenID [11] to address requirements for the web. All were predicated on the same premise: to help users deal with the burden of passwords when accessing multiple systems, and uniformly enforce enterprise password policy. The architecture of SSO can be generalized to what is depicted in the following two diagrams. The difference between the two is that after authenticating users, some implementations choose to have unique authorization tokens for each application after authenticating users (Figure 1), while others combine all application authorizations into a single token (Figure 2):
Figure 1: SSO with separate tokens for each application
Figure 2: SSO with a single token for all authorized applications
Users who access multiple applications within an enterprise are registered with the SSO Service. Their credentials and authorizations to access specific application are stored either within the SSO Database or, typically, within a Lightweight Directory Access Protocol (LDAP) Directory Server that can manage their privileges independently.
Users must, typically, pass through a Checkpoint, which may be an explicit component provided by the SSO provider on the network, or integrated within the application, before they access an application. The Checkpoint is responsible for ensuring Users have an Authorization Token from the SSO Service before they are granted access to the application. If they do not have such a Token, they are redirected to the SSO Service where they must be authenticated, usually with a username/ password, one-time PIN (OTP), and/or a knowledge based authentication (KBA). Upon successfully authenticating, Users are issued a Token, generally stored within the browser header, and returned to the Checkpoint. Upon retrieving and verifying the Token’s authenticity and integrity, and having verified the User’s authorization, the Checkpoint directs them to the desired application.
The Token is usually cryptographically generated to ensure its security, but it depends on the key-management controls deployed within the SSO Service, as the SolarWinds breach highlighted. If the security controls are inadequate, attackers can bypass the SSO Service for user accounts and generate Tokens with the right privileges by compromising upstream systems in the authorization process. The attack vector used in magnifying the SolarWinds breach leveraged an SSO vulnerability in VMware® Workspace ONE Access used to provide SSO access to hypervisors of cloud environments. The advisory [12] published by NSA notes:
FIDO deployments generally resemble the following diagram:
Figure 3: General FIDO web-application architecture
Much as applications are required to be modified to work with the SSO Service, web applications must be programmed to take advantage of the FIDO protocol.
SSO with FIDO
Given that FIDO is an authentication protocol, the question arises: how can it be used to replace SSO capability? There are two different capabilities within the infrastructure, with the former focused on authentication and the latter on determining authorization to use applications. Based on past SSO implementation, it would seem that it should be possible to implement FIDO in conjunction with SSO and preserve the bene!ts of SSO while leveraging the newer authentication capabilities of FIDO (as shown in the following architecture diagram):
Figure 4: FIDO strong authentication within an SSO architecture
While this is true on first glance, a deeper analysis shows that if an organization has to modify its applications to leverage new security controls that mitigate risk, it could go further and solve multiple problems with one solution. The organization could reduce its attack surface by leveraging FIDO servers that combine SSO capability in them, to eliminate the external SSO infrastructure. This also has the bene!ts of saving the organization money on SSO related costs.
Replacing SSO with FIDO
The following User “journeys” depict how such a modified infrastructure might work. Note: We assume a fictional company whose domain name is company.com and three distinct applications accessed as green.company.com, red.company.com, and yellow.company.com. In such an architecture, the Relying Party ID (RPID) that will be used for the FIDO protocol will be company.com.
There are two ways in which FIDO can support replacing external SSO infrastructure while preserving the “perception” of SSO:
Applications Generate their own Session Tokens
When the User first registers with any of the three applications, say green.company.com, using their FIDO Authenticator, they are registered with a new key-pair associated with company. com. Since the registration process will have authenticated the User to green.company.com, the application will generate its own session token and place it in the User’s browser.
This establishes the User’s session with green.company.com and authorizes him to the business role assigned to him within the application as shown in the following diagram:
Figure 5: FIDO strong authentication replacing SSO with application-generated session Tokens
When the User navigates to use the red.company.com application, the application attempts to authenticate him. Upon recognizing that a Token exists in his browser for company.com, the application automatically gets a FIDO challenge from the FIDO server and presents it to the Authenticator.
The Authenticator recognizes the RPID provided by the challenge and uses the Private Key for company.com to authenticate the User. Upon providing the appropriate authentication gesture with the Authenticator, the User is successfully authenticated by the FIDO server.
When red.company.com receives a success response from the FIDO server, it updates the session Token in the User’s browser to include the authorization for the User to use the red.company. com application or adds a new Token to the browser authorizing the User to use the application at red.company.com.
This process is repeated for yellow.company.com and every other application integrated by the site to their FIDO server. When a User’s session ends or terminates on an explicit logout, the User’s Token is updated to reflect that state.
It is important to note that the User is strongly authenticated with FIDO to every application with a passwordless protocol that only requires a human gesture with the computing device or the Authenticator. Every application relies on its own authentication of the User with a common FIDO service within the infrastructure, thus distributing the workload to each application in accordance with its business requirements.
It is also important to note that each application is also responsible for verifying the User’s authorization to use the application; this is identical to the SSO architecture, but without the SSO protocol and additional infrastructure.
To achieve further economies, companies can choose to create a common library for session Token creation and verification. This ensures that common functionality is shared across the enterprise without each application having to burden itself.
FIDO Server Generates Session Tokens
In this second method of replacing SSO with FIDO, where a FIDO server supports built-in SSO capabilities, it is possible for the FIDO server to create the cryptographic session Token upon successful FIDO authentication of the User, and returns the Token to applications, as shown in the following architecture diagram:
Figure 6: FIDO strong authentication replacing SSO with FIDO server generated session Tokens
When the FIDO server subsumes the creation of the session Token, it is responsible for authenticating the User and generating the session Token as an atomic operation. This not only eliminates the application burden, but also any potential vulnerability gaps that might arise between the two operations. This is conceptually identical to the SSO infrastructure but without the SSO infrastructure.
When the session Token is generated as a JSON Web Signature (JWS) object with an X509 digital certi!cate embedded in it to create a JSON Web Token (JWT), the FIDO server would avoid the need to share a secret key with applications to verify the JWT. This makes the infrastructure more secure because digital certificates do not possess secrets. With such a JWT, the application is equipped with the necessary resources to verify the authenticity and integrity of the session Token, similar to the SSO architecture but without the SSO infrastructure.
Organizations who understand the benefits of FIDO and choose to implement the capability will need to acquire FIDO capabilities and modify their applications to integrate it. When they do so, they have the option of integrating FIDO with their current SSO infrastructure or, potentially, choosing to leverage SSO capabilities in a FIDO server where it exists. While it might seem a simple decision to overlay the new authentication capability on existing infrastructure, companies have an opportunity of taking a proactive approach to reducing complexity and risk within their organization by collapsing the two capabilities during this once-in-a-generation shift in technology.
Summary
FIDO is one of the most innovative authentication technologies the industry has created in three decades. Learning from past lessons, FIDO solutions balance simpler user experience with the “highest assurance” authentication protocols [19] at lower cost.
Organizations may believe their existing multi-factor, single sign-on enabled solution is more than adequate for managing authentication and authorization risk. However, recent attacks have shown the vulnerability of preserving SSO capabilities even as authentication technologies and capabilities vault past the reason why SSO was necessary in the first place.
The industry is at an inflection point where an investment must be made to incorporate FIDO to eliminate lingering vulnerabilities; it presents an added opportunity to simplify applications and infrastructure by eliminating SSO along with older authentication technologies. They should grasp the opportunity.
References:
1. Russian State-Sponsored Actors Exploiting Vulnerability in VMware Workspace ONE Access Using Compromised Credentials – NSA Cybersecurity Advisory - https:// media.defense.gov/2020/Dec/07/2002547071/-1/-1/0/ CSA_VMWARE ACCESS_U_OO_195076_20.PDF
2. Cybersecurity & Infrastructure Security Agency Alert (AA20-352A) - https://us-cert.cisa.gov/ncas/alerts/aa20-352a
3. An Understanding of Russian Hacking Grows, So Does Alarm – New York Times, January 2, 2021 - https://www. nytimes.com/2021/01/02/us/politics/russian-hacking-gov-ernment. html
4. Cloud Services From Major Providers Including Amazon and Microsoft Vulnerable to the Widespread SolarWinds Hack – CPO Magazine, January 4, 2021 - https://www. cpomagazine.com/general/cloud-services-from-ma-jor-providers-including-amazon-and-microso#-vulnera-bleto-the-widespread-solarwinds-hack/
5. Facebook Breach: Single Sign-On of Doom – Bank Info Security, October 2, 2018 - https://www.bankinfosecurity. com/blogs/facebook-breach-single-sign-on-doom-p-2668
6. Search for “sso vulnerabilities” on DuckDuckGo - https:// duckduckgo.com/?q=sso+vulnerabilities&t=%ab&ia=web
7. On Breaking SAML: Be Whoever You Want to Be – Juraj Somorovsky, Andreas Mayer, Jorg Schwenk, Marco Kamp-mann, and Meiko Jensen – USENIX Security Conference - https://www.usenix.org/system/files/conference/usenixsecurity12/sec12-final91-8-23-12.pdf
8. Kerberos: "e Network Authentication Protocol – MIT - http://web.mit.edu/kerberos/
9. OASIS Security Services (SAML) Technical Commit-tee - https://www.oasis-open.org/committees/tc_home. php?wg_abbrev=security
10. The OAuth 1.0 Protocol – IETF RFC 5849 - https://tools.ietf. org/html/rfc5849 "e OAuth 2.0 Authorization Framework – IETF RFC 6749 - https://tools.ietf.org/html/rfc6749
11. OpenID Authentication 2.0 – Final - https://openid.net/ specs/openid-authentication-2_0.html
12. Russian State-Sponsored Actors Exploiting Vulnerability in VMware Workspace ONE Access Using Compromised Credentials – NSA Cybersecurity Advisory - https:// media.defense.gov/2020/Dec/07/2002547071/-1/-1/0/ CSA_VMWARE ACCESS_U_OO_195076_20.PDF
13. Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 3.2 Message Speci!cation – RFC 5751 - https://tools. ietf.org/html/rfc5751
14. Guidelines for enabling smartcard logon with third-party certi!cation authorities – Microso# - https://docs.microso#. com/en-us/troubleshoot/windows-server/windows-security/ enabling-smart-card-logon-third-party-certi!cation-author-ities
15. Public Key Directory – ICAO Security and Facilitation - https://www.icao.int/Security/FAL/PKD/Pages/default.aspx
16. FIDO: Fast Identity Online – ISSA Journal, December 2020 - https://www.members.issa.org/page/journal-2020 StrongKey CryptoEngine is FIDO Certi- !ed®- https://www.linkedin.com/pulse/ strongkey-cryptoengine-!do-certi!ed-arshad-noor
17. Alliance Overview – FIDO Alliance - https://!doalliance. org/overview/
18. Notwithstanding the security protocol, speci!c imple-mentations can be compromised as described in this recent research paper of the cloning of a well-known FIDO Authenticator’s security chip by observing its electromagnet-ic radiation – also known as a side-channel attack – Ninja Lab - https://ninjalab.io/wp-content/uploads/2021/01/a_side_ journey_to_titan.pdf
19. NIST Special Publication 800-63 Digital Identity Guidelines - https://www.nist.gov/itl/tig/projects/ special-publication-800-63
About the Author
Arshad Noor is the CTO of StrongKey since 2001. With 34+ years of experience in the Information Technology sector, he has spent the last 21 years of his career focused on solving data-protection problems using applied cryptography. He has designed and constructed Public Key Infrastructures (PKI) for companies in the banking, defense, telecommunication, pharmaceutical, biotechnology and e-commerce sectors. He wrote the first open-source enterprise-scale symmetric key-management system in 2006, and adapted it to build an appliance to solve cryptographic key-management problems for companies complying with PCI-DSS, GDPR and the upcoming CCPA regulations.
He has written articles and spoken at dozens of conferences around the world on data-protection. Having authored protocols at OASIS in the past, he currently collaborates with NIST National Cybersecurity Center of Excellence (NCCoE), and is an active contributor to the FIDO Alliance to eliminate passwords from the internet. In 2019, he served as one of 20 members on the California Blockchain Working Group helping to craft recommendations to the State Legislature on how the 5th largest economy in the world should deal with blockchain. When not advocating for application level security and strong authentication, he encourages everyone to live the “Blue Zones” life. You can also find him at https://www.linkedin.com/in/arshadnoor/.