How to Use the Cacert Infrastructure Within an Openid Context?
Total Page:16
File Type:pdf, Size:1020Kb
Master Thesis How to use the CAcert infrastructure within an OpenID context? Auteurs: B.J. Derlagen (s0829692), O.M. Berfelo (s0756067) Educational institution: Radboud University Faculty: Faculty of Science Institute for Computing and Information Sciences Education: Information Science Thesis number: Supervisors: Prof.dr. B.P.F. Jacobs, dr.ir. E. Poll Date: 1 Preface We wrote this master thesis for our education Information Science at the Radboud University in Nijmegen. We have done a research of how we can use the CAcert infrastructure in an OpenID context. This is the result of our research. We would like to thank some people who have made a contribution to this master thesis that led us to the final result. We would like to thank our supervisors Prof.dr. B.P.F. Jacobs and dr.ir. E. Poll for their feedback, knowledge, ideas and advice. We also would like to thank Esther Makaay and Marco Davids of SIDN for the conversation we had with them. Finally we would like to thank Bernard van Gastel and Marc Overmeer for the ideas and advice they gave us. Barthold Derlagen & Onno Berfelo. Warnsveld, 3 September 2010. 2 Abstract These days more and more people have access to an internet connection. These people spend an increasing amount of time on the web. On the web you'll encounter many websites on which you'll need to authenticate yourself. In many cases you'll do this with a username and password combination. Using the same combination on every site is unwise. This is where Single Sign On (SSO) (section 2.3.1) gets into the picture. SSO is an Identity Management system (section 2.3). SSO allows users to use a single account on one site to gain access to multiple other websites. Even in the scenario of SSO there are still some pitfalls in using a username and password combination. An attacker has several options to gain access to your account. He could use a keylogger to log your credentials. He could also attempt to guess your password or use brute force. Using a certificate from a Certificate Authority (CA) based on the Public Key Infrastructure (PKI) (section 2.2) would resolve the security issues of logon credentials. OpenID is a SSO solution but it has several security problems. Most of these problems would be solved by requiring the usage of Secure Sockets Layer (SSL). The usage of a username and password as logon credentials is common in OpenID implementations and it could be a problem if an attacker were to obtain these credentials. This might be resolved by using different login credentials. CAcert is a CA that issues certificates based on a Web of Trust (WoT). CAcert failed a management audit and because of this its root certificate has not been included in any of the major browsers. This results in error and warning messages whenever someone visits a website with a certificate that has been signed by CAcert. This has halted the deployment of CAcert certificates. Using CAcert client certificates as a logon credential would give it more purpose. Perhaps it could even stimulate the growth of CAcert. OpenID (chapter 3) is an open standard, it is open source. It is a software framework which means that apart from the core code most of the code can be altered. There are therefore many different implementations of the OpenID protocol. OpenID is decentralized which means that authentication doesn't need to take place on the site that offers the service. Within OpenID there are three parties, the User, Identity Provider (IdP) and Relaying Party (RP). The IdP provides the user with an identity and an identifier. The user can provide his identifier to the RP. The RP will then redirect the user to the IdP. The user will authenticate himself to the IdP. The IdP redirects the user back to the RP. The RP then accepts that the user has identified himself. OpenID has some security and trust problems (section 3.2). CAcert (chapter 5) is not unlike a common CA (section 2.2). It does, however, use a WoT to verify the identy of their users. CAcert has assurers which are users with 100 or more assurance points who have successfully taken an assurer test. Assurers can grant users from ten up to thirty-five points depending on their rank. Their rank is determined by the amount of people they have assured or being active during the start-up process of CAcert. A user needs to print a verification form. He then needs to provide this form and show his identification papers to an assurer. The assurer can then grant the user points. Once a user has 50 or more points he is deemed assured which will unlock various options in generating certificates. User can then obtain class 3 certificates and include his name in his certificates. During the creation of this thesis an idea arose to develop a proof of concept (chapter 6). This proof of concept was to use a CAcert client certificate as a logon credential on an IdP. The 3 proof of concept is based on a package named SimpleID. This package was selected after comparing it with several other packages. Some of the scripts of the SimpleID were altered to enable user login with a CAcert client certificate. The credentials of users are stored in a database. 4 Table of Contents 1 Introduction ......................................................................................................................... 8 1.1 Problem statement ....................................................................................................... 8 1.1.1 Research questions ............................................................................................... 9 1.2 Method ......................................................................................................................... 9 1.3 Thesis structure .......................................................................................................... 10 2 Theoretical framework ...................................................................................................... 11 2.1 Security Goals ............................................................................................................ 11 2.1.1 Confidentiality .................................................................................................... 11 2.1.2 Integrity .............................................................................................................. 11 2.1.3 Availability ......................................................................................................... 12 2.1.4 Authentication .................................................................................................... 12 2.1.5 Accountability .................................................................................................... 13 2.2 Public Key Infrastructure (PKI) ................................................................................ 13 2.2.1 X.509 (Public-key certificate) ............................................................................ 15 2.3 Identity Management ................................................................................................. 16 2.3.1 Single Sign On (SSO) ........................................................................................ 16 3 OpenID .............................................................................................................................. 17 3.1 Protocol ...................................................................................................................... 17 3.1.1 Enter OpenID identifier ...................................................................................... 20 3.1.2 Discovery ........................................................................................................... 22 3.1.3 Association request ............................................................................................ 23 3.1.4 Association response .......................................................................................... 24 3.1.5 Authentication request ........................................................................................ 25 3.1.6 Request authentication and authorization .......................................................... 25 3.1.7 Authenticate and authorize ................................................................................. 26 3.1.8 Positive assertion ................................................................................................ 27 3.1.9 Verification ......................................................................................................... 28 3.2 Problems .................................................................................................................... 29 3.2.1 Trust problems .................................................................................................... 31 3.3 Alternative OpenID solutions .................................................................................... 31 3.3.1 OpenID Plus ....................................................................................................... 31 3.3.2 Personal Identity Portal ...................................................................................... 32 3.3.3 MyOpenID ......................................................................................................... 32 3.4 Protocol in other research .......................................................................................... 32 4 Single Sign On comparison .............................................................................................. 34 5 4.1 Kerberos