Print

Print


Oh before anybody gets the wrong end of the stick - the client generated
encryption key is NOT a session id. It is not guaranteed to be unique (two
clients accessing the server may be using the same encryption key) but it is
meant to be difficult for an interloper to guess (e.g. being 128 bit or
more).

Matthew

> -----Original Message-----
> From: Matthew Dovey 
> Sent: 17 June 2002 22:29
> To: 'Z39.50 Next-Generation Initiative'; [log in to unmask]
> Subject: RE: Re: Betr.: Re: result set model for srw
> 
> 
> Commonly https/ssl uses a private key stored on a server, and 
> the public key is provided to anyone connecting to that 
> server so that the client can encrypt data to send to the 
> server which only the server can decrypt. This is then used 
> for the client to send an random generated symmetric 
> encryption key to the server which is used to encrypt that 
> session - this is server side validation
> 
> However, there is an alternative when you want to validate 
> the client. In this case the client has a private key and the 
> server stores the public keys of the clients it wishes to 
> allow to connect.
> 
> Matthew
> 
> 
> 
> 
> 
> > -----Original Message-----
> > From: LeVan,Ralph [mailto:[log in to unmask]]
> > Sent: 17 June 2002 18:56
> > To: [log in to unmask]
> > Subject: Re: Betr.: Re: result set model for srw
> > 
> > 
> > I agree completely.  But...
> > 
> > I'd like to hear from someone with expertise in SSL or HTTPS.
> >  Does the same process happen while establishing the security 
> > certificates and can we find the solution for this problem in 
> > these mechanisms?
> > 
> > Ralph
> > 
> > > -----Original Message-----
> > > From: Theo van Veen [mailto:[log in to unmask]]
> > > Sent: Friday, June 14, 2002 9:17 AM
> > > To: [log in to unmask]
> > > Subject: Betr.: Re: result set model for srw
> > >
> > >
> > > When we want the ability for identification/authentication
> > this "user
> > > identification value" (lets say ticket) should be a
> > specific SRU/SRW
> > > parameter and we should call and treat it that way and not
> > confuse it
> > > with a session-id.
> > >
> > > Obtaining this ticket should in fact be a separate webservice and
> > > could be used by the organisation for different purposes and this 
> > > function does not have to be the responsibility of of the same 
> > > department that provide the SR-service.
> > >
> > > I would be happy with such a field that is optionally  sent
> > along with
> > > each request to those servers requiering it. When a user is not
> > > authorised the server returns a diagnostic and the URL of the 
> > > authentication server. The authentication server request 
> > user name and
> > > password and returns the ticket (presumably with an encryption for
> > > which the SR-service has the key). Transfer of this 
> ticket from the 
> > > webpage requesting it to the SR webpage is still open.
> > >
> > > Theo
> > >
> > >
> > > >>> [log in to unmask] 14-06-02 14:36 >>>
> > > I support Rob in his argument for a session id.  In July
> > last year, I
> > > submitted the following to the list:
> > >
> > > > We would also like the Search response to include a
> > "server user id
> > > substitute".  This can be returned in the ZNG:user
> > > > field for subsequent requests and avoid the user id and
> > > password having to
> > > be sent in multiple requests.  It can also
> > > > serve to guarantee the "actual user" (there may be more
> > > than 1 user able
> > > to use the same user ID/password) a time slot
> > > > on the server, because the system has a finite number of
> > > concurrent users.
> > > Pica also uses this for being able to
> > > > return search history, i.e. a notion of session, but this
> > > is out of ZNG
> > > scope.
> > >
> > > At the time "session id" was a politically incorrect
> > phrase.  In our
> > > implementation of ZING/SRU we are adding session id into 
> the actual
> > > request, within the URL.  We need it in the request so that we can
> > > control channels;
> > > it doesn't work if it is in a different layer.
> > >
> > > It's not complicated; it's just an optional element.  Our
> > server will
> > > send it with the result set id and it expects it to be returned.
> > >
> > > In July last year we also had a lot of discussion about deleting
> > > result sets.  Ray's prose accurately reflects this 
> discussion and I
> > > think it is
> > > correct and reflects reality.  Our server (along with lots 
> > of others)
> > > decides when it's time to do its own housekeeping with 
> result sets 
> > > unless told otherwise, i.e. with the TTL.  It will even 
> override the
> > > TTL if it has
> > > to.
> > >
> > > Janifer Gatenby
> > > Consultant OCLC PICA ITC
> > > Schipholweg 99, 2300 AW Leiden, The Netherlands
> > > + 31 71 524 65 00
> > > + 31 71 522 31 19 (fax)
> > > [log in to unmask]
> > >
> > > -----Original Message-----
> > > From: Robert Sanderson [mailto:[log in to unmask]]
> > > Sent: Friday, 14 June 2002 12:37
> > > To: [log in to unmask]
> > > Subject: Re: result set model for srw
> > >
> > >
> > > Theo, paraphrased:
> > > > You just need the request parameters.
> > >
> > > No.  This would work if resultsets only last for one
> > response/request.
> > > However if I were to do a search, do a second search and
> > then try to
> > > combine the resultsets from those two searches, the first
> > would have
> > > already disappeared. You need a session id (or to return 
> ALL of the
> > > parameters from ALL of the requests to date made by the 
> > client, which
> > > would quickly overflow most URL implementations in SRU.
> > >
> > > > > I could send continuous (SOAP is HTTP/1.1 so includes
> > pipelining
> > > > > and gzipping, making this even more effective) requests
> > to trash
> > > > > random resultset names.
> > >
> > > > Yes, but I could send continuous requests to trash random
> > > session ids or
> > > > client ids too! Or even better sniff the wire for the
> > > session ids/client
> > > > ids and use those. So introducing a session id in addition
> > > to a result
> > > > set name just adds complexity without actually solving
> > the problem.
> > >
> > > Packet sniffing is much harder these days than it was, due to
> > > switching networks.  It's still possible using ARP 
> poisoning, but I 
> > > digress.
> > >
> > > Yes, introducing a session id doesn't make it impossible to
> > do, but it
> > > does make it exponentially more difficult.  Difficult
> > enough that an
> > > attack is unlikely to succeed, whereas without it it is
> > very possible.
> > >
> > > Compare basic authentication of username and password.  Guessing a
> > > username and password combination is much harder than 
> > guessing one of
> > > the two.  And for large robust servers (the reason we're 
> using SOAP 
> > > right?) there will be a lot of users.  Unless the server is
> > designed with this
> > > sort of security in mind, the resultsets will probably just
> > identified
> > > with an incrementing scheme rather than a random set of
> > characters, so
> > > once a pattern has been found, the server is completely 
> compromised.
> > >
> > > User/password authentication has served for many years, and will
> > > likely continue to do so for all but financially 
> important traffic.
> > >
> > > > A solution would be for the server to keep tracking of
> > the source IP
> > > > Addresses - using that to identify clients and using result
> > > set names as
> > > > at present for maintaining state. Even that is foolproof
> > > since you can
> > > > spoof ip addresses.
> > > > If you really want more resilience against this attack than
> > > you should
> > > > use SSL (HTTPS) with client certificates to identify the client.
> > >
> > > Yes.  But then you drastically limit the number of
> > potential clients
> > > to those that support encrypted SOAP.  It also makes it
> > more difficult
> > > to just throw together a server, I wouldn't bother... 
> Z39.50 is less 
> > > complex and more functional.
> > >
> > > > In any case client identification (if required) is an Out
> > > of Band issue
> > > > which can be resolved at other layers in the syste and 
> needn't be
> > > > included in the SRW spec.
> > >
> > > Unless you have a web proxy, or specialised SRW proxy 
> that multiple
> > > clients send their requests through, not an uncommon 
> event I would 
> > > have thought.
> > >
> > > For example, if I were to set up a cgi script that interogated SRW
> > > servers, I would want to map my local users to session 
> ids. Except 
> > > they're all coming from the same IP address so the server will map
> > > them all to the
> > > same client.  At this point you once again need some sort of
> > > session id.
> > >
> > > Rob
> > >
> > > --
> > >       ,'/:.          Rob Sanderson ([log in to unmask])
> > >     ,'-/::::.        http://www.o-r-g.org/~azaroth/
> > >   ,'--/::(@)::.      Special Collections and Archives, 
> > extension 3142
> > > ,'---/::::::::::.    Twin Cathedrals:  telnet:
> > > liverpool.o-r-g.org 7777
> > > ____/:::::::::::::.              WWW:
> > > http://liverpool.o-r-g.org:8000/
> > > I L L U M I N A T I
> > >
> > 
>