%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\documentstyle[12pt,twoside,alltt]{article}
\documentstyle[12pt,twoside,alltt,psfig]{article}
% is the line you should use IF you're using EPS images.
% make sure to copy the psfig.sty file into the directory with
% the latex document however.
\textwidth=6in
\oddsidemargin=0.25in
\evensidemargin=0.25in
\topmargin=-0.1in
\footskip=0.8in
\parindent=0.0cm
\parskip=0.3cm
\textheight=8.00in
\setcounter{tocdepth} {3}
\setcounter{secnumdepth} {2}
\sloppy

\newenvironment{proof}{\noindent{\bf Proof:}}{\qed\bigskip}
\newenvironment{proof_sketch}{\noindent{\bf Sketch of 
Proof}\hspace*{1em}}{\qed\bigskip}

\newtheorem{theorem}{Theorem}
\newtheorem{corollary}{Corollary}
\newtheorem{lemma}{Lemma}
\newtheorem{claim}{Claim}
\newtheorem{fact}{Fact}
\newtheorem{definition}{Definition}
\newtheorem{assumption}{Assumption}
\newtheorem{observation}{Observation}
\newtheorem{example}{Example}
\newcommand{\qed}{\rule{7pt}{7pt}}

\newcommand{\lecture}[4]{
\pagestyle{headings}
\thispagestyle{plain}
\newpage
\noindent
\begin{center}
\framebox{
\vbox{
\hbox to 5.75in { {\bf 6.857 Computer and Network Security
\hfill Fall Term, 1997}  }
\vspace{4mm}
\hbox to 5.75in { {\Large \hfill Lecture #1 : #2 \hfill} }
\vspace{2mm}
\hbox to 5.75in { {\it Lecturer: #3 \hfill Scribe: #4} }
}
}
\end{center}
\markboth{Lecture #1 : #2}{Lecture #1 : #2}
\vspace*{4mm}
}

\begin{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Lecture command takes 4 arguments:
%		ordinal number of the lecure
%		date of the lecure
%		lecturer
%		scribe---that is you
%
\lecture{21}{November 18, 1997}{Ron Rivest}{James Megquier} 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% For theorems, lemmas, definitions, remarks, etc. use commands
% \begin{theorem} .... \end{theorem} 
% \begin{definition} ... \end{definition} 
% \begin{proof} ... \end{proof}
% and so on ...
%
% If you want to insert figures in your notes do the following: 
% 1) Prepare your figures using your favourite graphic editor
% 	for example idraw or xfig
% 2) Save your pictures in PostScript form using the following convention
% 	notes-nn-fig-mm.eps where nn is the number of the lecture you 
% 	are scribing and mm is the sequential number of the picture in the 
% 	notes
% 3) Insert the following block in your LaTeX code in the place you 
% 	want to insert the figure. HOWEVER, leave it commented or follow
%	  the instructions at the top if you want to latex it on Athena. 
%
% \begin{figure}[h]
% \begin{center}
% \mbox{\psfig{figure=notes-nn-fig-mm.eps}}
% \caption{A very nice picture.}
% \label{fig:mm}
% \end{center}
% \end{figure}
%
% 	of course the picture will not show up when you compile and 
% 	print your notes, but don't worry the TA will take care of it. 
% 4) When you mail the TA the LaTeX code mail him/her the PostScript
%	files for the figures as well 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Your notes start here!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Topics}

\begin{itemize}
\item SDSI/SPKI ({\em sudsy/spooky})
	\begin{itemize}
	\item Without naming
		\begin{itemize}
		\item authorization/delegation
		\item keys as principals
		\item authorization certs, requests \& tags, propagation control,
				acl's, threshold
		\end{itemize}
	\item Naming
		\begin{itemize}
		\item local name spaces
		\item name certs (defs)
		\end{itemize}
	\end{itemize}
\end{itemize}

  SDSI/SPKI is ``research in progress'' by Ron Rivest, Butler Lampson,
and Carl Ellison.  It provides a framework for general client/server
requests such as web page access.  Canonical example: to control who
accesses a page, a server makes decisions as to whether to honor a client
request.

\section{Main Focus: Authorization}

\begin{itemize}
\item Client proves to server that he is authorized to make request.
		(shouldn't be too much work for sesrver; he handles a lot of
		requests) (see figure~\ref{fig:1}).

\begin{figure}[h]
\begin{center}
\mbox{\psfig{figure=notes-21-fig-01.eps}}
\caption{client request}
\label{fig:1}
\end{center}
\end{figure}

\item Server maintains some objects.
		(has some Access Control List or database).

\item Client proves he'ss a party in the ACL.
		E.g., by giving a digital signature
		
\item Perhaps some dialogue: (see figure~\ref{fig:2})

\begin{figure}[h]
\begin{center}
\mbox{\psfig{figure=notes-21-fig-02.eps}}
\caption{conversation}
\label{fig:2}
\end{center}
\end{figure}

{\bf Delegation:}
\item A party may delegate authority to someone else.
		e.g., hierarchy; organization $\rightarrow$ member.
		might have chain of certificate

\end{itemize}

\subsection{Keys and Principles}

It was decided {\em not} to go through classical, hierarchical global
name structure.  It seems to get in the way.

\begin{itemize}
\item Keys are the thing: they are the principles (not people, etc.).
		Keys are the ``actors'' in cyberspace.

\item May have keyholders, but we don't talk about who those are.

\item Key can make requests, have authority, etc.
		(assume some mechanism for figuring out who goes with what key).
		This goes with ``no global naming.''
\end{itemize}



\section{Without Naming}

\subsection{Authentication}

What is a request?

	request:	form filled in
				parameters
				digitally signed
				
We ignore what language these are in, and think of them as being {\em s-exprs}.

Examples of requests:

\begin{verbatim}
(read-file
    (file-name ``foo.bar''))

(open-dam
    (from 12:00)
    (to    1:00))
\end{verbatim}

What's an ACL?
	acl:		who are the parties (list of public keys)
				authorized to do what

To specify classes of s-exprs, we use a generalized s-expr:

\begin{verbatim}
(read-file (file-name (* prefix ``/www/bob'')))

(transfer
    (from-account (* set 123 456))
    (to-account 15)
    (amount (* range 1 1000)))
\end{verbatim}
   
The wildcard operators (* prefix, * range, and * set) allow sets of
s-exprs to be specified.
	
\subsection{Delegation}

acl is a kind of {\em delegation} from object owner to keyholder.
We'd like recipient to be able to pass that on.

(e.g., $k_0$ gives something to $k_1$)

\begin{verbatim}
delegation-certificate:
    issuer: (k0)
    subject (recipient): (k1) 
    tag: generalized s-expr
(signed by k0)
\end{verbatim}

Bob might delegate less authority than he was given. (see figure~\ref{fig:3})

\begin{figure}[h]
\begin{center}
\mbox{\psfig{figure=notes-21-fig-03.eps}}
\caption{delegation}
\label{fig:3}
\end{center}
\end{figure}

Alice now wants to read the file.  She has to convince the server to
let her do it.  Alice needs to present all certificates (chain) to
server.  She needs the complete chain, with effective tag
	$$tag_0 \cap tag_1 \cap \ldots \cap tag_n$$

\subsection{Propagation Control}
	Subscriptions to the Wall Street Journal, for example, don't want
	recipients to be able to keep delegating ability to read it.
	
Add field to delegation cert:

\begin{verbatim}
delegation-certificate:
    issuer:                 (k0)
    subject (recipient):    (k1)
    tag: generalized s-expr
    propagation: allowed/disallowed
(signed by k0)
\end{verbatim}

The first acl is effectively isssued by the server to public key. (recip).

\subsection{Thresholds}
  Some debate as to whether to do this; it's in the proposal.

The subject header above might read:

\begin{verbatim}
    subject: (threshold 2/3 k1, k2, k3)
\end{verbatim}

Instead of a chain of certificates, you present a tree of certificates (see figure~\ref{fig:4}):

\begin{figure}[h]
\begin{center}
\mbox{\psfig{figure=notes-21-fig-04.eps}}
\caption{certificate tree}
\label{fig:4}
\end{center}
\end{figure}

Alice shows how the keys fit in the tree to satisfy the threshold.

\section{Naming}
Up to this point, we have the complete picture, without naming.
Not very auditable or human-friendly.

Back to names.

Historical sidebar:
That stuff was SPKI (Simple Public Key Infrastructure --- Carl Ellison) mostly.
At the same time, Rivest and Lampson were working on the SDSI (Simple
Distributed Security Infrastructure).  Eventually, they started to
combine the two.

Where does a user see the names?
\begin{enumerate}
\item acl: {em who} are parties
\item naming-cert: to figure out what names mean
\end{enumerate}

Global names are hard.  We'll use an engineering solution:

\begin{verbatim}
delegation-cert:
 	issuer:
 	subject: (could be name)
 	...
\end{verbatim}

Names have contexts.  Each key has an associated namespace, all potentially
unrelated. (see figure~\ref{fig:5})

\begin{figure}[h]
\begin{center}
\mbox{\psfig{figure=notes-21-fig-05.eps}}
\caption{name context}
\label{fig:5}
\end{center}
\end{figure}

Definitions of names need to be exportable.
\begin{verbatim}
definition-certificate:
    issuer:	k0 Alice (Alice is the name being defined)
    subject (value): k1
(signed by k0)
\end{verbatim}

This is a lot like the conventional hierarchicical name-certs.
But they also allow: (see figure~\ref{fig:6})
\begin{verbatim}
subject: k1 Mary
    that is, whatever k1's ``Mary'' means.

or

subject: k1 Mary mother
\end{verbatim}

\begin{figure}[h]
\begin{center}
\mbox{\psfig{figure=notes-21-fig-06.eps}}
\caption{naming context}
\label{fig:6}
\end{center}
\end{figure}
		
Can expire, can issue new ones.
Can have several active at the same time, etc. (see figure~\ref{fig:7})

\begin{figure}[h]
\begin{center}
\mbox{\psfig{figure=notes-21-fig-07.eps}}
\caption{delegation}
\label{fig:7}
\end{center}
\end{figure}

$k_0$ = MIT				\\
$k_1$ = eecs			\\
$k_2$ = rivest			\\
$k_5$ = rivest's secy	\\

\begin{itemize}
\item	acl
	
\item	\underline{$k_0$ mit-faculty} secy

		(has multiple definitions, one of which is...)

\item	\underline{$k_0$ eecs-faculty} secy
	
\item	\underline{$k_1$ rivest} secy
	
\item	\underline{$k_2$} secy
	
\item	$k_5$

\end{itemize}

Names delegate ability to name parties.

groups = multiple definitions; use a theorem prover to derive them.

\begin{itemize}
\item Delegation, etc. through public key space
\item Names to handle delegation in a user-friendly way,
	using definition certs.
\end{itemize}

Other details, issues:
	\begin{itemize}
	\item Revokation
	\item Query a principle to double-check if a cert is valid
		(mark cert as verifiable)
	$\vdots$
	\end{itemize}

Note that the naming is a superset of global naming; for large-scale
systems, you can implement hierarchies as trees.

Building an infrastructure is still open and interesting; need to worry about:
\begin{itemize}
	\item Easy to use
	\item Convenient naming
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Your notes end here!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\end{document}
