[sugar] Integration with web apps (and Moodle specifically!)
Ian Bicking
ianb
Sun Sep 3 14:16:19 EDT 2006
Ivan Krsti? wrote:
> Ian Bicking wrote:
>> By "system-wide", do you mean global, country, or school-wide?
>
> I meant operating-system level. Any application will be able to use a
> stable API to verify and issue a digsig; each kid will have an
> (obviously) unique keypair.
>
> This provides an emergent PKI based on key continuity management (KCM);
> it's PKI minus all the really ugly bits that make PKI not work in normal
> situations, basically.
OK, I'm trying to get a handle on the kind of identification you are
talking about then. Like Martin I kind of thought we were talking about
laptop/clients identifying themselves to servers.
So are we talking about laptops identifying themselves to other laptops?
Or even the laptop identifying itself to... itself? If HTTP-based RPC
is a major means of communication inside the system, then one can
imagine a need for identification. If nothing else, probably untrusted
Javascript could initiate a local RPC call; and if we want to allow more
peer-to-peer code sharing that isn't entirely trusted (and I'm not sure
how feasible that is) then we'll need to really consider the security of
those communications.
One interesting thing is that URL-based capabilities -- where knowledge
of a URL implies permission to do some action -- is feasible on
localhost since there's no real danger of someone intercepting the
communication. For peer-to-peer communications, does the mesh
networking mean the opposite, that interception should be assumed to be
possible?
Anyway, I'm not sure if any of this relates to KCM. I'm not
particularly familiar with KCM, but I'm guessing it's a little like how
SSH works? -- i.e., you assume that there's a secure initial connection.
That would certainly be better than chain-of-trust systems; I've been
rather shocked how hard PGP clients make it to mark a key as trusted,
when using my human intelligence I can be 100% sure of an identity.
Hmm... anyway, thinking about how this would work with a server,
presumably the student connects to some server and the server sees their
key. How? I don't know... maybe using normal HTTP, like:
# Student goes to a page that specifically requires authentication
GET /login
401 Authorization Required
WWW-Authentication: olpc some-nonce-thingy
# Student gets some popup -- like HTTP Basic login, except it doesn't
# ask for username/password; maybe it asks for an identity, plus
# confirms that a login should occur; maybe offers to automatically
# login in the future?
GET /login
Authenticate: olpc UUID signature
I imagine that the child is identified by some arbitrary thing like a
UUID, instead of a username, which has to be unique within some scope
and can't necessarily be common across all systems. (Even if there is
the possibility to have multiple IDs/profiles, is that sufficient
privacy? In all likelihood most students would use the same ID
everywhere and thus be trackable through all services they might use.)
Oh, and really the response has to give the public key for the user, and
then sign the nonce/UUID with the private key. Then the server stores
the UUID with the public key, and makes sure that the public key doesn't
change in the future. If it does change, then there has to be some
resolution that is probably human-based. Should there even be an ID, or
can the public key be the ID?
Also, communication of any other information (e.g., the student's name)
would be handled separately.
Handling a classroom server environment would probably mean all the
students logging into the system, then the teacher giving them all
permission.
I never much liked HTTP authentication. It's very chatty. It's very
stateless. It doesn't allow for both anonymous and authenticated access
to the same resource. The particulars of HTTP Basic aren't great, but
the problems aren't just with Basic. If we could resolve those thing,
that'd be great.
I guess something like a common identity system would be the sort of
thing that would make up what Martin was talking about as a "web app
framework". That's not normally what's talked about as a "framework",
but I'm not sure what to call it, and I can certainly see the value.
--
Ian Bicking | ianb at colorstudy.com | http://blog.ianbicking.org
More information about the Sugar-devel
mailing list