aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/Makefile9
-rw-r--r--docs/bpki-asymmetric.dot (renamed from docs/bpki.dot)53
-rw-r--r--docs/bpki-asymmetric.pdfbin0 -> 5150 bytes
-rw-r--r--docs/bpki-symmetric.dot59
-rw-r--r--docs/bpki-symmetric.pdfbin0 -> 4586 bytes
-rw-r--r--docs/bpki.pdfbin7456 -> 45973 bytes
-rw-r--r--docs/bpki.tex78
7 files changed, 145 insertions, 54 deletions
diff --git a/docs/Makefile b/docs/Makefile
index 1524df0a..c352212a 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -2,10 +2,17 @@
all: rpki-db-schema.pdf sample-irdb.pdf repository-engine-objects.pdf bpki.pdf
-.SUFFIXES: .pdf .sql .dot
+bpki.pdf: bpki-symmetric.pdf bpki-asymmetric.pdf
+
+.SUFFIXES: .pdf .sql .dot .tex
.sql.pdf:
sh ../scripts/graphviz-sql.sh $<
.dot.pdf:
dot -Tps2 $< | ps2pdf - $@
+
+.tex.pdf:
+ pdflatex $<
+ pdflatex $<
+ rm -f $*.log $*.aux
diff --git a/docs/bpki.dot b/docs/bpki-asymmetric.dot
index d2cc8424..9497b27e 100644
--- a/docs/bpki.dot
+++ b/docs/bpki-asymmetric.dot
@@ -1,10 +1,5 @@
// $Id$
//
-// Pictures to show why I prefer the symmetric BPKI model. As far as
-// I can tell, the asymmetric model is every bit as complex for me as
-// the symmetric model; the only difference is the added annoyance of
-// having to keep track of a larger number of BSC EE certificates.
-//
// Color code:
// Black: Hosting entity
// Blue: Hosted entity
@@ -15,54 +10,6 @@
// Diamond: CA
// Record: EE
-digraph bpki_symmetric {
- rotate = 90; size = "11,8.5"; splines = true; ratio = fill;
-
- // Hosting entity
- node [ color = black, shape = record ];
- TA [ shape = octagon ];
- rpkid [ label = "rpkid|{HTTPS server|HTTPS left-right client|CMS left-right}" ];
- irdbd [ label = "irdbd|{HTTPS left-right server|CMS left-right}" ];
- irbe [ label = "IRBE|{HTTPS left-right client|CMS left-right}" ];
-
- // Hosted entities
- node [ color = blue, fontcolor = blue ];
- Alice_CA [ shape = diamond ];
- Alice_EE [ label = "Alice\nBSC EE|{HTTPS up-down client|CMS up-down}" ];
- Ellen_CA [ shape = diamond ];
- Ellen_EE [ label = "Ellen\nBSC EE|{HTTPS up-down client|CMS up-down}" ];
-
- // Peers
- node [ color = red, fontcolor = red, shape = diamond ];
- Bob_CA;
- Carol_CA;
- Dave_CA;
- Frank_CA;
- Ginny_CA;
- Harry_CA;
-
- edge [ color = black, style = solid ];
- TA -> Alice_CA;
- TA -> Ellen_CA;
-
- edge [ color = black, style = dashed ];
- TA -> rpkid;
- TA -> irdbd;
- TA -> irbe;
-
- edge [ color = blue, style = solid ];
- Alice_CA -> Bob_CA;
- Alice_CA -> Carol_CA;
- Alice_CA -> Dave_CA;
- Ellen_CA -> Frank_CA;
- Ellen_CA -> Ginny_CA;
- Ellen_CA -> Harry_CA;
-
- edge [ color = blue, style = dashed ]
- Alice_CA -> Alice_EE;
- Ellen_CA -> Ellen_EE;
-}
-
digraph bpki_asymmetric {
rotate = 90; size = "11,8.5"; splines = true; ratio = fill;
diff --git a/docs/bpki-asymmetric.pdf b/docs/bpki-asymmetric.pdf
new file mode 100644
index 00000000..cf444ab2
--- /dev/null
+++ b/docs/bpki-asymmetric.pdf
Binary files differ
diff --git a/docs/bpki-symmetric.dot b/docs/bpki-symmetric.dot
new file mode 100644
index 00000000..968715d9
--- /dev/null
+++ b/docs/bpki-symmetric.dot
@@ -0,0 +1,59 @@
+// $Id$
+//
+// Color code:
+// Black: Hosting entity
+// Blue: Hosted entity
+// Red: Cross-certified peer
+//
+// Shape code:
+// Octagon: TA
+// Diamond: CA
+// Record: EE
+
+digraph bpki_symmetric {
+ rotate = 90; size = "11,8.5"; splines = true; ratio = fill;
+
+ // Hosting entity
+ node [ color = black, shape = record ];
+ TA [ shape = octagon ];
+ rpkid [ label = "rpkid|{HTTPS server|HTTPS left-right client|CMS left-right}" ];
+ irdbd [ label = "irdbd|{HTTPS left-right server|CMS left-right}" ];
+ irbe [ label = "IRBE|{HTTPS left-right client|CMS left-right}" ];
+
+ // Hosted entities
+ node [ color = blue, fontcolor = blue ];
+ Alice_CA [ shape = diamond ];
+ Alice_EE [ label = "Alice\nBSC EE|{HTTPS up-down client|CMS up-down}" ];
+ Ellen_CA [ shape = diamond ];
+ Ellen_EE [ label = "Ellen\nBSC EE|{HTTPS up-down client|CMS up-down}" ];
+
+ // Peers
+ node [ color = red, fontcolor = red, shape = diamond ];
+ Bob_CA;
+ Carol_CA;
+ Dave_CA;
+ Frank_CA;
+ Ginny_CA;
+ Harry_CA;
+
+ edge [ color = black, style = solid ];
+ TA -> Alice_CA;
+ TA -> Ellen_CA;
+
+ edge [ color = black, style = dashed ];
+ TA -> rpkid;
+ TA -> irdbd;
+ TA -> irbe;
+
+ edge [ color = blue, style = solid ];
+ Alice_CA -> Bob_CA;
+ Alice_CA -> Carol_CA;
+ Alice_CA -> Dave_CA;
+ Ellen_CA -> Frank_CA;
+ Ellen_CA -> Ginny_CA;
+ Ellen_CA -> Harry_CA;
+
+ edge [ color = blue, style = dashed ]
+ Alice_CA -> Alice_EE;
+ Ellen_CA -> Ellen_EE;
+}
diff --git a/docs/bpki-symmetric.pdf b/docs/bpki-symmetric.pdf
new file mode 100644
index 00000000..22b1bbe3
--- /dev/null
+++ b/docs/bpki-symmetric.pdf
Binary files differ
diff --git a/docs/bpki.pdf b/docs/bpki.pdf
index c85acb29..c5d272d3 100644
--- a/docs/bpki.pdf
+++ b/docs/bpki.pdf
Binary files differ
diff --git a/docs/bpki.tex b/docs/bpki.tex
new file mode 100644
index 00000000..e941948a
--- /dev/null
+++ b/docs/bpki.tex
@@ -0,0 +1,78 @@
+% $Id$
+%
+\documentclass[11pt]{article}
+\usepackage[pdftex]{graphicx}
+\usepackage{palatino}
+\usepackage{color}
+\DeclareGraphicsExtensions{.pdf}
+\setlength{\topmargin}{0in}
+\setlength{\headheight}{0in}
+\setlength{\headsep}{0in}
+\setlength{\oddsidemargin}{0in}
+\setlength{\evensidemargin}{0in}
+\setlength{\textheight}{9in}
+\setlength{\textwidth}{6.5in}
+\setlength{\parskip}{2ex}
+\setlength{\parindent}{0in}
+\hyphenpenalty=5000
+\tolerance=1000
+\hbadness=9999
+\sloppy
+\pagestyle{plain}
+%
+\begin{document}
+
+\section*{Implementation experience with the two BPKI models}
+
+Having recently converted my code base to the single-trust-anchor
+model Russ recommended, I thought it might be useful to share what
+I've learned. This may not apply to all implementations, but it does
+apply to mine, and given what I understand of RIPE's business model,
+it will probably apply to RIPE's implementation as well.
+
+In spite of a strong desire to do so, I was not able to use exactly
+the same BPKI keys and certificates for HTTPS and CMS. The reason for
+this is simple: each hosted entity in my engine has its own BPKI, as
+does the hosting entity, but the HTTPS listener is shared. The only
+ways I know of to avoid this would be to use separate listeners for
+each hosted entity, which scales poorly, or to rely on the TLS
+``Server Name Indication'' extension (RFC 4366 3.1) which is not yet
+widely implemented.
+
+Here's my engine's view of the BPKI tree in the symmetric model
+(explanation follows):
+
+\begin{center}
+\includegraphics[width = 6.5in]{bpki-symmetric}
+\end{center}
+
+Black objects belong to the hosting entity, blue objects belong to the
+hosted entities, red objects are cross-certified objects from peers.
+The arrows indicate certificate issuance: solid arrows are the ones
+that my own RPKI engine will care about during certificate validation,
+dashed arrows show relationships between EE keys and certificates used
+when my engine signs something. ``BSC'' stands for ``business signing
+context,'' which is a database object in my implementation
+representing the context needed to sign a CMS message or TLS session.
+
+Other than the above-mentioned annoyance with the HTTPS server
+certificate, the ``symmetric'' BPKI model worked out pretty much as
+expected here. The certificate tree looks complicated, but the set of
+certificates needed to build a particular validation chain is obvious,
+again excepting the HTTPS server case, where client certificate is the
+first hint that the engine has of the client's identity, so the server
+must be prepared to accept any current client certificate.
+
+Here's my engine's view of the BPKI tree in the asymmetric model:
+
+\begin{center}
+\includegraphics[width = 6.5in]{bpki-asymmetric}
+\end{center}
+
+Note that not much has changed here from the symmetric case. As far
+as I can tell, the asymmetric model is just as complex for my engine
+as the symmetric model; the only real difference is that the engine
+has to keep track of a larger number of BSC EE certificates in the
+assymetric case.
+
+\end{document}