[zeromq-dev] Authenticated pubsub (was Access control)

Oliver Smith oliver at kfs.org
Wed Jul 28 07:08:38 CEST 2010


On 7/27/2010 4:10 PM, Burak Arslan wrote:
> also, what concern are you trying to address? integrity?
> confidentiality? (i'm not sure what a game would need) are you doing any
> sort of logging somewhere? if so, do you log messages as cleartext? if
> not, will they be decipherable 10 years from now? where would you store
> the keys?
>    
Background: Our game is a first-person (infantry, planes, tanks, boats, 
trucks, at-guns, aa-guns, etc) and strategy (players can choose to 
participate in planning brigade movements, supply organization, etc), 
massively multiplayer WWII simulation based game modelling Europe at 
half scale (so driving a truck from Calais to Antwerpen would take you 
roughly half the time it would take to drive the distance for real).

We operate one "game world" in the US comprising 6 physical servers 
operating 8 distinct server processes which is rated at 3500 user 
capacity, and we have a partner who operates 4 such clusters in China.

This is not new data, but rather I'd like to replace the 10+ year old 
systems that export it from the authoritative server ("strat") to 
various different host processes, often purely for the purpose of 
forwarding to clients.

So anyone can see this data in their game client and we actually make 
the data available, on a 10 minute delay, via an XML/JS feed 
(http://wiretap.wwiionline.com/). But when you're operating on a 
European-theater scale, and in a WWII setting, that leaves opportunity 
for surprises. What we don't want is for people to easily make bots that 
can tap into the feed and provide them automated analysis.

So the data would likely be sent in a binary format, but not 
particularly encoded.

And we do actually have 9+ years of logs :) Note, 2001 not 2010.

DebugMessage System Open. Wed June  6th 2001 09:39:22
N [Wed 6/6 09:39.22.293 teulTransport.cpp:531] initializing teulClient 
teul compiled Jun 5 2001 at 15:09:00
I [Wed 6/6 09:39.22.293 teulEndpoint.cpp:1147] MAX_LOCAL_CONNECTIONS 
2500 MAX_TOTAL_CONNECTIONS 5000 freeEndpoints 2500

The game uses a proprietary server infrastructure ("teulServer") so that 
every process is aware of who is currently logged into the cluster from 
where. For us, the authentication token could thus be as simple as the 
player's game name, which we could look up from the "who's online table" 
to determine whether or not to let them subscribe.

But we also have a purposed "one time password" authentication token 
generator that we could use.

The design and implementation of our game servers is actually message 
based. Just message based in really old-school C which means there's a 
metric ton of work in encapsulating every message, and the transport 
library component almost qualifies itself as "UDP over TCP". Please, 
don't ask me how, but somehow the guys who wrote the initial system 10 
years ago managed to achieve unreliable messaging over tcp ;)


- Oliver




More information about the zeromq-dev mailing list