$KAME: TODO,v 1.36 2001/09/19 09:41:39 sakane Exp $ Please send any questions or bug reports to snap-users@kame.net. TODO list URGENT o The documents for users convenience. o split log file based on client. printf-like config directive, i.e. "logfile racoon.%s.log", should be useful here. -> beware of possible security issue, don't use sprintf() directly! make validation before giving a string to sprintf(). o save decrypted IKE packet in tcpdump format o IPComp SA with wellknown CPI in CPI field. how to handle it? o better rekey MUST o multiple certificate payload handling. o To consider the use with certificate infrastructure. PXIX ??? o kmstat should be improved. o Informational Exchange processing properly. o require less configuration. phase 2 is easier (as kernel presents racoon some hints), phase 1 is harder. for example, - grab phase 2 lifetime and algorith configuration from sadb_comb payloads in ACQUIRE message. - give reasonable default behavior when no configuration file is present. - difficult items: how to guess a reasonable phase 1 SA lifetime (hardcoded default? guess from phase 2 lifetime?) guess what kind of ID payload to use guess what kind of authentication to be used guess phase 1 DH group (for aggressive mode, we cannot negotiate it) guess if we need phase 2 PFS or not (we cannot negotiate it. so we may need to pick from "no PFS" or "same as phase 1 DH group") guess how we should negotiate lifetime (is "strict" a reasonable default?) guess which mode to use for phase 1 negotiation (is main mode useful? is base mode popular enough?) o more acceptable check. SHOULD o psk.txt should be a database? (psk.db?) psk_mkdb? o Dynamically retry to exchange and resend the packet per nodes. o To make the list of supported algorithm by sadb_supported payload in the SADB_REGISTER message which happens asynchronously. o fix the structure of ph2handle. We can handle the below case. node A node B +--------------SA1----------------+ +--------------SA2----------------+ at node A: kernel acquire(A-B) ------> ph2handle(A=B) -----> ph1handle | policy A=B A=B But we can not handle the below case because there is no x?handle. node A node B node C +--------------SA1----------------+ +------------------------------------------------SA2---------------+ at node A: kernel acquire(A-C) ---+---> x?handle ---+---> ph2handle(A=B) -------> ph1handle | | | acquire(A-B) ---+ policy +---> ph2handle(A=C) -------> ph1handle A=B A=C o consistency of function name. o deep copy configuration entry to hander. It's easy to reload configuration. o don't keep to hold keymat values, do it ? o local address's field in isakmpsa handler must be kicked out to rmconf. o responder policy and initiator policy should be separated. o for lifetime and key length, something like this should be useful. - propose N - accept between X and Y o wildcard "accept any proposal" policy should be allowed. o replay prevention - limited total number of session - limited session per peer - number of proposal o full support for variable length SPI. quickhack support for IPComp is done. MAY o Effective code. o interaction between IKE/IPsec and socket layer. at this moment, IKE/IPsec failure is modeled as total packet loss to other part of network subsystem, including socket layer. this presents the following behaviors: - annoyingly long timeouts on tcp connection attempt, and IKE failure; need to wait till tcp socket timeouts. - blackhole if there's mismatching SAs. we may be able to give socket layer some feedback from IKE/IPsec layer. still not sure if those make sense or not. for example: - send PRU_HOSTDEAD to sockets if IKE negotiation failed (sys/netkey/key.c:key_acquire2) to do this, we need to remember which ACQUIRE was caused by which socket, possibly into larval SAs. - PRU_QUENCH on "no SA found on output" - kick tcp retransmission timer on first SA establishment o IKE daemon should handle situations where peer does not run IKE daemon (UDP port unreach for port 500) better. should use connected UDP sockets for sending IKE datagrams. o rate-limit log messages from kernel IPsec errors, like "no SA found". TO BE TESTED. o IKE retransmit behavior see, draft-*-ipsec-rekeying*.txt o Reboot recovery (peer reboot losing it's security associations) see, draft-*-ipsec-rekeying*.txt o Scenarios - End-to-End transport long lived security associations (over night, data transfer >1Gb) with frequent dynamic rekey - End-to-GW tunnel long lived security associations (over night, data transfer >1Gb) with frequent dynamic rekey - Policy change events while under SA load - End-to-End SA through IPsec tunnels, initiation both ways - Client End-to-End through client-to-GW tunnel SA, initiate from client for tunnel, then initiation both ways for end-to-end - Client-to-GW transport SA for secure management o behavior to receive multiple auth method proposals and AND proposal and to be written many many.