Title: object capability demonstration using secure VATs · Issue #29 · Dstack-TEE/dstack-examples · GitHub
Open Graph Title: object capability demonstration using secure VATs · Issue #29 · Dstack-TEE/dstack-examples
X Title: object capability demonstration using secure VATs · Issue #29 · Dstack-TEE/dstack-examples
Description: There's a great body of work on object capability languages as a way of managing the risk of running untrusted code modules by only exposing limited fine-grained capabilities to the untrusted code. http://www.erights.org/ But, while the ...
Open Graph Description: There's a great body of work on object capability languages as a way of managing the risk of running untrusted code modules by only exposing limited fine-grained capabilities to the untrusted code....
X Description: There's a great body of work on object capability languages as a way of managing the risk of running untrusted code modules by only exposing limited fine-grained capabilities to the untrusted c...
Opengraph URL: https://github.com/Dstack-TEE/dstack-examples/issues/29
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"object capability demonstration using secure VATs","articleBody":"There's a great body of work on object capability languages as a way of managing the risk of running untrusted code modules by only exposing limited fine-grained capabilities to the untrusted code.\n\nhttp://www.erights.org/\n\nBut, while the subject is untrusted code, the environment itself in which the code runs, called a \"Vat\", must be considered trusted. \n\n\n\nThis is problematic when using cross-vat distributed code, because one malicious vat can steal the \"Swiss number\" references (random unguessable strings, effectively symmetric keys). \n\nThis makes it hard to reconcile object capability languages with smart contracts. In smart contracts we go out of our way to run consensus protocols so that a trusted environment can be built on untrusted nodes, but we can't assume privacy and so we can't use Swiss number references.\n\nSo now, by instantiating the vat with Dstack, we might be able to close this gap and draw some more insights or better composition / better hardening as a result.\n\nAs a starting point, we might simply run existing ocap sandbox in Dstack, possibly adding a new shim for referencing objects in different Dstack instances as different vats\nhttps://github.com/endojs/endo\n\nA more thoughtful example probably needs to illustrate some pattern of passing serialized/hardened code, containing Swiss numbers or even private keys, between such sandboxes. Needs more thought though\n\nchatgpt discussion:\nhttps://chatgpt.com/share/67ff0b25-b580-8009-a13b-d5ca70cb5fb7\n\n","author":{"url":"https://github.com/amiller","@type":"Person","name":"amiller"},"datePublished":"2025-04-16T02:32:47.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/29/dstack-examples/issues/29"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:db3a9ebf-bef7-c3de-0fd5-e62b6667d205 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E196:396BA2:442E1A:5F5172:69778E86 |
| html-safe-nonce | 87177fd56325f8ecaed0d13d901239b3b25c5dbbf91b9ae6951901c61c52433c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFMTk2OjM5NkJBMjo0NDJFMUE6NUY1MTcyOjY5Nzc4RTg2IiwidmlzaXRvcl9pZCI6IjUxNDI0OTM2MjgwODA4MTk4NDYiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 2c8d3a1ef8bf09c38cf377a94ea7f383cdaa8324e535ee7259e906ca6721450b |
| hovercard-subject-tag | issue:2998160017 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/Dstack-TEE/dstack-examples/29/issue_layout |
| twitter:image | https://opengraph.githubassets.com/6db056fce2d392624b95baba783006725e7f946808a757754267cae803d51019/Dstack-TEE/dstack-examples/issues/29 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/6db056fce2d392624b95baba783006725e7f946808a757754267cae803d51019/Dstack-TEE/dstack-examples/issues/29 |
| og:image:alt | There's a great body of work on object capability languages as a way of managing the risk of running untrusted code modules by only exposing limited fine-grained capabilities to the untrusted code.... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | amiller |
| hostname | github.com |
| expected-hostname | github.com |
| None | fd37f8e74ecc49b700617ea694fa6d7b395b6c9a4b79c59b3014da220462ac69 |
| turbo-cache-control | no-preview |
| go-import | github.com/Dstack-TEE/dstack-examples git https://github.com/Dstack-TEE/dstack-examples.git |
| octolytics-dimension-user_id | 187594727 |
| octolytics-dimension-user_login | Dstack-TEE |
| octolytics-dimension-repository_id | 904954254 |
| octolytics-dimension-repository_nwo | Dstack-TEE/dstack-examples |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 904954254 |
| octolytics-dimension-repository_network_root_nwo | Dstack-TEE/dstack-examples |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | acb9f387e67b45e2eeb6a57ef561ec67eb21d805 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width