Are memory safety and maximized data volatility mutually exclusive?
rmeijer <rmeijer-qWit8jRvyhVmR6Xm/[email protected]> Thu, 08 Oct 2015 10:23:18 +0200
| Newsgroups | gmane.comp.capabilities.general |
|---|---|
| Message-ID | <[email protected]> |
Working on software that handles sparse capabilities, I keep running into the issue that the desire to write maximally robust code and the desire to maximize the volatility of sensitive data seem to be mutually exclusive to the extreme. In C or C++ I don't have memory safety, yet the lack of memory safety gives me the power to overwrite sensitive data at the moment that the sensitive data is no longer functionally required. That means if I make a memory dump of the process a fraction of a second later, there is no trace of the sparse caps left. Doing the same with Python, the results differ and sometimes a sparse cap could linger in process memory hours after outliving its functional need from the programs perspective. While I haven't ported anything to for example Java or Javascript, I imagine given the apparent similarities in the design of such runtimes, the results would likely be similar for those languages. In fact, I would expect these languages to be worse given Python's reference counting based GC and that was the main reason I picked Python as first language to port to. I dislike the idea of memory insecurity. But I dislike the idea of powerful tokens of authority lingering in process memory for hours or more even more. So if I'dd need to choose at the moment it would be hard, but I guess I'dd go with the maximum volatility at the price of memory insecurity. I'dd still would rather have seen I didn't have to choose between two evils though. But for all practical purposes, the two desired properties seem to be mutually exclusive. Would these all be valid assertions? Or am I jumping to conclusions here? And if it is a valid assertion, are memory safety and sensitive data volatility mutually exclusive in a "fundamental" way? Or would it for example be possible to create a memory safe or even capability secure programming language that supports sensitive-data volatility? Rob