[OpenID] OpenID and the COPPA

SitG Admin sysadmin at shadowsinthegarden.com
Thu Apr 3 22:55:04 UTC 2008


>It appears to me that the Simple Registration Extension would
>qualify as disclosure of the user's personal information, and hence a
>relying party would need some way to confirm a user's age and parental
>permission prior to, or perhaps as part of, allowing an underage user
>to authenticate via OpenID?

I've been giving this more thought. I came up with three ideas for 
how to do it, each of which are flawed in one way or another; these 
ideas are described below, followed by some idle speculation on how 
to repair their flaws.

0) Ask the user to checkmark a "I am at least ## years of age." box 
before submitting URI.

1) Send the user to their Provider for age, then - once they return 
triumphant with credentials - turn them around and send them back 
again to get the rest of the info.

2) Add a "minimum_age" scheme to the Attribute Exchange list, where 
the Provider asserts that this end-user is *at least* that old, but 
does not commit to *exactly* how old. In the Provider, let the user 
select from a drop-down list ranging from newborn to their actual age.

3) As with #2, but with an option for the Consumer to request a 
specific age; the Provider would offer a box to checkmark *only if* 
that user's age was sufficient to meet the Consumer's requirements.

The self-assertion adds another action (mouse-click, navigation to 
that spot) to the process of OpenID login; instead of just entering 
your URI, you have to mouse over a box, click it, and then enter your 
URI. Or perhaps you don't; a Relying Party might be unable to provide 
additional services to underage users, but still be able to provide 
basic services regardless of a user's age. Making this clear adds 
text, which further increases the time taken to authenticate - not 
much more text, if you were already reading the Privacy Policy and 
TOS to begin with, but most users don't do that. If it's not clear 
that what the user desires can be achieved without self-asserting a 
minimum age, or if it IS clear that it can't be, the user may decide 
to checkmark the box anyway - just to proceed. The only aspect of 
this method which recommends itself to me is that it does not require 
any action on the part of a Provider or Consumer at all - no wasted 
bandwidth or processing, just a report to the user that they will 
need to get their parents before continuing (and, even then, they may 
just go right ahead anyway).

The first idea adds to the work done by the Consumer and Provider, 
*and* breaks up the user's authentication process by prompting for 
their username/password (possibly: do they trust this site?), then 
age, THEN the rest of the information.

The second and third ideas would require a Provider to support the 
minimum_age possibility, and (for #3) be able to NOT send users back 
to the Relying Party with a response supplying the personal 
information that Provider *did* support schema for.

All three of these ideas (beyond self-assertion), if implemented in 
the libraries, would (in the rare case of that child genius) require 
some skill to disable; someone using a 3rd-party Provider could lie 
to *that* Provider about their age, and someone hosting their own 
Provider would need to adjust the code slightly to let them lie about 
their age. Except that it is just just young geniuses; some OpenID 
users may live in countries where COPPA (or equivalent laws) do not 
exist, and be irked at having to hack the code just to remove an 
unnecessary part. Whatever changes are made, I propose adding to the 
libraries conditional code, based on something like $coppa=TRUE (by 
default), and with a warning in the comments that disabling it may 
bear legal repercussions in some countries. The purpose of this would 
be to evade any complaint that the OpenID community advertises and 
makes available software which, by default, can violate COPPA or 
similar laws; and to make a reasonable effort to ensure that, if 
anyone changed that area of the code, they were aware of its 
importance.

Sadly, as annoying as #1 is, I currently see it as the best option 
(even though it may not be supported by the specs), because it has 
the advantage of *not* sending any information until the user has 
confirmed their age. Even though the child (and/or parents) may have 
decided to trust the Relying Party with such information, they have 
probably NOT decided to entrust that information to anyone else who 
happens to be sniffing the network - and, if the child's information 
is sent out unencrypted over a wireless connection, the information 
may leak to other people.

-Shade



More information about the general mailing list