opencaching.com Forum Index opencaching.com
Geocaching by the community, for the community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Talking about security
Goto page 1, 2, 3, 4  Next
 
Post new topic   Reply to topic    opencaching.com Forum Index -> Tech Stuff
View previous topic :: View next topic  
Author Message
Team BMW-Biker



Joined: 01 Oct 2003
Posts: 209

PostPosted: Sat Oct 04, 2003 8:40 am    Post subject: Talking about security Reply with quote

Hello everybody,

we should talk about security ...
How much security is needed ? Does we have to protect us against blackhats using sniffers and stuff like this ? I think yes - but how much ?!

The gratest problem is: Our project will be open-source ... and security in an open-source project is difficult - you can for example make no "hardcoded" passwords ... or calculate checksums from anything like the IP-Address to authentificate ...

I would say we need 3 sorts of security:

Sort 1: replication-security

Sort 2: DB-security - only a dataengine should have the rights to write to the database and to read password-hashes, email-addresses and such things - normal applications could have direct read access to tables like caches without using the dataengine (so performance will be better) - password used by the dataengine must be secret !

Sort 3: "normal" user authentification

Has anybody any (maybe other) idea ?

Thanks for discuse ...

... Oli
Back to top
View user's profile Send private message Visit poster's website
hmarq
Site Admin


Joined: 15 Sep 2003
Posts: 351

PostPosted: Sat Oct 04, 2003 9:08 am    Post subject: Reply with quote

I think we collectively are committed to having an open data model ... I think we're further committed to having collaborative development for code that supports the network ...

Open sourcing the web site code for each node would be security suicide and i'd argue against it.

That doesn't preclude publishing a snapshot of the code or the libraries at some point (and doing so under gpl); but I have no expectation of geocaching.de or opencaching.de releasing their endpoint website and I don't expect that to be the case for any other endpoint endpoint either.

programmers do dumb things from time to time (myself included) and having the development branch in particular would just be silly.

Further each node might use a different data back back end at the local level ... so there will definitely be variation in all the code bases.

If we adopt a standard DTD for exchange, use nntp (which is an open server) for replication and publish the spec for updates/retreive therefrom the data and the network are *completely* open without exposing each endpoint.
Back to top
View user's profile Send private message Send e-mail
Team BMW-Biker



Joined: 01 Oct 2003
Posts: 209

PostPosted: Sat Oct 04, 2003 9:50 am    Post subject: Reply with quote

Quote:
I think we collectively are committed to having an open data model ... I think we're further committed to having collaborative development for code that supports the network ...


absolutely Laughing

Quote:
Open sourcing the web site code for each node would be security suicide and i'd argue against it.


Sorry, i've written it wrong ... we shouldn't talk about an implementation which is the "only one" - and not every page must be open source. We should talk about security in the open protokolls which has to be "open source" (open definition). What when 5 countries/groups make code for one core-site ? then there must be a "sort 2" implementation ! Or can you give a gurantee for each developer of the (huge) network that the email-addresses of any user doesn't get in wrong hands ?

I think it is possible to make a completely open-source system (but dont publish password-files Rolling Eyes ), which is secure (for example look at every RFC-Commited standard ... in theory they are all secure, bugs and security-fault are "implemented by the programmers and not defined") !

What are the security-needs of a user ?
- does he want, that someone can publish informations under his name ?
- does he want, that his email-address is published in his user-profile - so every spammer can get it ?
- does he ...

That are thinks we should think about ! Core-Nodes-Backends should have this security (all core-nodes because all informations are replicated Question ) !

...Oli
Back to top
View user's profile Send private message Visit poster's website
hmarq
Site Admin


Joined: 15 Sep 2003
Posts: 351

PostPosted: Sat Oct 04, 2003 10:31 am    Post subject: Reply with quote

My appologies, I misunderstood you.

Interesting topic. I never really considered whether to syndicate the *user* table for each endpoint as that does raise a lot of ugly questions with respect to privacy.

I ask rhetorically, "Do we need to syndicate the entire user table?" ... I don't think most would want to have email address and password (even encrypted or hashed) distributed. ... the rest of the info wouldn't be an issue I'd think.

I don't know what real benefit you get by syndicating it? ... ubuquitous login?

It's a conversation worth having certainly.
Back to top
View user's profile Send private message Send e-mail
Team BMW-Biker



Joined: 01 Oct 2003
Posts: 209

PostPosted: Sat Oct 04, 2003 11:12 am    Post subject: Reply with quote

Quote:
Interesting topic. I never really considered whether to syndicate the *user* table for each endpoint as that does raise a lot of ugly questions with respect to privacy.

I ask rhetorically, "Do we need to syndicate the entire user table?" ... I don't think most would want to have email address and password (even encrypted or hashed) distributed. ... the rest of the info wouldn't be an issue I'd think.


you have it Very Happy sorry for my bad describtion ... my english skills arent the best ...

You are right - all informations must be replicated (inculding Users-Passwords and Users-Personal(est) informations). If we dont replicate all, the users informations would be in the digital nivana if the server crashes Wink

All datas which should only be readed by the "owner-core-node" are crypted before replication. The crypt-key has only the owner-core-node-server and its owner in form of a printed-out "not destroyable", secure handled paper behind big tresor-doors Wink ... so if a server crashes, the owner can get the replicated data back from any other node and decrypt it with his key Very Happy

So the user must only give his favorite core-node his personal-informations.
Back to top
View user's profile Send private message Visit poster's website
Team BMW-Biker



Joined: 01 Oct 2003
Posts: 209

PostPosted: Sat Oct 04, 2003 11:48 am    Post subject: Reply with quote

ok ... i should read the complete thread Rolling Eyes

Quote:
I don't know what real benefit you get by syndicating it? ... ubuquitous login?


after looking in a big translation-book what "ubuquitous" (ubiquitous) means ...
... no, i think the user can use every service without login. Only if he wants to change something (caches) or log a find etc. he must log in. Then he logs in on "his" core-node. Logins are only allowed on the core-node he has created his account. If someone wants to login on another core-node (why should he want that - there is no purpose *1 !) he must create on this a user-account with the same name, password and so on ... (i think usernames can used more than one time ?) ...

*1 have you read "my" idea of the opencaching-network ?
There i write in the database-structure and replication-protokoll that for every object is a "owner-core-node" stored. Applications should be implemented so that they use this field to find the right server for login !


one question:
Am I right that my password i enter (like in the login of this forum) in the browser (IE) are sended crypted to the http-server ?


... Oli
Back to top
View user's profile Send private message Visit poster's website
raven



Joined: 29 Sep 2003
Posts: 84
Location: Bielefeld, Germany

PostPosted: Sat Oct 04, 2003 12:30 pm    Post subject: Reply with quote

hmm, i really think the login/pass should work on ALL nodes. what if "my" node goes down and i wan't to edit my cache-descriptions? all my caches would be "owner-less" if my userinfo would have been saved only on one node.
so the user-data should definitely be synch'ed between the "core-nodes", but it should of couse not be given out to anyone else, using our http/xml-syndication-interface or anything like that.
if we save the passwords crypted (which we should, of course, do. md5 will probably be fine for that), there wouldn't even be a really big problem if somehow the user-data leaked out, because you can't get the plaintext pass from the crypted one. we should, of course, still do everything to prevent a situation like that from happening...
_________________
Quoth the raven, "Nevermore"
Back to top
View user's profile Send private message
nici-



Joined: 25 Sep 2003
Posts: 199
Location: Hürth near Cologne, Germany

PostPosted: Sat Oct 04, 2003 12:35 pm    Post subject: Reply with quote

Team BMW-Biker wrote:

one question:
Am I right that my password i enter (like in the login of this forum) in the browser (IE) are sended crypted to the http-server ?


No, it's not crypted. If you use "Basic Auth", the HTTP built-in authentication, the password is "obfuscated" (some base64 stuff), but it is not encrypted. And if you use cookies for a permanent login, the password is sent as plain text. You have to go the SSL-way to ensure that passwords cannot be sniffed.

Concerning the syndication of user data:
I vote for complete syndication of the user data, password is crypted of course. Either or "core network" IS a "trusted network" or not. Everything gets complicated if the core nodes cannot trust each other. Hey, in general, I do care about privacy, but the German core node will never know something about me, that an American node must not know.
Yes, when I signed up to one core site, I want to be able to use ALL other core sites with ALL their features.
_________________

Geocaching.de
Back to top
View user's profile Send private message Visit poster's website
Vinnie



Joined: 23 Sep 2003
Posts: 71
Location: Cologne, Germany

PostPosted: Sat Oct 04, 2003 12:36 pm    Post subject: Reply with quote

Team BMW-Biker wrote:

one question:
Am I right that my password i enter (like in the login of this forum) in the browser (IE) are sended crypted to the http-server ?


No, it's not crypted. If you use "Basic Auth", the HTTP built-in authentication, the password is "obfuscated" (some base64 stuff), but it is not encrypted. And if you use cookies for a permanent login, the password is sent as plain text. You have to go the SSL-way to ensure that passwords cannot be sniffed.

Concerning the syndication of user data:
I vote for complete syndication of the user data, password is crypted of course. Either or "core network" IS a "trusted network" or not. Everything gets complicated if the core nodes cannot trust each other. Hey, in general, I do care about privacy, but the German core node will never know something about me, that an American node must not know.
Yes, when I signed up to one core site, I want to be able to use ALL other core sites with ALL their features.
Back to top
View user's profile Send private message Send e-mail
Team BMW-Biker



Joined: 01 Oct 2003
Posts: 209

PostPosted: Sat Oct 04, 2003 1:26 pm    Post subject: Reply with quote

Quote:
hmm, i really think the login/pass should work on ALL nodes. what if "my" node goes down and i wan't to edit my cache-descriptions? all my caches would be "owner-less" if my userinfo would have been saved only on one node.


- core-nodes must be high-available

- we must be able to trust the core-node-admin, who has the crypt-key, so if one node goes down and cannot be rebuild in a few days, another core-node get his crypt-key and can decrypt the user-infos (like email). Then he is the new owner of the objects (caches, logs, users etc.).
If you want to be able to change things on every core-node, the replication would be more difficult (problem: whats when something is changed on two core-nodes before the next replication ?)

Quote:
we save the passwords crypted (which we should, of course, do. md5 will probably be fine for that)

thats ok ...


@nici and Vinnie
Quote:
Either or "core network" IS a "trusted network" or not

our "core network" cannot be a "trusted network" when there are many core-nodes with many local groups and many different implementations - some of the implementations could be "not so good" because the programmers didn't spend time enough for implementing ...

Our definition has to be secure (as much as possible) !


Quote:
Hey, in general, I do care about privacy, but the German core node will never know something about me, that an American node must not know

whats about your email ? some people wont like it that their email gets shared between many core-nodes ...
The system of GC isnt bad ... you get his email only if he answers to your contact-question ...

Quote:
I want to be able to use ALL other core sites with ALL their features.

if we crypt the password "one-way" like MD5, you could use all core-nodes to be login (like to use a forum). But changing your items (logs, caches, account ...) should only be possible on "your" core-node (easier replication). But this doesn't mean, that the application must run on "your" core-node ... this application must only connect your core-node or much better: the dataengine of "wrong" core-node must connect "your" core-node (good idea thanks for that Laughing )

... Oli
Back to top
View user's profile Send private message Visit poster's website
raven



Joined: 29 Sep 2003
Posts: 84
Location: Bielefeld, Germany

PostPosted: Sat Oct 04, 2003 4:09 pm    Post subject: Reply with quote

ok, here's a suggestion on replication security (if the replication works the way it's described on ollis site and/or in my post in the nntp thread):
the node sends the "item-changed" message to his peers as usual, they request the modified datasets since their last replication (or the "modification-time" the first node sent them) and now my idea plugs in:
every core-node has it's own GPG key-pair and every node knows the public keys of all their peers. so instead of sending the changed datasets directly, it first writes their data to a textfile and then signs (only signs, not encrypts) this file using it's own secret key. this file is then returned to the requesting peer, who in turn checks if the signature is valid and only imports the changed datasets into his own database, if it is.

advantages:
it effectively protects us from fake data entering the network and ensures that only peers that are known to be secure can update data in the network. if a node that was trusted becomes known to generate wrong or fake data you can simply exclude their public key from the list of valid keys.

disadvantage:
the core-nodes must have a way to install gpg/pgp on their sites.


oh, and of course the keys of new nodes must be exchanged in some relatively secure way...
_________________
Quoth the raven, "Nevermore"
Back to top
View user's profile Send private message
Vinnie



Joined: 23 Sep 2003
Posts: 71
Location: Cologne, Germany

PostPosted: Sat Oct 04, 2003 4:19 pm    Post subject: Reply with quote

Team BMW-Biker wrote:

- core-nodes must be high-available


No, that's absolutely not necessary in "full replication / total symmetry" concepts.

Quote:

- we must be able to trust the core-node-admin, who has the crypt-key, so if one node goes down and cannot be rebuild in a few days, another core-node get his crypt-key and can decrypt the user-infos (like email). Then he is the new owner of the objects (caches, logs, users etc.).

Your are talking about encryption/decryption? Why should anything except of the password be encrypted? Come on, geocaching is fun, there is no need for secrecy.

Nothing else than the password should be "crypt()"ed (i.e. actually hashed).

Quote:

If you want to be able to change things on every core-node, the replication would be more difficult (problem: whats when something is changed on two core-nodes before the next replication ?)


We detect the "conflict" and email the user to resolve it (it's just like a cvs merge Smile )

Quote:

our "core network" cannot be a "trusted network" when there are many core-nodes with many local groups and many different implementations - some of the implementations could be "not so good" because the programmers didn't spend time enough for implementing ...


If you do not trust the other core sites, you cannot give them write access to your data. But I definitely want to be able to use another core site to edit or do anything to my cache.

Quote:

Our definition has to be secure (as much as possible) !


Security between "the opencaching network" and the outer world, yes. But not security between "core node A" and "core node B".

Quote:

whats about your email ? some people wont like it that their email gets shared between many core-nodes ...

If they don't want it to be given to other core nodes, they should not give it to the "opencaching network".
You cannot post to usenet and say "Hey, I want news.tiscali.de to know about my email, but NEVER tell news.t-online.de about it!!"

Quote:

if we crypt the password "one-way" like MD5, you could use all core-nodes to be login (like to use a forum). But changing your items (logs, caches, account ...) should only be possible on "your" core-node (easier replication). But this doesn't mean, that the application must run on "your" core-node ... this application must only connect your core-node or much better: the dataengine of "wrong" core-node must connect "your" core-node (good idea thanks for that Laughing )


Once again: Let me use ALL core sites with ALL their features.

Greetings from Cologne,
Vinnie-
Back to top
View user's profile Send private message Send e-mail
hmarq
Site Admin


Joined: 15 Sep 2003
Posts: 351

PostPosted: Sat Oct 04, 2003 4:20 pm    Post subject: Reply with quote

OK, I'm going to go against the grain here ...

I think authenication should be local and should not be syndicated.

First the practical side -- who is really going to use more than one site? answer: probably no one unless there is a failure of that persons preferred site. Could some arrangement be made so that a non-recoverable, catostrophic node failure be made such that *a* new node could aquire and support a failed node ... I'd be for that, but I don't think we need, nor want to be passing login credentials around to anyone that asks for them. ...

Second, whether you use md5, SHA, crypt or something else to store the passwords, the passwords themselves will still be subject to brute force attacke if they are available. People pick bad passwords, it's human nature. What makes it worse is they use the same freakin' password for their web logons as they do for their ATM, brokerage accounts, pension plans and who knows what else .... I don't think I'd sign up for my own site here if I know the password is going to be given to anyone that asks for it .... and further, I don't want that kind of liability for having distributed someone elses password ....

I really believe a user must have a home node, be owned by that node and be authenticated at that node ... lets work out some protocol to make the user 'acquireable' if a node fails without passing the whole user record.

Same thing with email address ... you can't just give that to anyone that asks for it or we'll just be viewed as a validated mailing list for spammers ... again, not something I'd like to be associated with.

If you really want to have a single logon, you could add a 'site' field to userid and password at logon and work out an RPC for remote authentication ... but I think we've got some more basic things to worry about before we get there.


Finally, switching gears ... but answering the other topic in this thread .... no, logins are not over a secure connect ... just as they aren't on most non-financial sites ... your userid and password are sent in the clear unless the target is an https:// ... which most aren't ... this site and gc.com included.
Back to top
View user's profile Send private message Send e-mail
raven



Joined: 29 Sep 2003
Posts: 84
Location: Bielefeld, Germany

PostPosted: Sat Oct 04, 2003 4:34 pm    Post subject: Reply with quote

sorry, hmarq, but i think you are confusing the "syndication" of the data to anyone (for small stats-sites, the users local "my geocaches" list etc.) and the synchronization between our core-sites. of course we don't want to give out passwords or email-adresses out to anyone, but the other core-nodes are not "anyone". and yes, we should be a bit picky about who actually becomes a core-node, because they get write-access to all out data anyway. so i think we can trust (and make sure we can) these few core-sites enough to share privacy-relevant data like password-hashes and email-adresses between them.

and yes, i would use two different core-node-frontends, if for example core node A offers a feature that the others don't and core node B offers another such feature, but not the same one like A. come on, that situatuion isn't so unlikely that we shouldn't be able to handle it?

i say, either we replicate all our data between the core-nodes, or no data at all. and of course i vote for the former...
_________________
Quoth the raven, "Nevermore"
Back to top
View user's profile Send private message
Vinnie



Joined: 23 Sep 2003
Posts: 71
Location: Cologne, Germany

PostPosted: Sat Oct 04, 2003 4:38 pm    Post subject: Reply with quote

hmarq wrote:

First the practical side -- who is really going to use more than one site? answer: probably no one unless there is a failure of that persons preferred site.


I prefer to use 8 different sites:
Site A lets me upload many pictures, up to 500kb per log
Site B gives me great personalized maps
Site C gives me great personalized stats
Site D gives me great personalized donwloadable GPX
Site E gives me a HTML preview for my logs
Site F lets me include HTML lists into the logs, what other sites don't do
Site G is my "home node" in Germany
Site H has a cool java applet, letting me fly over Germany and shoot at caches

Quote:

Could some arrangement be made so that a non-recoverable, catostrophic node failure be made such that *a* new node could aquire and support a failed node ...


But the passwords are gone ...

Quote:

I'd be for that, but I don't think we need, nor want to be passing login credentials around to anyone that asks for them. ...


If we clearly state "This password is given to other core sites, please choose a
password that you never used anywhere else", I guess that's ok.

Quote:

Same thing with email address ... you can't just give that to anyone that asks for it or we'll just be viewed as a validated mailing list for spammers ... again, not something I'd like to be associated with.


"anyone that asks for it "? A hand full of core sites ... 5, 10 or 20...?
If we clearly state that the email address is being distributed to other sites, I guess that's ok.

Quote:

If you really want to have a single logon, you could add a 'site' field to userid and password at logon and work out an RPC for remote authentication ... but I think we've got some more basic things to worry about before we get there.


Well ... good idea Smile
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic    opencaching.com Forum Index -> Tech Stuff All times are GMT - 5 Hours
Goto page 1, 2, 3, 4  Next
Page 1 of 4

 
Jump to:  



Powered by phpBB 2.0.6 © 2001, 2002 phpBB Group