aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rpkid/README257
1 files changed, 93 insertions, 164 deletions
diff --git a/rpkid/README b/rpkid/README
index 822c5ed2..0864cddf 100644
--- a/rpkid/README
+++ b/rpkid/README
@@ -27,22 +27,7 @@ External Python packages required:
FreeBSD: /usr/ports/security/py-tlslite
-- Cryptlib, at the moment just to support TLSlite but may end up using
- it for other things later.
-
- http://www.cs.auckland.ac.nz/~pgut001/cryptlib/
-
- FreeBSD: /usr/ports/security/cryptlib
-
- ...but the FreeBSD port doesn't (yet?) install the Python bindings,
- sigh, so at the moment you have to do that by hand:
-
- # cd /usr/ports/security/cryptlib
- # make install
- # cd work/bindings
- # python setup.py install
- # cd ../..
- # make clean
+- Cryptlib is no longer required.
- Eventually I expect that this will require an event-handling package
like Twisted, but I'm not there yet.
@@ -67,13 +52,103 @@ $Revision$
TO DO:
+- Update biz trust anchor model to what we came up with in Amsterdam.
+ This was a direct result of security review by Kent and Housley.
+
+ This has been waiting for work we hope RobK is doing. This is
+ probably not a lot of coding, probably a few extra cert fields in
+ the self object which we then need to toss into the
+ rpki.x509.X509_chain objects before verifying CMS or TLS, and
+ perhaps the existing TA fields in various objects become pairs of
+ certs instead of a single TA, but this is mostly just generalization
+ and reuse of existing code, no bold new adventures.
+
+ Discussion in Philadelphia revealed that this is not yet a done
+ deal. Housley, RobK, and I all seem to be on the same page, and we
+ think that what we're proposing will make sense to APNIC once we
+ explain it properly, but overall we have not yet converged.
+
+ PRIORITY: Required (security issue)
+
+ STATUS: Not started
+
+- rcynic handling of RPKI trust anchors needs updating. Discussions
+ over last N months of how RPKI trust anchors work, how we package
+ them, and how we roll them over. The last (TA rollover) is the
+ driver for this.
+
+ APNIC has apparently moved on from their proposal to use CMS-signed
+ OpenSSL "PEM" format, they're now proposing a CMS-signed ASN.1
+ SEQUENCE OF something. Precise details of APNIC's new model not yet
+ known. Need to do analysis to make sure this is adaquate for our
+ needs, if so just use it. This would involve minor changes to
+ rcynic.
+
+ PRIORITY: Required (usability issue for relying parties)
+
+ STATUS: Not started
+
+- Publication protocol and implementation thereof. Protocol design
+ started, Randy had comments that sent me back to the drawing board
+ (he was right). Next step is to integrate Randy's advice, which
+ probably means picking up more of the left-right protocol framework.
+
+ Desirable although not strictly required that protcol be agreed upon
+ among the RIRs. Might not be practical given how long it takes
+ group to decide anything.
+
+ Tricky bit is making sure that repository receives enough
+ information to know whether parent has authorized child to use
+ parent's namespace in nesting case. In theory this is
+ straightforward but requires careful checking.
+
+ ARIN can't host output of non-hosted RPKI engines without this, and
+ that's critical both to the security model as discussed with ARIN
+ staff in late 2006, so I believe we need this capability even as
+ part of the initial limited test.
+
+ PRIORITY: Required
+
+ depending on how much of the protocol and implementation I can steal
+ from the existing left-right protocol.
+
+ STATUS: Started
+
+- ROA generation. We have a bunch of the primitives for this but we
+ aren't yet generating the ROAs themselves.
+
+ For reasons that presumably made sense at the time, the left-right
+ protocol for route_origin objects allows ranges as well as prefixes,
+ and the SQL for stores everything as ranges, which is nice and
+ general...except that ROAs can only hold prefixes. So left-right
+ should only allow prefixes, and SQL should only store prefixes.
+
+ Initial pass at ROA generation is done, not usable yet: ROA
+ maintenance (after initial generation) not done, and the current CRL
+ mechanism needs revision as it's too closely tied to child_cert
+ objects. Need to rewrite with a separate CRL table hanging off the
+ ca_detail object, then clean up excess baggage that currently hangs
+ off the child_cert object.
+
+ PRIORITY: Required
+
+ STATUS: Started
+
+- rcynic does not yet handle manifests. This is both a real problem
+ (manifests were added to plug a security hole) and a user acceptance
+ problem (without manifest support rcynic checks old certs that are
+ supposed to fail because they've been revoked, resulting in what
+ appear to be spurious errors, which just annoy the user).
+
+ PRIORITY: Required
+
+ STATUS: Not started
+
- Scripted tests to grow and shrink and revoke and .... See
testbed.*.yaml, but more systematic testing needed.
PRIORITY: Required
- TIME REQUIRED: open-ended
-
STATUS: Ongoing
- Randy's "user validation tool" (fetch and validate certs and
@@ -91,8 +166,6 @@ TO DO:
DEPENDS ON: ROA generation
- TIME REQUIRED: three days
-
STATUS: Not started
- Common protocol dump format with APNIC and other implementors so we
@@ -103,8 +176,6 @@ TO DO:
PRIORITY: Desirable
- TIME REQUIRED: one day
-
STATUS: Not started
- Clean unused cruft out of left-right protocol, or at least have
@@ -117,37 +188,8 @@ TO DO:
PRIORITY: Required
- TIME REQUIRED: Less than one day
-
STATUS: Error signalling done
-- Publication protocol and implementation thereof. Protocol design
- started, Randy had comments that sent me back to the drawing board
- (he was right). Next step is to integrate Randy's advice, which
- probably means picking up more of the left-right protocol framework.
-
- Desirable although not strictly required that protcol be agreed upon
- among the RIRs. Might not be practical given how long it takes
- group to decide anything.
-
- Tricky bit is making sure that repository receives enough
- information to know whether parent has authorized child to use
- parent's namespace in nesting case. In theory this is
- straightforward but requires careful checking.
-
- ARIN can't host output of non-hosted RPKI engines without this, and
- that's critical both to the security model as discussed with ARIN
- staff in late 2006, so I believe we need this capability even as
- part of the initial limited test.
-
- PRIORITY: Required
-
- TIME REQUIRED: 1-2 weeks for implementation once protocol settled,
- depending on how much of the protocol and implementation I can steal
- from the existing left-right protocol.
-
- STATUS: Started
-
- Subsetting (req_* attributes in up-down protocol)
Minimal implementation would be to recognize this as correct
@@ -159,10 +201,6 @@ TO DO:
PRIORITY: Required
- TIME REQUIRED (minimal version): One day
-
- TIME REQUIRED (real version): 1-2 weeks
-
STATUS: Not started
- Error handling: make sure that exceptions map correctly to up-down
@@ -174,8 +212,6 @@ TO DO:
PRIORITY: Required
- TIME REQUIRED: four days
-
DEPENDS ON: almost everything else, as almost any code change can
raise new exceptions that we'd need to handle.
@@ -192,13 +228,6 @@ TO DO:
PRIORITY: Required
- TIME REQUIRED (commit and rollback): Two weeks
-
- TIME REQUIRED (data integrity audit): Three days
-
- TIME REQUIRED (fix data integrity): Unknown, depends on code audit
- and results of runtime testing.
-
DEPENDS ON: async tasking model, sort of -- could do it first, but
tasking change will affect the exception handling that triggers
rollback.
@@ -215,10 +244,6 @@ TO DO:
PRIORITY: Highly desirable
- TIME REQUIRED (setup): One day to convert Tim's data to YAML
-
- TIME REQUIRED (testing): Unknown, depends on what we turn up
-
STATUS: Not started
- Clean up rootd.py to be usable in a production system. Most urgent
@@ -227,8 +252,6 @@ TO DO:
PRIORITY: Highly desirable (not strictly needed for limited testing)
- TIME REQUIRED: Two days
-
STATUS: Not started
- Test framework, multiple self-instances per engine-instance (single
@@ -238,8 +261,6 @@ TO DO:
DEPENDS ON: async tasking model.
- TIME REQUIRED: One week
-
STATUS: Not started
- tlslite code seems flakey under heavy use, and doesn't support all
@@ -256,99 +277,21 @@ TO DO:
PRIORITY: Required (cert checking is a security issue).
- TIME REQUIRED: Two weeks.
-
DEPENDS ON: Async tasking model.
STATUS: Not started
-- ROA generation. We have a bunch of the primitives for this but we
- aren't yet generating the ROAs themselves.
-
- For reasons that presumably made sense at the time, the left-right
- protocol for route_origin objects allows ranges as well as prefixes,
- and the SQL for stores everything as ranges, which is nice and
- general...except that ROAs can only hold prefixes. So left-right
- should only allow prefixes, and SQL should only store prefixes.
-
- Initial pass at ROA generation is done, not usable yet: ROA
- maintenance (after initial generation) not done, and the current CRL
- mechanism needs revision as it's too closely tied to child_cert
- objects. Need to rewrite with a separate CRL table hanging off the
- ca_detail object, then clean up excess baggage that currently hangs
- off the child_cert object.
-
- PRIORITY: Required
-
- TIME REQUIRED: Three days
-
- STATUS: Started
-
- Make rpkid fully event-driven (async tasking model), except for SQL
queries. This probably involves the "twisted" framework.
PRIORITY: Required (to implement hosting model)
- TIME REQUIRED: one week.
-
- STATUS: Not started
-
-- Update biz trust anchor model to what we came up with in Amsterdam.
- This was a direct result of security review by Kent and Housley.
-
- This has been waiting for work we hope RobK is doing. This is
- probably not a lot of coding, probably a few extra cert fields in
- the self object which we then need to toss into the
- rpki.x509.X509_chain objects before verifying CMS or TLS, and
- perhaps the existing TA fields in various objects become pairs of
- certs instead of a single TA, but this is mostly just generalization
- and reuse of existing code, no bold new adventures.
-
- Discussion in Philadelphia revealed that this is not yet a done
- deal. Housley, RobK, and I all seem to be on the same page, and we
- think that what we're proposing will make sense to APNIC once we
- explain it properly, but overall we have not yet converged.
-
- PRIORITY: Required (security issue)
-
- TIME REQUIRED: One week.
-
STATUS: Not started
- Performance testing
STATUS: Not started
-- rcynic handling of RPKI trust anchors needs updating. Discussions
- over last N months of how RPKI trust anchors work, how we package
- them, and how we roll them over. The last (TA rollover) is the
- driver for this.
-
- APNIC has apparently moved on from their proposal to use CMS-signed
- OpenSSL "PEM" format, they're now proposing a CMS-signed ASN.1
- SEQUENCE OF something. Precise details of APNIC's new model not yet
- known. Need to do analysis to make sure this is adaquate for our
- needs, if so just use it. This would involve minor changes to
- rcynic.
-
- PRIORITY: Required (usability issue for relying parties)
-
- TIME REQUIRED: Three days.
-
- STATUS: Not started
-
-- rcynic does not yet handle manifests. This is both a real problem
- (manifests were added to plug a security hole) and a user acceptance
- problem (without manifest support rcynic checks old certs that are
- supposed to fail because they've been revoked, resulting in what
- appear to be spurious errors, which just annoy the user).
-
- PRIORITY: Required
-
- TIME REQUIRED: One week.
-
- STATUS: Not started
-
- Update internals docs (Doxygen). Mostly this means updating
function comments in the Python code, as the rest is automatic. May
require a bit of overview text to explain the workings of the code,
@@ -357,8 +300,6 @@ TO DO:
PRIORITY: Desirable
- TIME REQUIRED: Two days
-
STATUS: Ongoing
- Reorganize code (directory names, module names, which objects are in
@@ -370,8 +311,6 @@ TO DO:
STATUS: File renaming mostly done, other stuff not started
- TIME REQUIRED: two days
-
PRIORITY: Highly desirable (to preserve programmers' and
maintainers' sanity, if nothing else)
@@ -381,8 +320,6 @@ TO DO:
STATUS: Not started
- TIME REQUIRED: Unknown
-
PRIORITY: Desirable. Am guessing ARIN does not require this for
initial test
@@ -391,16 +328,12 @@ TO DO:
STATUS: Not started
- TIME REQUIRED: Three days
-
PRIORITY: Desirable
- Tighten up syntax checking in left-right schema.
STATUS: Not started
- TIME REQUIRED: Less than a day
-
PRIORITY: Desirable
- Rethink exposing SQL primary indices in protocols. Right now, we
@@ -418,7 +351,6 @@ TO DO:
STATUS: Not started
- TIME REQUIRED: Two or three days to evaluate. Implementation time
if we decide to make a change unknown, but probably on the order of
a few days.
@@ -435,8 +367,6 @@ TO DO:
PRIORITY: Minimal, IETF feeping creaturism
- TIME REQUIRED: Unknown
-
- Deaddrop of incoming messages, for audit. Absent a better theory,
steal existing tech for this: preface with minimal RFC 2822 header
and drop it into a Maildir folder using built-in Python Maildir
@@ -446,7 +376,6 @@ TO DO:
Priority: Desirable, trivial to implement.
- TIME REQUIRED: One day