Annotation of embedaddon/ipsec-tools/src/racoon/TODO, revision 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>