• Leigh Stoller's avatar
    Middle part of the event system changes. The main part of this change · 54bc15c4
    Leigh Stoller authored
    is to add HMACs to events to ensure they that events cannot be
    injected into an experiment by an unauthorized client.
    
    * The frontend now generates a secret key for each experiment and
      stores that into a file and in the DB.
    
    * Each of the event clients, as well as the event producers
      (scheduler, tevc) have a new -k option to specify the name of the
      file. Two new event library functions were added for clients to give
      the key:
    
        event_handle_t
        event_register_withkeyfile(char *name, int threaded, char *keyfile);
    
        event_handle_t
        event_register_withkeydata(char *name, int threaded,
    	   		       unsigned char *keydata, int keylen);
    
    * When the library is in possesion of a key, it will generate an HMAC
      and attach it to outgoing notifications. A client receiving a
      notification will compute an HMAC and compare it against the HMAC in
      the notification. If they do not compare, the notification is
      dropped with a warning message printed (the client callback never
      gets the notification). If the client has not provided a key, then
      the HMAC in the incoming notification is ignored.
    
    * The scheduler also takes a -k option, and will compute HMACs for all
      of the static events ahead of time. That keeps it off the critical
      path.
    
    * The tevc client also takes a -k option. However, tevc will always
      try to find the keyfile (default path) so that it can attach the
      HMAC to dynamic events before sending them to the scheduler (which
      will check to make sure it matches). The scheduler will not accept
      dynamic events without unless the HMAC is present and matches.
    
    * I have rebuilt the elvin librarys, removing all of the X goop and
      the SSL goop. Smaller binaries. So, I had to add -lcrypto to all of
      the client makefiles to that programs link.
    
    * The program-agent got a few more changes. The command string is no
      longer passed inside the event; it comes in when the program agent
      is started, via a config file generated from tmcd data. This gets
      rid of our mostly insecure remote execution facility.
    54bc15c4
Name
Last commit
Last update
account Loading commit data...
apache Loading commit data...
assign Loading commit data...
autoconf Loading commit data...
capture Loading commit data...
cdrom Loading commit data...
db Loading commit data...
delay/linux Loading commit data...
dhcpd Loading commit data...
discvr Loading commit data...
doc Loading commit data...
event Loading commit data...
hw_config Loading commit data...
install Loading commit data...
ipod Loading commit data...
lib Loading commit data...
os Loading commit data...
patches Loading commit data...
pxe Loading commit data...
rc.d Loading commit data...
rpms Loading commit data...
security Loading commit data...
sensors Loading commit data...
sql Loading commit data...
ssl Loading commit data...
sysadmin Loading commit data...
tbsetup Loading commit data...
testsuite Loading commit data...
tip Loading commit data...
tmcd Loading commit data...
tools Loading commit data...
utils Loading commit data...
vis Loading commit data...
www Loading commit data...
xmlrpc Loading commit data...
BUGS Loading commit data...
COPYING Loading commit data...
GNUmakefile.in Loading commit data...
GNUmakerules Loading commit data...
Makeconf.in Loading commit data...
README Loading commit data...
TODO Loading commit data...
TODO.plab Loading commit data...
config.h.in Loading commit data...
configure Loading commit data...
configure.in Loading commit data...
defs-barb-emulab Loading commit data...
defs-barb-mini Loading commit data...
defs-calfeld-emulab Loading commit data...
defs-davidand-emulab Loading commit data...
defs-default Loading commit data...
defs-example Loading commit data...
defs-gatech Loading commit data...
defs-kwebb-emulab Loading commit data...
defs-mini Loading commit data...
defs-newbold-emulab Loading commit data...
defs-newbold-macdb Loading commit data...
defs-newbold-mini Loading commit data...
defs-rchriste-emulab Loading commit data...
defs-ricci-emulab Loading commit data...
defs-ricci-mini Loading commit data...
defs-shash-emulab Loading commit data...
defs-shash-mini Loading commit data...
defs-stoller-emulab Loading commit data...
defs-stoller-home Loading commit data...
defs-stoller-mini Loading commit data...
defs-uky Loading commit data...
defs-wide Loading commit data...