Version 1.4
28-Apr-10
Prepared by Distributed Systems Software
For Metalogic Software Corporation,
GeoConnections 2008 - Access Control and Authentication
September, 2014 Update:
In early 2011, Microsoft announced that it would not support CardSpace (aka, Infocards and Information Cards) starting with Windows 8. As CardSpace has been the most widely available identity selector for using Information Cards, and other projects related to Infocards and CardSpace have folded, future releases of DACS will likely deprecate and eventually remove support for Information Cards. See:
- On the Demise of CardSpace;
- Open Cardspace opportunity;
- Personal Reflections on the CardSpace Journey;
- From CardSpace to Verified Claims;
- Change will come: the present is untenable;
- The Clay Feet of Giants?; RIP, Windows CardSpace. Hello, U-Prove; and
- U-Prove.
The remainder of this document, and support for Infocards within DACS, are no longer being actively maintained. You may find that other Infocard and CardSpace related projects have been terminated and that their web pages are out of date or no longer available.
Note:
InfoCard support in DACS is relatively new.
Elements of the design and implementation, including data formats,
may be changed incompatibly.
This document continues to be revised;
the latest version is available
here.
Footnotes are indicated by a
*** symbol.
This article describes a project that was initiated in early 2009 to investigate Information Card technology and how DACS might use it in its repertoire of authentication methods. Support for Information Cards (InfoCards) in DACS, developed and demonstrated by DSS as part of this project, offers a flexible and feature-rich platform from which a better understanding of them can be gained and the technology evaluated. The project described here was completed in August, 2009.
We begin with an overview of InfoCards. Readers are referred to cited material for background information and additional detail. Following a brief description of DACS authentication, we take a close look at the two types of InfoCards, how they work and ways in which each might be integrated with DACS to supply new authentication methods or supplement existing ones. Initial implementations that support Managed InfoCards and Self-Issued InfoCards are described. Instructions for demonstrations of DACS-based authentication that use InfoCards are supplied. The document concludes with some thoughts about future directions and links to additional information.
An objective of the project was to produce a prototype implementation to support creation of Self-Issued InfoCards and Managed InfoCards, validation of the secure tokens produced from these InfoCards, and extraction of claim information from the secure tokens. While these InfoCards can be used for DACS authentication, many other applications are possible. No Identity Selector component was written - any Identity Selector that conforms to the specification should interoperate with the DACS implementation, although only Windows Cardspace is officially supported at present. The prototype has been integrated with the DACS code base and documentation, and will appear in release 1.4.23 of DACS, although it will remain limited in various respects, including partial or missing functionality. The degree to which InfoCard support will be carried forward and refined in future releases of DACS depends primarily on the feedback and support that DSS receives from DACS users.
The article is not intended to be a comprehensive treatment of Information Cards, but rather an investigation of them from the standpoint of DACS; unlike most writings on InfoCards, this is not a Windows-centric position and it is intended to neither promote nor denigrate InfoCards. The likely audience of this article are those with some experience implementing or deploying web-based authentication who would like to understand how they can apply Information Cards. This document assumes some familiarity with DACS and its authentication capabilities. Visit dacs.dss.ca for an overview of DACS and complete technical documentation for the latest release, including the latest revision of this document.
Corrections and suggestions for improvement are welcome.
Information Cards (also InfoCards, I-Cards, or i-cards) are "personal digital identities that people can use online". More precisely, an InfoCard is a graphical representation of a digital object that a user can employ to request cryptographically secure tokens, containing specific information, from a provider associated with the InfoCard. An Identity Selector is client software that provides the user interface to InfoCards, managing their creation, storage, review, update, deletion, import/export, and selection. Windows CardSpace [1, 2] is Microsoft's Identity Selector for the Identity Metasystem. It is currently available with Windows XP (with .NET Framework 3.0 and successors), Windows Server 2003, Windows Vista, and Windows 7 (on Windows XP, the InfoCard management utility is found in the Control Panel folder). Other Identity Selectors have also been written, such as Bandit, Higgins, and Azigo (apparently defunct) ***.
One of the main goals of the Identity Metasystem is to put the release of identity information under the direct control of computer users while at the same time respecting the right of a server or application to indicate what information it requires.
There are three roles within the Identity Metasystem:
Based on the Identity Selector Interoperability Profile (ISIP) 1.5 (or 1.0), identities are represented and requested using claims (attributes). In the case of Self-Issued InfoCards, the claims are filled in by the user and limited to "phone book" kinds of information (name, address, phone numbers, email address, date of birth, gender). Custom claim types are also allowed by the InfoCard format; CardSpace does not allow the format of its Self-Issued InfoCard to be modified, however. Managed InfoCards may have arbitrary claims. An InfoCard also includes a software-generated Private Personal Identifier (PPID) that uniquely identifies a subject to a particular Relying Party (RP) and which is different for that subject for each Relying Party (that is, if an InfoCard is used with Relying Party R1 more than once, the same PPID will be given to R1 each time; if that InfoCard is also used with Relying Party R2, a PPID different than the one sent to R1 will be sent, although it will be the same PPID each time).
When an InfoCard-enabled server or application (a Relying Party) requires claims about the user:
This simplified HTML fragment illustrates a form that a Relying Party might embed in a web page to enable sign-on; when activated by a user, InfoCard-based authentication will be initiated in a suitably enabled browser, which will execute the user's Identity Selector interface so that an InfoCard can be selected by the user and causes a token to be generated and submitted to the Relying Party:
<form name="login_form" method="post" action="/cgi-bin/infocard_login"> <table> <tr> <td> <img src="ic_image.jpg" onClick="login_form.submit()"/> <object type="application/x-informationCard" name="xmlToken"> <param name="tokenType" value="urn:oasis:names:tc:SAML:1.0:assertion"> <param name="issuer" value="http://schemas.xmlsoap.org/ws/2005/05/identity/issuer/self"> <param name="requiredClaims" value="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier"> </object> </td> </tr> <tr> <td><input type="submit" name="infocard_login" value="Login"/></td> <td></td> </tr> </table> </form>
Key Points Regarding InfoCards and the CardSpace Identity Selector:
DACS presents a modular, composable, and run-time configurable authentication framework. The DACS distribution currently includes over a dozen different authentication methods. New authentication methods are relatively easy to add, configure, and test, making DACS well-suited as a testbed for their evaluation and deployment.
Although DACS is primarily used to control access to assets based on who is requesting access, it is not necessary to authorize access predicated on the identity of the requester. When the identity is important, a DACS administrator assumes the responsibility of configuring user authentication appropriately to meet the security requirements of his jurisdiction and federation. The suitability of a given authentication method must be weighed on a case-by-case basis. The large selection of available authentication modules is in part due to a desire to leverage existing accounts for use with DACS, but also to allow each administrator to select authentication methods and styles with desirable security and practicality characteristics for given use cases.
For example, in some situations it is necessary to determine, with confidence, that a user is a particular individual, known a priori to a given site (e.g., the user is "Bobo Sample, Employee #123"). In other situations, it is entirely sufficient only to recognize an essentially anonymous user as that same individual each time he or she logs in. All that the latter situation requires is a unique digital identity at the given site.
Communication between users and DACS, and within DACS, usually is done over network connections that are made secure using the Secure Socket Layer Protocol (SSL) or Transport Layer Security Protocol (TLS) [SSL, TLS]
The vast majority of web-based systems employ username/password type authentication - figures of 81% to 99% have been claimed*** - and therefore these methods are well-supported by DACS. Despite their popularity, a well-known drawback is that most users select poor passwords***. Just as significantly, users typically employ the same password with more than one account*** (the proliferation of accounts and their passwords is a different but related problem). This implies that if an attacker is able to obtain a user's password, whether through guessing, theft of a password file or log file, malware (such as keystroke logging), active or passive eavesdropping (e.g., a man-in-the-middle attack), spoofing (such as through phishing), or other means, it is likely that the password can be readily used by the attacker to gain access to the user's accounts at other sites. Have you ever accidentally typed a password for a different account when signing on to a web site? What do you suppose the site did with that invalid password?
Because of these weaknesses, the importance of authentication methods that do not require the user to merely submit a password to a Relying Party should not be underestimated. In addition to Information Cards, DACS provides other password-free authentication methods, such as SSL client certificates, grid-based one-time passwords, hardware tokens, and OPIE supplied via PAM.
For the Subject, a Self-Issued InfoCard is, by itself, primarily a convenience - it facilitates "one-click sign-on" and the ability to efficiently resubmit commonly requested information. For an InfoCard-enabled server, it is essentially no different than employing a web-based form for user sign-on because:
Any user can create multiple Self-Issued InfoCards, which may be identical except for their PPIDs. If PPIDs are used to map users to their accounts at a server or application, it is possible for many PPIDs to map to the same individual. This complicates account management. Because a Self-Issued InfoCard may be deleted by its owner at any time, depending on how servers and applications use InfoCards, this may mean that a user can effectively delete an account without the site's knowledge since the PPID for a deleted InfoCard will no longer map to any individual. Furthermore, Self-Issued InfoCards may easily be shared by multiple users on the same computer, and they can be freely duplicated.
Because of these characteristics, in general, a Self-Issued InfoCard is by itself unsuitable for secure authentication purposes. They may be appropriate in situations with weak security requirements, or where no access protection is required.
A Quick & Dirty Guide to Self-Issued InfoCards:
Use cases for Self-Issued InfoCards within DACS might be categorized as follows:
If the password can be added to an InfoCard, it can be submitted automatically, otherwise an obvious disadvantage of this usage class is that a user must type it into a sign-on form. Requiring a user to enter a password during each sign-on defeats one of the goals of InfoCards, however (see Password Card).
A site willing to bend the rules for using InfoCards in exchange for user convenience might consider some alternatives. The user's password could be submitted by using (or misusing) an unused field in an InfoCard (e.g., as the "web page" claim type); doing so would print the password during InfoCard display and editing, however. A method of providing the password indirectly could be developed (e.g., by adopting the convention that the web page claim type is a URL that the Relying Party can use to securely fetch the password). A variation of the preceding approach would have the site provide a new registrant with a unique secret that the user is instructed to add to his InfoCard; for example, he might be required to replace the surname field in the initially submitted InfoCard with the specified string, which the site might consider to be a password or merely an account identifier; subsequent logins to the site, using the modified InfoCard, would be automatic. This would result in a site-specific Self-Issued InfoCard - one that should only be sent to a particular site - and the user must take care to select the correct InfoCard during sign-on. A user can assign a distinct name and image with each InfoCard and the Identity Selector can help to avoid errors, however.
It is arguable whether any of these unconventional approaches are better or worse than having a user type a password, and perhaps writing it down.
An additional use case category is to use Self-Issued InfoCards to strengthen another authentication method, effectively introducing an additional authentication factor. In addition to processing a Self-Issued InfoCard as previously described, an HTML FORM element that submits a security token to DACS could require additional authentication material; for example, a one-time password from a hardware token might be required. This can yield a multi-factor authentication method.
Note that for the same reason secure systems do not store plaintext passwords, a Relying Party must not store PPIDs in a form that could make them useful to an attacker.
Although each usage class outlined above has advantages and disadvantages, and different implementation demands, all but the last either have significant security or usage weaknesses that make them appropriate only for applications with very weak authentication requirements.
In view of the preceding analysis, and the typical usage of and support for authentication methods within DACS, this section outlines how Self-Issued InfoCards can best be used by DACS. The goal is to provide DACS administrators with flexible options for using Self-Issued InfoCards to provide a simplified user sign-on method with well-understood security implications and minimal administrative requirements.
Briefly, the recommended approach allows an authorized user, already having a suitable account (DACS identity) at a jurisdiction, to associate a Self-Issued InfoCard of his or her choice with the account. After an authenticated user successfully self-registers an InfoCard at a jurisdiction, the user can later click on the jurisdiction's InfoCard logo and be automatically authenticated, provided the normal authentication conditions are satisfied (i.e., the associated account is enabled, the identity's access has not been revoked, no errors occur, and so on). As before, a user may sign on using an existing authentication method. Use of this capability is optional at any jurisdiction, and a jurisdiction is free to impose whatever restrictions it deems necessary.
There are three main variants of the method. The first two require a new Self-Issued InfoCard user to be authenticated at the time the InfoCard is registered; i.e., the user must already have a DACS identity. After registration, the InfoCard will be associated with that identity. The third variant relaxes the requirement that the user be authenticated at InfoCard registration time.
In the first variant, the registered InfoCard is "linked" to a pre-existing account and may only be used as long as the pre-existing account is valid and enabled. The purpose of this is to simplify administration and recovery of an InfoCard account; if a user deletes or loses her InfoCard, if it becomes invalid for any reason, or if she needs to register a different card, she need only sign on using the linked authentication method and register a different InfoCard. The procedure is simple and no administrative intervention is required. An account suitable for this linkage is one in which DACS can test for the existence of the account without having to submit the user's password or any additional information. Currently available authentication methods that are suitable are Apache-based accounts (local_apache_authenticate), DACS-based accounts (local_passwd_authenticate), DACS-based accounts without passwords (local_simple_authenticate), and Unix-based accounts (local_unix_authenticate).
In the second variant, it is not necessary for the pre-existing account to continue to exist and be valid after InfoCard registration. This allows any DACS authentication method (including the InfoCard method itself) to be used to "bootstrap" an InfoCard-based account. For example, an administrator might generate an rlink (or other type of temporary account) for the jurisdiction's InfoCard registration page and then send the URL (or temporary username/password) that it creates to a user via email. Having received the message, the user signs on, visits the registration page, and then registers his InfoCard, linking it to the DACS identity established at sign-on time. In this variant, the identity that the DACS administrator selects for the registrant is essentially a username (most likely generated randomly from a large identifier space) and the password is the InfoCard's PPID. Unlike the first variant, account management is left to the DACS administrator, however, because the user may not have an alternate authentication method at his disposal if he needs to register a different InfoCard; this can result in an accumulation of unusable accounts.
The third variant does not require the user to be signed on at the time of InfoCard registration. Instead, a field of the submitted InfoCard, probably the email address or possibly the web page URL, is used as the DACS identity to associate with the InfoCard. While somewhat simpler from the user's perspective, because there is no alternate authentication method involved in the registration process, this variant is inherently weaker than the others. For some applications, however, this may not be a concern. Or, if the email address field is used as the identity, an email confirmation step may be undertaken before account creation to ensure that the user is actually associated with the email address (recall that just as when a user is required to enter an email address in an HTML FORM element, an InfoCard user is free to claim any email address, even someone else's or a non-existent or invalid address). Control over a web page URL may be similarly proven, for example by being requested to add a specified comment to it. In this variant, the email address (or web page URL) is essentially a username and the password is the InfoCard's PPID.
This variant has some disadvantages over the others. First, if the user changes the email address in her InfoCard, or if is deleted or becomes unusable, the user must repeat the registration process; the previous account will continue to exist but will be unusable. Second, some valid email addresses are not valid DACS usernames; unless the DACS administrator configures an appropriate mapping, these email addresses cannot be used for this purpose. Third, DACS does not provide any assistance for email address confirmation processing because of the complexity of doing it properly in the general case (system dependencies, managing outstanding registration applications, error handling, possibility of abuse and spam, etc.), so a DACS administrator must develop the procedures required to support this work flow out of the building blocks provided by DACS.
The security of the new authentication mechanism hinges on the uniqueness and secrecy of an InfoCard's unique PPID, as well as the negligible probability that an attacker can guess it. This is ensured by the InfoCard specification, secure communication between the parties (which might be provided by SSL-based communication between a user's browser and a DACS-enabled web server, for instance), and secure storage of InfoCards, both in their digital wallets and in the mappings maintained by DACS. An inherent weakness of InfoCards is that they are not necessarily PIN-protected, so any user of a computer with access to an InfoCard may use it; Relying Parties are not told whether a submitted InfoCard was PIN-protected [Bohren]. If the user account requires a sign-on password, then the card store is encrypted with it. Also, a Self-Issued InfoCard may be easily duplicated and shared.
Note that the InfoCard model is also applicable in situations in which no Relying Party certificate is available (i.e., web sites that use the http scheme). InfoCard issuers can prohibit the use of cards at Relying Parties that are not identified by a certificate. The Identity Selector Interoperability Profile "highly recommends" using extended validation X.509 certificates, as opposed to regular SSL server certificates, to identify the organization associated with the Relying Party. It is important to understand that in exchange for giving up SSL, important security features are lost, including confidentiality and protection against man-in-the-middle, spoofing, and replay attacks. Regardless of whether https is used, the token that is returned to a Relying Party is digitally signed, to protect against alteration and to authenticate the signer, and dated, to offer resistance against replay attacks. To maintain a secure environment, DACS generally requires that the https scheme be used over all untrusted communication channels.
As an example of the content and relative complexity of a SAML token, the following token was sent to a Relying Party (DACS, in this case) from CardSpace over http. Text has been elided and it has been formatted for clarity.
<?xml version="1.0" encoding="UTF-8"?> <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" AssertionID="SamlSecurityToken-64ada613-1618-4035-aada-b9d1b62bc967" IssueInstant="2008-12-03T02:37:19.037Z" Issuer="http://schemas.xmlsoap.org/ws/2005/05/identity/issuer/self" MajorVersion="1" MinorVersion="1"> <saml:Conditions NotBefore="2008-12-03T02:37:19.037Z" NotOnOrAfter="2008-12-03T03:37:19.037Z"> <saml:AudienceRestrictionCondition> <saml:Audience>http://bsd6.dss.ca/cardspace.html</saml:Audience> </saml:AudienceRestrictionCondition> </saml:Conditions> <saml:AttributeStatement> <saml:Subject> <saml:SubjectConfirmation> <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod> </saml:SubjectConfirmation> </saml:Subject> <saml:Attribute AttributeName="givenname" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims"> <saml:AttributeValue>Tarah</saml:AttributeValue> </saml:Attribute> <saml:Attribute AttributeName="privatepersonalidentifier" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims"> <saml:AttributeValue>gEHi+NbJ36Pc+INz8Q9W+Fzo+IKrluSDIZQVAIHBfjU=</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod> <Reference URI="#SamlSecurityToken-64ada613-1618-4035-aada-b9d1b62bc967"> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod> <DigestValue>BDErLaLIpItueux3zx6rG4GWImU=</DigestValue> </Reference> </SignedInfo> <SignatureValue>GCO1d/kum90NwnogOunIuZ1atnGAb21kxA0Wl/+HLncejYGwXe7L/cHQdvCftKuxz1fNCF7FRg8rposltvZxXRMCD2Xw== </SignatureValue> <KeyInfo> <KeyValue> <RSAKeyValue> <Modulus>u917ypU/KJ9Fe9USUSA3jaTIGF4lfKv6bxTHLrAoFjPXI9DAdG3Qt6ibMW6nicwZ8Jd8kIX3+1TPHbVtsw== </Modulus> <Exponent>AQAB</Exponent> </RSAKeyValue> </KeyValue> </KeyInfo></Signature> </saml:Assertion>
The following encrypted SAML token, also with text elided and reformatted for clarity, was sent to a Relying Party (DACS, in this case) from CardSpace over https:
<?xml version="1.0" encoding="UTF-8"?> <enc:EncryptedData xmlns:enc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"> <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"></enc:EncryptionMethod> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <e:EncryptedKey xmlns:e="http://www.w3.org/2001/04/xmlenc#"> <e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod> </e:EncryptionMethod> <KeyInfo> <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <o:KeyIdentifier EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbprintSHA1">yemfw</o:KeyIdentifier> </o:SecurityTokenReference> </KeyInfo> <e:CipherData> <e:CipherValue>H6mGix81dVcoSc3uxTrJEtKuVAkVv7ZMCz7KRRvZwsgjz0STdoL4P7f5CrUL8/iLSgdZ/o+Xv0Xz+pmptat3ctofkAA </e:CipherValue> </e:CipherData></e:EncryptedKey></KeyInfo> <enc:CipherData> <enc:CipherValue>xox4t+TH1FTx4fiLGUB/nc1jFSQmKd/4OKnxTcf3JkGzx+u2uMFspIYlR9w </enc:CipherValue> </enc:CipherData> </enc:EncryptedData>
The following describes the "pre-authenticated" use case for Self-Issued InfoCard registration and usage in more detail:
DACS credentials include an attribute that describes the authentication method that was used to establish the identity named therein. Access control rules can therefore test whether authentication was based on a Self-Issued InfoCard, and any jurisdiction is free to reject these credentials.
The prototype implementation involves a new DACS authentication module (local_infocard_authenticate), extensions to DACS configuration processing so that an administrator can specify how the new authentication module is used, and minor modifications to the format of DACS credentials (unfortunately, these modified credentials will not interoperate with earlier releases of DACS). A new DACS web service, dacs_infocard, creates or updates the mapping between a valid InfoCard and a DACS identity. A new utility command, dacsinfocard, is used by an administrator to manage InfoCard-based accounts. Similar in purpose to dacspasswd(1), it is also capable of parsing, validating, and extracting information from an InfoCard token, allowing custom account registration and authentication procedures to be developed based on InfoCards.
To support authentication via Self-Issued InfoCards, the section of dacs.conf for the demo jurisdiction INFOCARDS includes the following directives:
VFS "[infocards]dacs-kwv-fs:/usr/local/dacs/federations/dss.ca/INFOCARDS/infocards?field_sep=:" INFOCARD_DIGEST "SHA256" INFOCARD_USERNAME_SELECTOR "credentials" <Auth id="passwd"> URL "local_passwd_authenticate" STYLE "pass" CONTROL "sufficient" </Auth> <Auth id="infocard"> URL "local_infocard_authenticate" STYLE "infocard" CONTROL "sufficient" </Auth>
The current version of the prototype performs all of the required or recommended validity tests on a SAML token (such as verifying the digital signature) and includes infrastructure to do the remaining one (tracking the usage of each token to protect against replay attacks). These security measures require a variety of "heavyweight" supporting technologies, including Canonical XML, Exclusive XML Canonicalization, XML Signature Syntax and Processing (for RSA-based signatures), XPath, and others. To avoid a substantial and ultimately unnecessary implementation effort, libxml2 and xmlsec1 libraries are used; both are released under the MIT open source license.
A token sent to a Relying Party over https is encrypted using XML Encryption Syntax and Processing, using the public key taken from the Relying Party's X.509 v3 certificate. The Relying Party must decrypt the token, validate its message structure (e.g., as a SAML token), protect against token replay attacks, validate message conditions (checking that its validity period is still in effect, taking clock skew into account, and verifying that this Relying Party is the intended recipient of the token), validating the digital signature, and checking that the required information fields are present and valid.
The design and implementation of the prototype are subject to change.
A micro-site has been created to demonstrate a prototype implementation of DACS authentication using Self-Issued InfoCards. Instructions are provided there. SSL is used in the demonstration. The prototype does not verify that the linked account exists and is enabled; a production version might do so, however. Ignore any security warnings from your browser when you first visit the demo site. Review the information at the beginning of the page.
Begin the demonstration by creating a Self-Issued InfoCard on one of the supported platforms, or use an existing Self-Issued InfoCard if you have one. It does not matter what information you put in your InfoCard, except that you must provide an email address. Next, using a browser that supports InfoCards on one of the supported platforms, visit the demonstration home page and proceed to the Self-Issued InfoCard demo.
From the user's perspective, Self-Issued InfoCards and Managed InfoCards are used at a Relying Party (e.g., to sign on) in essentially the same ways, and the average user may not recognize which type she is working with. There are, however, some important differences:
Managed InfoCards specify one or more IP/STS endpoint references in a prioritized list. Each endpoint reference indicates how an Identity Selector contacts an IP/STS and the Security Policy that determines how the Identity Selector must authenticate itself to the IP/STS If an Identity Selector is unable to successfully complete its request for security token operation (RST) with one endpoint, it will try the next endpoint in the ordered list***. The Identity Selector may request a "Display Token" from the IP/STS, which is a representation of the claims carried by the security token that can be displayed to the user; before the token is submitted to the Relying Party, the Identity Selector can display the claims that will be sent with the token, giving the user the opportunity to abort the transaction or select a different InfoCard. CardSpace initiates this operation when either the "Retrieve" or "Send" buttons are pressed. This authentication step, which must be secured either by SSL or message-level security, prevents a stolen Managed InfoCard from being immediately useful to an attacker. It is the Identity Provider that chooses the authentication method to be used by specifying one of four supported "credential types" in the Managed InfoCard:
The specification allows new methods to be added, although of course they must be understood by the Identity Selector.
Additional authorization methods, such as DACS access control rules, may be useful.
Although it is possible to achieve, the primary benefit of Managed InfoCard is not necessarily to facilitate convenient "one-click sign-on", as it is for Self-Issued InfoCards. Rather, they provide a secure, distributed mechanism for Identity Providers to supply arbitrary information to Relying Parties in a user-centric fashion. From both an architectural and implementation standpoint, whereas Self-Issued InfoCards give simpler though constrained access to InfoCard technology, Managed InfoCards expose highly flexible, configurable, and versatile mechanisms for user-centric information sharing.
It is possible to create a Managed InfoCard that has the same claims as a Self-Managed InfoCard. In essence, a Self-Managed InfoCard is only a simplification or special instance of a Managed InfoCard rather than being fundamentally different.
A Quick & Dirty Guide to Managed InfoCards:
Here are some additional points about Managed InfoCards:
A user's authentication procedure via a Managed InfoCard can be simplified, enriched (e.g., user preferences might be specified), and made more secure, but these advantages come at the expense of having to administer Managed InfoCards at the Identity Provider and distribute them to users over secure communication channels. While the two types of InfoCard are used at the Relying Party's server in mostly the same ways, there are some differences:
Users will tend to have one Managed InfoCard for each site or organization (or group of cooperating sites or organizations) that supports them. As more Relying Parties accept Managed InfoCards from a given Identity Provider and understand and honour claims produced by it, the more value users can derive from those InfoCards, however.
With CardSpace, a Managed InfoCard can be installed by the user from a capable browser by simply following a link, which may be associated with an illustrative icon. Alternatively, from the CardSpace user agent, a Managed InfoCard can be imported and installed from a file; they are transferred to the user from the Identity Provider in a signed file with the conventional extension ".crd".
InfoCard selection is triggered by a Relying Party in nearly the same way for both types. The user's Identity Selector is called by the browser. The user's selection of a Managed InfoCard causes the user's Identity Selector to contact the Identity Provider associated with the InfoCard to acquire a token. The token is submitted by the Identity Selector according to the Relying Party's HTML FORM element.
In a web-based environment, a Managed InfoCard might be used as follows:
One proposed use case for Managed InfoCards is for credit card payments. In this scenario, a credit card company or bank is the Identity Provider, and a merchant is the Relying Party. Wanting to complete a purchase at the merchant's web site, a user might select an icon on a web page that causes her browser to trigger her Identity Selector. Choosing the "Pay by FoozleCard" Managed InfoCard, her Identity Selector will contact the Identity Provider associated with the InfoCard (i.e., a server operated by her bank or credit card company) to request a token. The token, which might contain identifying information and credit card details, is then submitted to the Relying Party to complete the transaction.
It is important to recognize that a Managed InfoCard's Identity Provider can be administered by a Relying Party; for instance, a DACS jurisdiction could act as both the Identity Provider for its Managed InfoCards and the Relying Party during user authentication based on its Managed InfoCards. Or, a DACS federation might run a central Identity Provider for its users, with any InfoCard-enabled jurisdiction able to function as a Relying Party.
Though differing in many architectural and structural details, Managed InfoCards (or perhaps more accurately, their tokens) are conceptually similar to X.509 client certificates [RFC 5280, SSL]. Both are formally described, cryptographically secured, extensible digital objects that can be used to represent an identity within a framework of trust. One notable difference between the two is that InfoCards (both Self-Issued and Managed) are primarily intended for interactive use (although apparently non-interactive use via delegation is not disallowed). Importantly, the CardSpace Identity Selector presents a much more user-friendly interface to InfoCards than do the popular browsers for X.509 client certificates; use of client certificates is effectively limited to sophisticated users, although automatic installation of a client certificate from a web page is possible. It is not necessary to use an SSL connection between the user and the Relying Party with InfoCards; this is not the case for client certificates.
DACS includes an authentication method for X.509 client certificates used with SSL. Self-signed certificates may be used for this purpose. DACS does not currently offer any assistance with respect to creating client certificates, but this procedure could be partially or completely automated (a user submits a request for an X.509 client certificate and the certificate is loaded into the user's browser by returning the certificate to the browser as the MIME type application/x-x509-user-cert).
Because they address many of the deficiencies of Self-Issued InfoCards, Managed InfoCards are a more suitable basis for secure authentication methods. Where a Relying Party administers its Identity Provider, it can create a Managed InfoCard for a specific individual and verify the integrity and validity of the InfoCard token when it is submitted for authentication purposes.
As with many authentication methods, an apparent drawback of Managed InfoCards is that either they provide only one authentication factor ("something you have") or their use necessarily involves user interaction. If demonstration of its possession is sufficient to authenticate, therefore, anyone who gains access to a Managed InfoCard, such as by copying it or stealing the storage device or laptop where it is stored, can then use it to assume the corresponding identity. For this reason a Managed InfoCard should always be password protected. Another drawback of Managed InfoCards with respect to security is that they are easily copied and shared (techniques to ameliorate this problem, such as restricting a Managed InfoCard to being used from certain IP addresses, tend to have their own problems). There is no way for a Relying Party to know what security methods were applied during the sequence of events that preceded submission of the token.
The use cases for Managed InfoCards by DACS, where it provides IP/STS functionality, might fall into three general categories:
As an alternative, a new account type could be created for this purpose. A user with multiple Managed InfoCards (having the same IP/STS) would use the same username/password regardless of which InfoCard he selected. Despite that advantage, this alternative contributes towards the proliferation of accounts and seems like a step in the wrong direction. It is possible to support a fixed password string, including no password string at all.
In summary, authentication based on Managed InfoCards requires:
An early goal of the project was to make use of existing implementations as much as possible. But it proved surprisingly challenging to find an implementation of an IP/STS that:
Following a lengthy search, several candidates were considered:
After careful evaluation and testing, no single implementation was found to be suitable for use by DACS. Instead, code from various implementations was combined, rewritten, and customized to develop an initial prototype that consisted of four main components:
Debugging this prototype was unusually difficult, due to the complexity of the layered protocols involved and the interactions among the components, and because CardSpace and the Windows SIP/STS often log very little useful information when an error occurs, making it very difficult to determine precisely what went wrong during a multi-step operation.
Once the initial prototype was functional, it was used to bootstrap native DACS implementations of the four components. Together with new DACS administrative and configuration capabilities, a completely new, integrated implementation of InfoCard support was created for DACS in ISO C99 C/C++ with GNU extensions. Currently standing at more than 10,000 lines of code and using over 31 configuration directives and variables, it is by far the largest and most complicated authentication module in the collection of some 14 DACS modules. Low-level support for Identity Provider authentication using UsernamePasswordCredential, X509V3Credential, and SelfIssuedCredential was written, and component configuration was harmonized with the DACS run-time configuration mechanism. Support for Managed InfoCards was added after Self-Managed InfoCard support by extending the prototypes (the DACS authentication module local_infocard_authenticate, the DACS web service dacs_infocard, and the dacsinfocard command) and adding new Identity Provider and Security Token Service functionality.
To the best of our knowledge, there is no comparable open source licensed implementation.
Managed InfoCard functionality is provided by the following components:
Related configuration directives can be found in dacs.conf(5). Instructions for enabling InfoCard functionality at build-time are given in dacs.install(7).
In the prototype, Managed InfoCards are used as follows:
As set out in the project requirements, development and testing was mainly performed on a Windows XP Professional SP2 platform using CardSpace as the Identity Selector.
To act as an IP/STS for Managed InfoCards, the section of dacs.conf for the demo jurisdiction INFOCARDS includes the following directives:
VFS "[infocards]dacs-kwv-fs:/usr/local/dacs/federations/dss.ca/INFOCARDS/infocards?field_sep=:" INFOCARD_DIGEST "SHA256" INFOCARD_AUDIENCE "host dacs.dss.ca" INFOCARD_AUDIENCE "prefix https://dacs.dss.ca/infocard-demo" INFOCARD_AUDIENCE "regex/i dacs.dss.ca" INFOCARD_MEX_URL "https://dacs.dss.ca/infocard-demo/cgi-bin/dacs/dacs_mex" INFOCARD_TOKEN_ISSUER "https://dacs.dss.ca" INFOCARD_ISSUER_INFO_ENTRY "ALabel:AValue!" INFOCARD_STS_URL "https://dacs.dss.ca/infocard-demo/cgi-bin/dacs/dacs_sts" INFOCARD_STS_AUTH_TYPE "passwd" INFOCARD_IP_PRIVACY_URL "http://dacs.dss.ca/infocard-demo/managed_privacy.txt" INFOCARD_STS_KEYFILE "/usr/local/apache2/conf/ssl.key/dacs.dss.ca.key" INFOCARD_STS_CERTFILE "/usr/local/apache2/conf/ssl.crt/dacs.dss.ca.crt" INFOCARD_STS_CACERTFILE "/usr/local/apache2/conf/ssl.crt/root.dacs.dss.ca.crt" INFOCARD_STS_PASSWORD_METHOD "ignore" INFOCARD_CARD_IMAGEDIR "/usr/local/apache2/dacs/htdocs/infocard-demo/managed_card_images" INFOCARD_CARD_OUTPUTDIR "/usr/local/apache2/dacs/htdocs/infocard-demo/managed_cards" INFOCARD_CARDID_BASE_URL "https://dacs.dss.ca/infocards/managed_cards" INFOCARD_CARDID_SUFFIX "identity" INFOCARD_CARD_DEFS_URL "https://infocards.dss.ca/cgi-bin/dacs/nfis_demo_card_defs.php" INFOCARD_CARD_FILL_URL "https://infocards.dss.ca/cgi-bin/dacs/nfis_demo_fill_claims.php" EVAL ${Conf::infocard_sts_title} = "DACS Managed InfoCard IP/STS" EVAL ${Conf::infocard_card_image_passwd} = "dacs_username_password_credential.png" EVAL ${Conf::infocard_sts_username_password_prompt_fmt} = "No password is required. Click 'OK' to continue." <Auth id="infocard"> STYLE "infocard" URL "local_infocard_authenticate" CONTROL "sufficient" </Auth>
In this configuration, the InfoCard claims are defined, stored, and filled at another jurisdiction running on a different host.
The dacs_infocard(8) web service or dacsinfocard(1) command can be used to disable or delete an InfoCard registration, temporarily or permanently revoking use of the InfoCard for authentication. The general purpose DACS access control features may also be applied to InfoCards in various ways.
The design and implementation of the prototype are subject to change, and the prototype will be extended as the capabilities of Managed InfoCards with respect to DACS are better understood. Additional configuration directives and command line flags will no doubt need to be introduced for registering and generating Managed InfoCards, and accepting them for authentication.
A micro-site has been created to demonstrate a prototype implementation of DACS authentication using a Managed InfoCards. The current version of the demonstration lets you create a Managed InfoCard that is associated with any of several identities at the demo jurisdiction. These Managed InfoCards are defined and "filled" by two custom web services. Only two claims (attributes): dacs_identity, which is the DACS identity of the user requesting a new card (relative to the jurisdiction running dacs_managed_infocard), and a PPID. After the card has been added to your Identity Selector, you can authenticate at the jurisdiction as the identity registered with the card. Instructions are provided on the web page.
Because the UsernamePasswordCredential authentication method is used between the Identity Selector and the IP/STS, you will be prompted for a username and password by your Identity Selector (presumably CardSpace) when you select a Managed InfoCard for authentication. The prompt should indicate that no password is actually required; simply click on "OK".
The demonstration may be temporarily unavailable from time to time due to development, testing, or system maintenance.
Microsoft began promoting Information Cards and CardSpace in 2005/2006 and continues to refine the technology with its new Geneva Framework, now called Windows Identity Foundation (for example, by improving support for the X.509 credential). Identity Metasystem Interoperability (IMI) version 1.0 was recently approved as an OASIS Standard. To date, however, few web sites have adopted InfoCards for sign-on, other than by developers for demonstration purposes [11, 12]. As another gauge of its popularity, searches for jobs linked to the terms "InfoCards", "CardSpace", or "Information Cards" return very few matches at this writing. Likewise, searches for books that match any of those terms also return a very small number of hits.
Information Cards offer important advantages over other authentication and identity (claim) distribution technologies, for users, implementors, identity providers, and relying parties. It does, however, face some challenges:
Randall Stross says in his New York Times article Goodbye, Passwords. You Aren't a Good Defense (9-Aug-2008):
We won't make much progress on information cards in the near future, however, because of wasted energy and attention devoted to a large distraction, the OpenID initiative.
Commenting on Stross's article (11-Aug-2008), Kim Cameron, Microsoft's Chief Architect of Identity, had some conciliatory comments. As mentioned earlier, some work has been done towards interoperation of OpenID with InfoCard; this is not universally welcomed (for example, OpenID Infocards: Painful or Promising?).
Are Information Cards a leading-edge technology that will blossom and gain widespread adoption, will it merely obtain a niche following, or has it already become another dead end that at best might offer instructive lessons to the developers of future authentication technologies? Regardless, it offers some interesting benefits and fits in well with DACS's "Swiss army knife" approach to authentication, albeit at the cost of higher complexity and larger implementation effort than any other DACS authentication method.
There is a wide gap between a prototype implementation that can demonstrate a new technology and production-quality software, but DSS intends to include a secure and usable initial version of InfoCard support in release 1.4.23 of DACS. The extent to which InfoCard support will be maintained and improved in subsequent releases depends on the up-take of InfoCards in general and how much interest is expressed in the new capabilities by DACS users. There are many ways in which the implementation can be enhanced and extended, and many avenues for experimentation. The stability of the InfoCard specification (and its supporting technologies) is also an important factor in determining how much effort is required to maintain InfoCard support within DACS.
The following external links provide supplemental material. Note that a large amount of older material about InfoCards remains available, and while still useful, it is sometimes based on earlier versions of CardSpace or the Identity Selector Interoperability Profile.
Also see Understanding Windows CardSpace: an Introduction to the Concepts and Challenges of Digital Identities by Vittorio Bertocci, Garrett Serack, and Caleb Baker, Addison-Wesley, ISBN 0321496841, 2008.
© Copyright 2009-2014 DSS Distributed Systems Software, Inc. All rights reserved. All trademarks, icons, logos, and product names used in this article are the property of their respective owners. |