We recently hear of a massive data breach wherein someone seems to have exfiltrated from Yahoo’s computers, detailed information about 500,000,000 of its customers. There are presumably many Yahoo employees with legitimate access to that information and many programs with routine access to that data between the data and those employees. Among these many employees we must fear some malfeasance. I suggest here a capability pattern to avoid such massive breaches even so.
By “breach” I mean failure of veiling. We need a better word; “steal” or “theft” suggests the rightful owner no longer has it. In this note “anti-breach” refers to steps taken to prevent more than a small fraction of the data leaving the system except as dictated by system design.
There are several sorts of ‘legitimate access’:
Some seeming problems may be solved by building virtual massive databases with fictitious users, for debugging programs that need massive read access but must be confined when run on real data. I don’t think this is a real problem, however.
In the Yahoo case the new session initiator is probably the heaviest user of the data base.
These initiators are probably geographically distributed and concomitantly more vulnerable. They can steal the plain password of clients whose traffic passes thru them. They can guess user names and steal hashed passwords when they guess correctly but they tend to reveal themselves if they guess wrong too often. This code presumably runs physically close to the code that with access to the symmetric crypto TLS session key. I guess that the questions are “How good is transmission of opaque caps?, How secure is the platform of the initiator?, How simple is the code?”.
Note that the initiator lacks access to the account and that the session server lacks access to even the hashed password. The session server has access only to those accounts allocated to it by the initiators. I think it is clear that there is one small critical component that must merely be done right and on which anti-breach logic does rely: The initiator which includes password checking and may include TLS code. Continuity of security across the TLS and password checking is vital and this component must also live on an extra secure platform. These are difficult security anti-breach problems with the initiator that the ideas in this note do not bear on.
This is merely a modification and extension of ideas designed long ago for Derwent.
There may be a partitioning of the database so that one client’s data is within one partition. This is a hack which might improve protection but might not be necessary.
There is an order on adm (method in normal language) to create and return a database ‘portal’ that returns n ‘account references’ per day. An account reference is a capability. Such a portal can be made rescindable but that is someone else logic, not part of adm. An ‘account reference’ can examine and modify the properties within a customer account. For each account there are facets to its account reference that limit actions on that account. For each sort of reference there is an order on amd that returns a portal limited to such facets.
We need at this point to consider that a company such as Yahoo provides data serves between its clients. The state of an account will include capabilities of some sort to other accounts, perhaps in other partitions. We also need to consider the lifetime of these account capabilities. Perhaps the server object that services a session, retains an account cap for only the duration of the session. This design needs better information on the service of the institution. (Loose end!!)
Another order on adm sends a sealed factory. That factory produces objects that are allowed unlimited access to RO account capabilities. This order requires discreet factories. There are probably other resource limits on the yields of the factory.
There are other tools for the admin that help remember past admin actions and provide tools to rescind those.