Annotation of embedaddon/ipsec-tools/src/racoon/TODO, revision 1.1.1.1

1.1       misho       1: $KAME: TODO,v 1.36 2001/09/19 09:41:39 sakane Exp $
                      2: 
                      3: Please send any questions or bug reports to snap-users@kame.net.
                      4: 
                      5: TODO list
                      6: 
                      7: URGENT
                      8: o The documents for users convenience.
                      9: o split log file based on client.  printf-like config directive, i.e.
                     10:   "logfile racoon.%s.log", should be useful here.
                     11:   -> beware of possible security issue, don't use sprintf() directly!
                     12:      make validation before giving a string to sprintf().
                     13: o save decrypted IKE packet in tcpdump format
                     14: o IPComp SA with wellknown CPI in CPI field.  how to handle it?
                     15: o better rekey
                     16: 
                     17: MUST
                     18: o multiple certificate payload handling.
                     19: o To consider the use with certificate infrastructure.  PXIX ???
                     20: o kmstat should be improved.
                     21: o Informational Exchange processing properly.
                     22: o require less configuration.  phase 2 is easier (as kernel presents racoon
                     23:   some hints), phase 1 is harder.  for example,
                     24:   - grab phase 2 lifetime and algorith configuration from sadb_comb payloads in
                     25:     ACQUIRE message.
                     26:   - give reasonable default behavior when no configuration file is present.
                     27:   - difficult items:
                     28:        how to guess a reasonable phase 1 SA lifetime
                     29:                (hardcoded default?  guess from phase 2 lifetime?)
                     30:        guess what kind of ID payload to use
                     31:        guess what kind of authentication to be used
                     32:        guess phase 1 DH group (for aggressive mode, we cannot negotiate it)
                     33:        guess if we need phase 2 PFS or not (we cannot negotiate it. so
                     34:                we may need to pick from "no PFS" or "same as phase 1 DH group")
                     35:        guess how we should negotiate lifetime
                     36:                (is "strict" a reasonable default?)
                     37:        guess which mode to use for phase 1 negotiation (is main mode useful?
                     38:                is base mode popular enough?)
                     39: o more acceptable check.
                     40: 
                     41: SHOULD
                     42: o psk.txt should be a database? (psk.db?)  psk_mkdb?
                     43: o Dynamically retry to exchange and resend the packet per nodes.
                     44: o To make the list of supported algorithm by sadb_supported payload
                     45:   in the SADB_REGISTER message which happens asynchronously.
                     46: o fix the structure of ph2handle.
                     47:   We can handle the below case.
                     48: 
                     49:   node A                            node B
                     50:     +--------------SA1----------------+
                     51:     +--------------SA2----------------+
                     52: 
                     53:   at node A:
                     54:   kernel
                     55:     acquire(A-B) ------> ph2handle(A=B) -----> ph1handle
                     56:                               |
                     57:                             policy
                     58:                              A=B
                     59:                              A=B
                     60: 
                     61:   But we can not handle the below case because there is no x?handle.
                     62: 
                     63:   node A                            node B                           node C
                     64:     +--------------SA1----------------+
                     65:     +------------------------------------------------SA2---------------+
                     66: 
                     67:   at node A:
                     68:   kernel
                     69:     acquire(A-C) ---+---> x?handle ---+---> ph2handle(A=B) -------> ph1handle
                     70:                     |        |        |
                     71:     acquire(A-B) ---+      policy     +---> ph2handle(A=C) -------> ph1handle
                     72:                             A=B
                     73:                             A=C
                     74: 
                     75: o consistency of function name.
                     76: o deep copy configuration entry to hander.  It's easy to reload configuration.
                     77: o don't keep to hold keymat values, do it ?
                     78: o local address's field in isakmpsa handler must be kicked out to rmconf.
                     79: o responder policy and initiator policy should be separated.
                     80: o for lifetime and key length, something like this should be useful.
                     81:   - propose N
                     82:   - accept between X and Y
                     83: o wildcard "accept any proposal" policy should be allowed.
                     84: o replay prevention
                     85:   - limited total number of session
                     86:   - limited session per peer
                     87:   - number of proposal
                     88: o full support for variable length SPI.  quickhack support for IPComp is done.
                     89: 
                     90: MAY
                     91: o Effective code.
                     92: o interaction between IKE/IPsec and socket layer.
                     93:   at this moment, IKE/IPsec failure is modeled as total packet loss to other
                     94:   part of network subsystem, including socket layer.  this presents the
                     95:   following behaviors:
                     96:   - annoyingly long timeouts on tcp connection attempt, and IKE failure;
                     97:     need to wait till tcp socket timeouts.
                     98:   - blackhole if there's mismatching SAs.
                     99:   we may be able to give socket layer some feedback from IKE/IPsec layer.
                    100:   still not sure if those make sense or not.
                    101:   for example:
                    102:   - send PRU_HOSTDEAD to sockets if IKE negotiation failed
                    103:     (sys/netkey/key.c:key_acquire2)
                    104:     to do this, we need to remember which ACQUIRE was caused by which socket,
                    105:     possibly into larval SAs.
                    106:   - PRU_QUENCH on "no SA found on output"
                    107:   - kick tcp retransmission timer on first SA establishment
                    108: o IKE daemon should handle situations where peer does not run IKE daemon
                    109:   (UDP port unreach for port 500) better.
                    110:   should use connected UDP sockets for sending IKE datagrams.
                    111: o rate-limit log messages from kernel IPsec errors, like "no SA found".
                    112: 
                    113: TO BE TESTED.
                    114: o IKE retransmit behavior
                    115:        see, draft-*-ipsec-rekeying*.txt
                    116: o Reboot recovery (peer reboot losing it's security associations)
                    117:        see, draft-*-ipsec-rekeying*.txt
                    118: o Scenarios
                    119:        - End-to-End transport long lived security associations
                    120:          (over night, data transfer >1Gb) with frequent dynamic rekey
                    121:        - End-to-GW tunnel long lived security associations
                    122:          (over night, data transfer >1Gb) with frequent dynamic rekey
                    123:        - Policy change events while under SA load
                    124:        - End-to-End SA through IPsec tunnels, initiation both ways
                    125:        - Client End-to-End through client-to-GW tunnel SA, initiate from
                    126:          client for tunnel, then initiation both ways for end-to-end
                    127:        - Client-to-GW transport SA for secure management
                    128: o behavior to receive multiple auth method proposals and AND proposal
                    129: 
                    130: and to be written many many.
                    131: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>