[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