liqd / thentos

A tool for privacy-preserving identity management (PPIM)
Other
56 stars 9 forks source link

Authorization: Concepts #77

Open mf59816 opened 9 years ago

mf59816 commented 9 years ago

I'm opening a ticket for discussion on dclabels and lio. Some of the questions I can think of:

  1. What is the relationship between access control and IFC?
  2. If we assign a DCLabel to an action, what does its integrity part mean? Who has had write access to the data in the past? Who is allowed to write it during the action execution? Something else? How does integrity relate to write protection? (Similar questions exist for secrecy.)
  3. The integrity part seems to have exactly the same mechanics as the secrecy part in the sense that turning the conjunction into a disjunction and vice versa in meet / join cancels out the reversal of the implication arrow in the definition of the can-flow-to relation. Is there a technical reason that it's the other way round, or is it motivated by intuition?
  4. Is there a simplification of disjunction category labels that we can map DCLabel into to understand them better?
  5. Which of label, clearance, privilege should we attach to data, actions, or other things in our code, and in which way? What does that mean?
  6. Are there articles / tutorials missing on the reading list below?

Our reading list so far:

fhartwig commented 9 years ago

For the reading list: http://www.scs.stanford.edu/~deian/pubs/giffin:2012:hails.pdf talks about labels in the context of a web framework, which might be helpful as an example for our use case.

fhartwig commented 9 years ago

This example might be interesting for the reading list as well: https://github.com/scslab/lio/blob/master/lio-simple/tutorial/blog-2-tutorial.md#secrecy-policy-drafts-are-only-readable-by-authors

fisx commented 9 years ago

Quoted from email (German, sorry!) -

On Tue, Jul 21, 2015 at 06:39:48PM +0200, @ChristianS:

Hi Matthias,

ich war bei dem NoSuchThentosSession auf dem falschen Dampfer. Das Problem ist nicht in der Transaction, sondern in der Action lookupThentosSession. Dort schlägt der Text "tryTaint (session ^. thSessAgent %% False)" fehl.

Aufgerufen wird die Action in Backend.Api.Proxy.

Was tun?

Date: Wed, 22 Jul 2015 08:21:13 +0200, @fisx:

lies mal das hier:

https://gist.github.com/fisx/6e6232b8cc66739b498a#file-lio-markdown

und dann das (insbesondere die reading list):

https://github.com/liqd/thentos/issues/77

die doku auf hackage zum lio package ist auch sehr hilfreich, wenn man sie mehrmals liest und zusammen mit den anderen dokumenten.

und wenn du genug gelesen hast, kannst du anfangen, die fehler zu suchen und zu fixen. das kann auch in einen eigenen PR.

in LIO.Missing in thentos-core gibt es eine zwei labeles dcBottom und dcTop. wenn ich jetzt nicht schon wieder alles durcheinanderbringe, sollte bei taint und guardWrite und guardAlloc (das sind die drei, die es gibt) dcBottom immer funktionieren, weil es keine zusätzlichen flow constraints erzeugen kann.

oh: kann es sein, dass in deinem fall unten der agent ein service ist, der sich für einen nutzer interessiert, der sich gerade anmelden möchte. falls ja: also see FIXME for addServiceRegistration in Thentos.Action.

ich bin mir sicher, dass man constraints "service darf auf service-session von nutzer zugreifen" oder auch "service darf email von nutzer haben, aber nur, wenn der nutzer das vorher erlaubt hat" alle hinschreiben kann. ich vermute, das dafür nimmt man dann LIO.Labeled und schreibt die policy mit in die datenbank. aber wo genau dann welcher label mit welcher variante von taint geschaltet werden muss, dafür haben wir keinen experten.

ChristianSi commented 9 years ago

For the time being we have agreed that failing LIO checks may simply be removed. The conceptual approach of the started/planned LIO integration still seems to be somewhat unclear.