Sierra
An OpenPrivacy
Reputation Management Framework
Reputation
Webster defines "reputation" as:
- The general estimation in which a person is held by the public.
- The state or situation of being held in high esteem.
- A specific characteristic or trait ascribed to a person or thing: a reputation for courtesy.
OpenPrivacy defines a new first class object named Reputation based on
this concept. Applications create Reputations and consume external
Reputations in order to make decisions.
Every Reputation:
-
... has an associated Nym which created it (generally a Public Key)
-
... must be a signed by the Nym.
-
... points to a Reference ( which typically is a URI ) to which applies.
-
... must contain a Payload which describes the opinion of the Nym about the
Reference.
-
... should also contain meta-info which can be used by an RMF for
optimization. This could contain the creation date, expiration date, etc.
Therefore a Reputation could be represented as:
Reputation = [[Nym, Reference, Payload+] Signature]
A Reputation is backed by a Nym. This makes it possible to for the creator to
gain/loose reputation based on what they have said. This also allows future
messages which originate from them to obtain a default Reputation. It is
generally a good idea to use only a few Nyms, this way a user or application
will gain Reputation. If a user wishes to preserve his privacy he can create a
new Nym for each new Reputation.
The Signature allows for the message to be verified that it did actually
originate from that Nym. This is important, especially in distributed
applications as a forged message would damage the reliability of such a
system. If there were no Signatures users could fake messages from others
to increase their own Reputation.
The Reference is used to establish a relation between this Reputation and
another object.
Generally a Reference is a URI which points to another another object.
Using a URI allows a Reputation to point to objects even outside of
cyberspace. If you wanted to you could create a Reference which points
to your house noting how nice the hardwood floors were.
A Payload can also hold additional meta-data such as the Reputation's
creation time, expiration date, etc. Payloads are flexible so that a
developer can insert whatever information they want based on application
requirements.
Components:
Reputation:
Contains all information for a Reputation request. This is an interface for
an object which is the central piece of data within the Sierra Reputation
Management System.
The Signature allows for the message to be verified that it did actually
originate from that Nym. This is important, especially in distributed
applications as a forged message would damage the reliability of such a
system. If there were no Signatures users could fake messages from others
to increase their own Reputation.
+addPayload (Payload) : void
-------------------------------------------------------------------------
+getNym () : Nym
-------------------------------------------------------------------------
+getPayloads () : Enumeration
-------------------------------------------------------------------------
+getReference () : Reference
-------------------------------------------------------------------------
Return a unique, possibly verifiable, hash for this Reputation.
Depending on the principal, this will return a hash/signature value for
this object. In most real world situations, this will be computed from
the private key of the Nym which created it. If based on a
private/public key pair this must be computed before it is sent to
another RMS.
There are numerous methods of generating a hash:
* From a private key and validated by a public key.
* MD5 version of the raw data. The server has no way to validate the
intgrity of the message with this option.
* If done with a Java Virtual Machine.. a hashCode(). Note that this
method is not secure but should work in debug environments (where it
should remain).
NOTE that if this object is modified it's SignatureValue needs to be
updated. It is important that this is updated everytime you pass it
around within the system. Your local application can modify a Reputation
object as much as it wants but if it wants to pass this to another
application running as another Nym or possibly another server it needs
to update the signature value.
+getSignatureValue () : SignatureValue
-------------------------------------------------------------------------
Get the URI for this Reputation. Should be:
reputation://[SERVER]/NYM/HASH
The SERVER is optional.
The NYM and HASH information needs to be ascii armored.
+getURI () : URI
-------------------------------------------------------------------------
+removePayload (Payload) : void
-------------------------------------------------------------------------
+setNym (Nym) : void
-------------------------------------------------------------------------
+setReference (Reference) : void
-------------------------------------------------------------------------
+setReference (URI) : void
-------------------------------------------------------------------------
+setReference (String) : void
Payload:
Payloads are used to hold information about the Reference. Generally these
are just chunks of data about the Reference which are relevant to the given
context.
Example:
For the given Reference: "http://www.openprivacy.org"
Payload of "this is a really good web site".
Get the current identifier for this payload. This is just a URI that
uniquely identifies this type of payload. This does not have to be
specified but has been added to the Payload component so that all
Payloads have support for
+getIdentifier () : URI
Reference:
A Reference is a pointer to an object (an edge pointing to a node). This is
generally a URI or a URL.
A Reference represents an edge between two nodes in a graph. Since this
edge may contain additional data it shouldn't be limited to just URI data.
Developers can extend the Reference component to include their own meta data
which could also include metadata or edge capacity information.
+getURI () : URI
-------------------------------------------------------------------------
+setURI (URI) : void
Sierra has
additional documentation for this package.
|