-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
initial draft of trust relationships #306
Conversation
✔️ Deploy Preview for gnap-core-protocol-editors-draft ready! 🔨 Explore the source changes: db7453f 🔍 Inspect the deploy log: https://app.netlify.com/sites/gnap-core-protocol-editors-draft/deploys/614e0822e00bfa0007beb159 😎 Browse the preview: https://deploy-preview-306--gnap-core-protocol-editors-draft.netlify.app/draft-ietf-gnap-core-protocol |
This is a great start. RS override of an access token is the most common source of confusion in UMA 2 and other use cases where trust does not assume broad federation. For example, a client involved in a Denial of Service attack on the RS, would need to be blocked no matter the validity of the access token. This issue is typically cited as the reason for:
Censorship of the AS or the client by the RS is a huge privacy problem because it limits the opportunity for agency on the part of the RO. The RS is typically in a position to impose terms on the RO and, given a security excuse, will typically compromise privacy. Mitigation of this RS censorship issue can involve notification of the RO directly or via the AS and other means that could be out of scope for GNAP. This issue is so common and so important, however, that I hope we can mention it as part of this section. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a great start. Needs to have changelog updated but overall is good.
fix weird editing stuff (I'll have to investigate)
About Section 1.4 Trust relationships The first sentence states:
This is not a trust objective, nor a trust relationship, since a trust relationship is defined between two components The second sentence considers the following pairs of roles:
The trust relationships between the end-user and the AS are not described. Furthermore, it cannot be inferred form a transitive trust relationship that would exist between the end-user and the client on one side and the client and the AS on the other side. This leaves wide open how end-users can be authenticated by the ASs In addition, the following text does not detail these six relationships in terms of trust. In particular,
The text is mute whether Capabilities based Access Control (CBAC) and/or Attribute based Access Control (ABAC) are supported. For each case, the trust conditions are different. Reading "between the lines", it appears that only capabilities are supported in draft-07, whereas both CBAC and ABAC should be supported. See draft-pinkas-gnap-core-protocol-00 which details the trust relationships for each case. In summary, this section is unable to correctly describe the trust relationships between the components of the system.
The Art of Poetry, written in French by the Sieur de Boileau, Made English. In French:
|
Denis, I appreciate Poetry but your comments are obviously made without the understanding of promises and trust. Please refer to the definitions, instead of making vague arguments. |
On Sat, Oct 2, 2021 at 5:24 PM Denisthemalice ***@***.***> wrote:
<snip>
This leaves wide open how end-users can be authenticated by the ASs
I don't see this as a problem. An example might help.
<snip>
-
-
for the AS/RS relationship, the text states that " the AS promises to
issue valid access tokens to legitimate client requests". Here again, the
key question is not what the AS does or is supposed to do, but what kind of
"promise" made by the AS is or is not trusted by the RS. In addition an
AS/RS relationship has nothing to do with "legitimate client requests".
I tend to agree with Denis here. The AS should not make any promises to
the RS. The AS promises are only to the RO. The AS is a delegate of the RO
and the RS that doesn't like giving that power to the RO should
withhold their services.
-
The text is mute whether Capabilities based Access Control (CBAC) and/or
Attribute based Access Control (ABAC) are supported.
That's not a big problem. Although ABAC has the same issues as
identity-based access control (what do we call IBAC?), I don't see GNAP
needing to outlaw IBAC or ABAC as long as CBAC and token introspection are
natively supported.
- Adrian
—
… You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#306 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AABB4YMNNFAPN7JPXUKVKRTUE52AJANCNFSM5C54IRJA>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
|
"The AS should not make any promises to An example (not to be understood as a requirement, just an illustration) has recently been provided by Josh Mandel, with the wish that the service may audit the origin of client instance accesses. |
@fimbault The Book of Promises (a 318 pages thick document) is not a document that is currently used in the security community. The concept of trust is even left undefined in section 1.4 THE MAIN CONCEPTS However, the two following definitions are present:
The first sentences defining what trust means are on pages 108 and 109:
About Proposal 1: In computer security, we consider that the security level of a chain is equivalent to the security level of the weakest link of the chain. We do not compose with the probabilities of the various links of a chain. IMO, the book of promises is well adapted in a supply chain where one or more elements of a chain can fail due to some circumstances like weather, strikes, or incidents. It is not suited for computer security protocols which deal with unilateral relationships between two components. This section should consider the concept of trust (i.e. Agent A trusts Agent B for some kind of behavior C) |
Back on Denis's comments in more detail :
All those comments obviously come directly from the hypothesis you've put into your pinkas draft, but GNAP doesn't adhere to most of those. The trust description in the pinkas draft mixes issues that are actually security or privacy issues, which is exactly what we decided not to do.
|
@Denisthemalice You seem to dislike "promise theory", for no other reason that you don't know about it (and obviously didn't try bothering, as your comments demonstrate). But your alternative is only to say that "A trusts B for action C", which doesn't bring any definition at all, it just makes it circular. "Trust is trust"... doesn't help me. Promise theory does bring those definitions in a formal way (and originates from IT). |
ISO 10181-1 defines trust in the following way:
|
Yes, a very all or nothing definition that doesn't fit well with modular system design. As you correctly point out, overall security is based on the weakest link, so it's hard to define trust as something you blindly rely upon. We instead need a model upon which we can reason about. |
@fimbault said:
@jricher said in https://mailarchive.ietf.org/arch/msg/txauth/eV8O7KjGnXE6tQn5DlSvCA7EmQw/
I hope GNAP can be absolutely clear that having the RO specify where her privacy policies are stored and available as an AS does not mean giving the RS "complete security control". This sets up an undesirable compromise between privacy and security. GNAP must not force the RO to share policies with the RS trust domain regardless of whether that trust domain implements their own AS for their own policy reasons. As mentioned in #306 (comment), RS security overrides to an access token are always available to the RS. What's important is that the RS:
I'm not saying that these security override features must be normative in GNAP core. I am insisting that GNAP core enable and describe how the RO can specify the GANP AS that will have their policies when some end-user presents via some client. |
Yes, said differently, it's not possible to define trust statically, it's context dependant (including policy decisions, threats, etc.) |
@fimbault How does this relate to my comments #306 (comment) and #306 (comment) and elsewhere as, effectively allowing the RO to choose the AS that has their policies as controller of any particular RS? |
The current thread is about trust relationships. My answer relates to your comments insofar an implementation of what you describe actually involves policies which may or may not change how some of the actors (the RO in particular) involved in the protocol may assess trust. Of course the current thread doesn't go beyond that. |
No description provided.