Hello,

Along the lines of protocol versioning and daemon compatibility (I'm sort of 
hijacking your thread Joshua ...), there is a *BIG* issue coming up for 
version 1.40.0 (when 1.39.x is released), and that is the compatibility of 
the Bacula binary base64 routines.

When I wrote the base64 routines (used for "compressing" certain data in the 
catalog), the was an RFC, which I used.  Then I needed a routine that 
converted binary data into base64.  Apparently there was also an RFC, though 
I have never seen it, and I believe it is part of the email mime stuff so 
would not have been so obvious.

The bottom line is that the current bin_to_base64 routine used in Bacula mixes
the bits slightly differently from the algorithm used by other programs (Perl, 
Python, ...).  swegener in Bacula bug 565 provided a patch that makes the 
Bacula alogrithm compatible with the rest of the world.

This bin-to-base64 code is used in two important places: 1. authentication.  
2. the hash signatures of file data (used for verify, ...).  If the algorithm 
is changed, all daemons must be updated at the same time, and the current 
hash signatures that are in the database will all be wrong.

The code to "correct" the encoding is already in version 1.39 in the 
current CVS.  For the moment, the code is on a global switch, which is set to 
reproduce the old behavior.



==============!!!!!!!!!!!!!!!!!!!!=====================
The real issue here is that if we change this algorithm, it will make all 
authentication incompatible with the prior algorithm.  This could be a major 
problem for users that have 50 or 60 Bacula clients.  For them it is 
virtually impossible to upgrade simultaneously.  

So for those who would like to see Bacula compatible in the bin-to-base64 
routine, the way to ensure that 
it gets implemented in Bacula is to upgrade the current authentication 
handshake in a compatible way so that (at least for some time) Bacula can run 
both algorithms -- i.e. authenticate a client with either the old or new 
algorithm.  In fact, I would like to make a major upgrade to this handshake 
algorithm so that we can also support SHA1 and other hashing schemes.

The advantages of correcting the algorithm:
1. It is a standard off the shelf algorithm, so interface programs (perl, 
php, ...) would be much simpler.

2. Comparison of Bacula hash codes for external use would be simpler (some 
people do use Bacula has signatures to compare to existing file content).  
The Bacula md6hash program (not built by many people) now records both 
hashes.

The disadvantages of correcting the algorithm:
1. It is less secure, because any 10 year old in his garage can start hashing 
Bacula authentication tokens.
2. It will (as the current code is written) invalidate *all* daemons.  I.e. 
*everything* must be upgraded at the same time.
3. All the signatures currently kept in the database will be incorrect and 
useless.


There seems to be a lot of interest in this algorithm and in fixing it.  
Unlike some software programmers, I have no intention of making an 
incompatible change that could block our users, so I have no intention to 
turn on the new code unless someone comes up with some code to solve item #2 
under the "disadvantages", which I consider the blocker.  Item #1 (security) 
bothers me, but we can probably deal with it in other was.  Item #2 (invalid 
database data) also bothers me but is not what I consider a blocker).

If anyone wants to work on this, let me know I will help find a solution for 
#2 (or 3 if it interests you).


-- 
Best regards,

Kern

  (">
  /\
  V_V

Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to