
SPKI emphasizes naming, groups, ease-of-use, and flexible authorizations. To ac-
cess a protected resource, a client must present proof that it is authorized to the server;
this proof takes the form of a “certificate chain” proving that the client’s public key is in
one of the groups on the resource’s ACL. In SPKI, the onus of identification and proof
of authority to do something is left on the user. Every principal can issue/define the key
bindings locally using an identifier which is valid only locally but the underlying raw
public key is valid globally. So, the SPKI principals can issue certificates binding other
principal’s keys or names (called extended names) at discretion. An authorization grant
is made only locally. If a principal needs to grant authorization to someone beyond her
locality, then she may (must) delegate that grant through a chain of local relationships.
Formally SPKI certificates are defined below:
– A name certificate C is a signed four-tuple (K, A, S, V ):
• The issuer K is a public key; the certificate is signed by K.
• The identif ier A (together with the issuer) determines the local name “KA”
that is being defined; the name belongs to the local name space of key K.
• The subject S is a key or a local name defined in the other key’s name space
to which issuer of this certificate binds its local name.
• The validity specification V provides additional information allowing one
to ascertain if the certificate is currently valid, beyond the obvious verification
of the certificate signature.
– An authorization certificate C is a signed five-tuple (K, S, D, T, V ): where,
• delegation bit D, if true, grants the subject permission to further delegate to
others the authorization it is receiving via this certificate.
• authorization specification or authorization tag , T , that specifies per-
missions being granted.
A brief functional outline of the authorization computation using rewrite rules is illus-
trated with the following scenario: Let principal K serve a resource denoted by RE-
SOURCE and specify the ACL for its access. K authorizes principals K
1
, K
2
, K
3
to act
as retailers for its service. A principal K
s
subscribes for the RES OURCE service via one
of the retailers. Let us see how the subscriber K
s
comes up with an authorization proof
to access RESOU RCE, and how the resource owner K makes use of group certificates
and extended names to efficiently specify and manage the access to the resource. Design
for such a policy is given below, using short-hand denotations for the sake of simplicity;
– K retailers → {K
1
, K
2
, K
3
} is a “retailers” group defined by principal K and
it can enforce a common policy on all the three subject principals by just narrating
the policy over the name definition retailers.
– K customers → {K
A
, K
B
, K
3
customers} is another local group definition by
principal K, where it has included another group i.e. K
3
’s customers apart from
K
A
and K
B
, where K
3
customers → {K
p
, K
q
, K
r
, K
s
}.
– Principal K consolidates its groups by issuing
K subscribers → {K retailers, K customers} and empowers its members to
access the RESOU RCE by making an authorization definition,
KRESOURCE → K subscribers ¤. The live delegation flag allows members of group
subscribers to further delegate the authority.
3