These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

Player Features and Ideas Discussion

 
  • Topic is locked indefinitely.
12Next page
 

Client side Load processing hacking prevention Idea

Author
Apolion
Light-year Enterprises
#1 - 2015-01-28 03:10:24 UTC  |  Edited by: Apolion
Hey guys I have been involved in programming in a very light way but for a very long time, Probably this has probably been considered but hopefully the vast resources of the forum can come up with the solutions needed to make this work.
Being able to tap the processing power of the tens of thousands of clients connected to the EVE universe, is a way to increase the capacity of the game by orders of magnitude. If this could be done in a secure way many of the technological walls will crumble. They are holding back the Developers from giving us what they have promised with the original vision of the game. Hopefully we can inspire them by this discussion to look at using our combined power to make this game the most powerful game there is.

Hacking is the main reason why most game companies don't allow the results of a firing solution to be determined on the client machine. thinking about this issue its understandable that any program can be decompiled and dissected to determine how it works and then be reprogramed so that any result yields a favorable outcome to the cheater.
Now what if the code that determines the firing solution and damage done were never "permanently" residing on any one client? The code could be a relatively short module that is loaded onto a randomly determined player involved in an engagement with another player. so that no one could ever know if his machine was the one with the firing solution code or whether the code result mask encryption with the CCP main server was right since it would be randomly generated on each engagement.

This is probably confusing so let me describe a scenario: ships , A ,B, C, D... come into the same system upon which the server determines which clients will take on the firing solution roles based on network lag time and spare processing power. this can be determined so that the machine/s being used are not taking a quality hit. Each machine gets at this time a role of either passive or as server role along with an encryption mask that is randomly determined at the time of entering the system or after some condition that is known only to CCP that allows for the results of the encrypted code to be accepted by the Main combat Server function for CCP. At this point the main combat results server hands off the firing solution processing load to the clients in play and simply listens and records the results as they come in masked by the encryption code that was randomly generated for that specific engagement and set of players. The programming Module that is downloaded at the time of engagement will integrate with the client to serve as a local server for the "Main combat server function". What players receive as specific roles are determined by the Main combat server function or a specialized server function at CCP. The freshly downloaded "local server module" that will calculate the firing results will not only be scrambled, the actual combat results transmission will have random variations as to how it presents the sent results to the Server combat function at CCP in a way that only the Main server will expect. Any results transmitted that don't comply with the expected message format will cause a flagging of the player's account and IP for further CCP intervention.

this process could also be used to handle bump/collision calculations as well. the collisions could be divided so that each ship will take on its immediate volume within the system space and only it will react on collision detection. the other ships/clients will do the same. The in system ship state/condition messages could be tokened round robin to each ship and even if many thousands of ship are interacting they will all be updated. as well as the Main server. This would cover how to handle a ship that "lost connection" so that any client that looses its connection to the rest of the system clients, will still exist to them through the main server thus still being vulnerable as an Away From Network cheater.

Since hacking requires time this system relies on randomly scrambling the module's result message being used to inform the server of the outcome of engagements, thus not giving the hackers time to figure out how to beat the system since the system doesn't remain the same and you don't even know if your machine is the machine that is determining the outcome. Attempting to hack it will simply flag your account which will get that account banned very quickly and there wont be any record in your favor.

Since CCP is continually updating the clients this all may actually be a moot point since it would take Godlike Hacking skills to be able to Hack the EVE client at a fast enough pace to actually have the hack ready before the next update.
Nevyn Auscent
Broke Sauce
#2 - 2015-01-28 03:25:05 UTC
Firing is not the main server load in an engagement. Bump spheres are.
Apolion
Light-year Enterprises
#3 - 2015-01-28 03:28:59 UTC
cool send that to client as well!
sound like a function that could be delegated to clients without too much concern for a significant imbalance that cold be used to favor one player over another.
Nevyn Auscent
Broke Sauce
#4 - 2015-01-28 03:32:34 UTC
If you want to melt the clients computers sure.......
Because you can't split bump sphere checking between computers.
Apolion
Light-year Enterprises
#5 - 2015-01-28 03:50:11 UTC  |  Edited by: Apolion
I can see how this can be a huge task. Could it be divided by segmenting of the local grid by the number of clients in it. Many very difficult parallel computations are done by multiple processors today. Even analyzing the genome of humans has been done this way by people offering up there unused computational power. and getting money for it!
HiddenPorpoise
Jarlhettur's Drop
United Federation of Conifers
#6 - 2015-01-28 03:55:14 UTC
Apolion wrote:
I can see how this can be a huge task. Could it be divided by segmenting of the local grid by the number of clients in it. Many very difficult parallel computations are done by multiple processors today. Even analyzing the genome of humans has been done this way by people offering up there unused computational power.
There is no pressure to have a 1 second packet time on distributed computing.

Notice this, EvE is run in a room full of supercomputers. Any one of them has to drop to .1 work speed to do anything big. Very few people have super computers, guess what happens.
Apolion
Light-year Enterprises
#7 - 2015-01-28 04:14:33 UTC  |  Edited by: Apolion
understandable that a system with 4000 players would require huge resources from any number of computers but at the same time we would be talking about "maximally" 2000 modest computers analyzing there immediate vicinity not the whole system grid and determining if a collision is happening in there immediate coordinate " volume. and sending the reaction vector transmittal to the other ships involved and the main server. that would only take milliseconds as the density of ships in one place would be limited by the bumpsphere volume itself. realize what is actually happening in a FPS game were trajectories are being calculated and everything involved in detecting collisions is being handled to a very low latency point not only 3 dimensionally but the collision detection needs to be much more robust when you add into the calculations walls and such.
Granted that FPS engines are much different than Eve but the power is there.
Anhenka
The New Federation
Sigma Grindset
#8 - 2015-01-28 04:40:04 UTC
Ok, the reason CCP is having so many issues with Tidi is because EVE is a single threaded application.

A follows B follows C follows D, all on a single core.

Given the fact that CCP can't even multi-thread their own application on their own hardware, do you really think that distributed processing real time calculations across hundreds or thousands of individual clients is going to work?

Distributed processing for EVE is a pipe dream. It is 100%, completely and totally impossible to offload any meaningful portion of the server load of the processing load off onto the players computers.

Distributed processing is something that has to be built from the ground up when designing software. Taking 11 year old single core programs, magically waving your hand and BOOM it's a multi-threaded distributed processing application?

There's a greater chance of Charlie Chaplin coming back from the dead, running for President of the World, and being beaten by a Canadian Goose.
Lugh Crow-Slave
#9 - 2015-01-28 05:22:38 UTC
So if processing gets split what happens when i'm FC in a large fight 2000 or so people under me and I order them all to cut connection with eve
Apolion
Light-year Enterprises
#10 - 2015-01-28 05:32:35 UTC  |  Edited by: Apolion
Quote:
Distributed processing for EVE is a pipe dream. It is 100%, completely and totally impossible to offload any meaningful portion of the server load of the processing load off onto the players computers.


I like pipe dreams!
they inspire people to figure out how to swim in the crushing depths of the ocean floor. fly higher than birds and even leave the earth. create the most wonderfull machines that can build worlds. And prove the too many people enjoy telling others it cant be done.

ignoring clichés like "Were there is a will there is a way " is the surest way to get proven wrong.
http://www.rense.com/general81/dw.htm


my friend I'm not going to prove you wrong now but someday you will be.

BTW you might want to check out REV 21:4, jhn 6:40 regarding Charlee Chaplin, I kind of agree with you on the President of the world and the goose thing, but I understand your hyperbola...
Apolion
Light-year Enterprises
#11 - 2015-01-28 05:42:44 UTC
Lugh Crow-Slave wrote:
So if processing gets split what happens when i'm FC in a large fight 2000 or so people under me and I order them all to cut connection with eve



you simply loose a bunch of ships and the remaining clients have an easier load as they kill your very still fleet
BTW: probably you wont be FC-ing much after that as well.
Rawketsled
Generic Corp Name
#12 - 2015-01-28 06:28:39 UTC
A client-side bump calculation wouldn't work.

If a client lags, then bump calculations don't arrive on time to other clients.

Ships start passing through each other. Worse: ships start passing through each other in an inconsistent manner. It's an intermittent fault. And as a fellow programmer; those are the worst things to have.

Now consider this; I have software that can intercept network packets coming in/out. What if I were to maliciously intercept packets that weren't in my favour, and inject packets that were?

Yes, that's reverse engineering and hacking, and explicitly forbidden in the EULA, but you can't ban me unless you catch me. The only way to do that in real time is verify my calcualations are correct. If CCP does that; then they're doing the calculations themselves and at a rate that's equally as fast as myself (and everyone else on-grid).


Your idea wasn't thought through before you posted it.
Adrie Atticus
Caldari Provisions
Caldari State
#13 - 2015-01-28 09:09:33 UTC
Stop going into hypotheticals on how the computers would melt or glitches would happen, there is only a single reason why this is not feasible: network connections are too slow for this amount of data to be propagated, calculated, sent back to server and re-distributed to clients within the 1 sec server tick.

There is a reason why reducing a run on a motherboard by one millimeter will increase memory throughput by almost 9%. Stretch that run from 20 millimeters of well-constructed gold-plated wiring to thousands of kilometers of badly laid copper and you get the idea.
Apolion
Light-year Enterprises
#14 - 2015-01-29 01:01:36 UTC
Rawketsled wrote:

If a client lags, then bump calculations don't arrive on time to other clients.

Ships start passing through each other. Worse: ships start passing through each other in an inconsistent manner. It's an intermittent fault. And as a fellow programmer; those are the worst things to have.


mostly I was considering dividing the System grid into volumes that would be handled by the clients that are handling there respective ships to cut down on the amount of data points needed to be handled by the clients. but that would require having to work on larger amount of bump volumes than with this different approach; each client only needs to handle what it hits as the other clients will react in kind with there own collisions. That way there is no need to manage 4000+ possibility permutation and only bump check for each item in grid once per cycle and make the appropriate trajectory change for only one ship. The rest of the ships will do the same in kind. Also, please, any low end computer can handle bump calculation in the 100s of thousands on FPS games that have been around for a long time. There is no need to calculate polygon meshes only simple block volumes since the ships are huge anyways and quite slow relatively speaking.

Quote:
Now consider this; I have software that can intercept network packets coming in/out. What if I were to maliciously intercept packets that weren't in my favor, and inject packets that were?

Yes, that's reverse engineering and hacking, and explicitly forbidden in the EULA, but you can't ban me unless you catch me. The only way to do that in real time is verify my calculations are correct. If CCP does that; then they're doing the calculations themselves and at a rate that's equally as fast as myself (and everyone else on-grid).


Actually I have thought this through, and the counter to this point is actually in my very long post. Although admittedly, not obvious. I probably didn't make clear enough though, that any process that is offloaded to the client would be encrypted and its output scrambled per instance so that no hacking can be done in a timely manner to be used to favor anyone. Even though you intercept the packets on the network you wouldn't know what they meant because the order and meaning are changed by the Main server delivering a differently scrambled module that would load into your client each time you entered a system or there would be a timed reset so that the processing code and interaction result message to the Main server is not constant enough to be hacked.
Alvatore DiMarco
Capricious Endeavours Ltd
#15 - 2015-01-29 01:27:48 UTC
This sounds like a mountain of work for CCP that could be better spent unscrambling the legacy code they already have and rewriting it in a language that's multithreading-friendly.
Apolion
Light-year Enterprises
#16 - 2015-01-29 01:48:35 UTC
Adrie Atticus wrote:
Stop going into hypotheticals on how the computers would melt or glitches would happen, there is only a single reason why this is not feasible: network connections are too slow for this amount of data to be propagated, calculated, sent back to server and re-distributed to clients within the 1 sec server tick.

There is a reason why reducing a run on a motherboard by one millimeter will increase memory throughput by almost 9%. Stretch that run from 20 millimeters of well-constructed gold-plated wiring to thousands of kilometers of badly laid copper and you get the idea.


Not really. Remember that the same connection that feeds your client so that is can display the position of a 4000+ ship battle is the same network connection that your client uses to send your keystrokes to the main server so it can then handle turning your ship and changing its position on the grid firing your weapons ...and then sending back to you what your ship is doing and what state its in as a result of the actors that are interacting with you, so that your client can update your display.

I'm only suggesting that some of the truly immense calculations and messaging be divided and shared by the clients. It is not delayed by the stack of vey probably millions of packets that are being sent through thousands of very varied network connections and are coming at very random times. The data that is handled by the client is only that which pertains to its interactions with the system that it is in and the actors that are within it.

the magic of the idea is that of reducing data transfers to the Main server to only ship statuses ... ie position, weapons, hull conditions and inventory. The interaction between the ships them selves would be handled between the interacting ships and there clients.
Apolion
Light-year Enterprises
#17 - 2015-01-29 02:42:44 UTC
Alvatore DiMarco wrote:
This sounds like a mountain of work for CCP that could be better spent unscrambling the legacy code they already have and rewriting it in a language that's multithreading-friendly.


Brother I'm with you as long as they actually get to it!

But this thread is really to inspire the community to offer CCP and the EVE Devs, inventive and imaginative possibilities for there pondering. Lately EVE is getting a bit stagnant. The Ambulation attempt was half hearted and draped in miscommunications and underwhelming delivery. IT still taints the game even today and getting rid of the limitations of fundamental process should be a standard operating procedure For a cutting edge gaming company like this one. I would expect that most of us have played FPS games as well as other games that are based on ambulatory Avatars and expect at least that level of product to be matched.
The way the game is now run it will take enormous advancements in infrastructure and speed to ever have a world were we can walk into our ships and take on other player inside of it. I want to walk on those planets and call down a planetary bombardment from within EVE. I want to Fly my friends heavy drones and protect his Titan. I want to stab someone in the eye with a spoon if he deserves it or not.... And the only way we will get the promise is if we encourage CCP to dare take the steps to fulfil it .
We will never get the promise if we simply whine at each misstep CCP makes. Constructive criticism is uplifting ! Lets do that.
Reaver Glitterstim
The Scope
Gallente Federation
#18 - 2015-01-29 03:31:49 UTC
I think it could be done. The server could query the clients to solve encrypted floating point functions with reference numbers only and no indication of what they are for. The client sends the solutions back and the server benefits from reduced processing needed by outsourcing. It can't be hacked on-client because there is no way for a programmer to determine what each function is for and how to tamper with them for personal benefit. Also, due to the encryption, it would be difficult to make changes to the way the client responds without it being detectable as a fraudulent client.

But I'm really just talking based on what I've heard from others. I don't do programming.

FT Diomedes: "Reaver, sometimes I wonder what you are thinking when you sit down to post."

Frostys Virpio: "We have to give it to him that he does put more effort than the vast majority in his idea but damn does it sometime come out of nowhere."

elitatwo
Zansha Expansion
#19 - 2015-01-29 04:18:21 UTC
Reaver Glitterstim wrote:
I think it could be done. The server could query the clients to solve encrypted floating point functions with reference numbers only and no indication of what they are for. The client sends the solutions back and the server benefits from reduced processing needed by outsourcing. It can't be hacked on-client because there is no way for a programmer to determine what each function is for and how to tamper with them for personal benefit. Also, due to the encryption, it would be difficult to make changes to the way the client responds without it being detectable as a fraudulent client.

But I'm really just talking based on what I've heard from others. I don't do programming.


Reaver dear,
you shouldn't make deductions with information you cannot trust in the first place. This is EVE.

This is the last time I will ever elaborate on how EVE works.

EVE is a relational databse running M$ SQL Server 20?? and within that database is all the information stored from the basic attributes of ships, modules and our character attributes.

Taking our character 'skills', those attributes have an impact of how the variables on the ships your character is currently sitting in or not and how the modules on the ship interact with each other and other character ships and modules.

The there is the game engine itself based of rules that apply to everyone. Some are special but let's stay in known space for this where all of there rules are the same.

Now let's take you in a rifter in any solar system in an NPC station and you press 'undock'. The 'ship' you sit in is now an entity in the game engine that can be interected with by other clients.

Prior to the 'undock' command some attributes are checked against the database and your current skillpoints, which are also variables that are multiplied by a base entitiy of that rifter.

Let's say your character doesn't have 'hull upgrades' to level V yet and you turn on a meta 4 damage control.

Looks easy peesy on your screen.

But what happens is that the client starts to ask the database a crazy amount of questions that needs a respanse very quickly.

Let's speak 'client' for a moment:

Client: ask database, does character Reaver have skill 'hull upgrades'
Database: yes
Client: ask database, what level of 'hull upgrades' does character Reaver have right now?
Database: 'hull upgrade' IV
Client: request modules 'damage control' on
Database: okay
Client: modify 'bubble' rifter with the following attributes (hull upgrades level 4)
Database: proceed multiplication of attributes
Client: 'bubble rifter' is moving at position (x,y,z vector at speed (insert skill level 'navigation')
Engine: 'bubble entity rifter' is moving at vector, at speed
Engine: ask database, does character Reaver has navigation trained?
Databse: yes
Engine: ask database at what level character Reaver has trained navigation
Database: character Reaver has trained navigation to level III
Engine to client: change speed of 'bubble rifter' to 130m/s (which is 10% over character Reaver maximum possible speed of that bubble that you see at on your client right now)

This is only a tiny example of what is going on prior and during the 'undock' to enter space transition for let's say the Amarr trade station undock.

I simplified for the sake of comprehension. It is a little more complicated then that and there are a few more questions and responses handled, asked again, responded to.

While some people 'believe' they have a computer with some made up fancy words from the advertising department that sold you that machine and made you believe it is 'stronkhh' - it is not.

And while you 'believe' your modem connection might be able to send all those rquests and responses in time for all other connected clients, I suggest you go to college and take a few classes of computer science and engineering.

Eve Minions is recruiting.

This is the law of ship progression!

Aura sound-clips: Aura forever

Zan Shiro
Doomheim
#20 - 2015-01-29 15:56:10 UTC  |  Edited by: Zan Shiro
OP...you seem to be applying a distributed computer model here. It won't work.


DC models, the ones I have run anyway, do not run real time. You get a packet of work (with lots of things in them) and submit a bulk packet of work done on a schedule that is anything but real time.

DC models server end also do not act right away on the data. Its verified, cleaned, etc. This eats up time. Lets have data sent back to server in say XML. XML is a great language for transmitting data for example. However....its really just packaging. At some point the target needing the data cleans out all the tags and such in there, converts to needs and then...uses the data. This takes time. time that adds up as the iterations increase.

Then you are tacking on anti hack verification. Thats stuff like hashing and/or encapsulation. Thats gonna chip away at the processors milliseconds at a time,

You also may find even on your uber computer as these processes add up systems no matter now good say enough is enough. This would be why as a heavy DC project user in the past I found my best data crunching times I had were in the 16 hours I was away sleeping and at work. Folding at home had the whole computer to itself barring system processes running on cycles. the 8 "fun" hours I had if home...more daily use stuff I did the more it was fighting with others for resources. You see even moving a mouse will spike your system monitor a ltitle. Eve...has lots of mouse moving lol.
12Next page