Perhaps if I explained the problem:

Currently (as of 1.39.27)

No filters = Works fine
Sparse = Works fine
Compression = Works fine
Encryption = Works fine

Sparse + Compression = Restore broken
Sparse + Encryption = Restore broken
Sparse + Compression + Encryption = Restore broken
Compression + Encryption = Restore broken

With my fix (> 1.39.27):

All combinations work fine.  

But restoration of old backups (1.39.x) using encryption alone or in
combination with other filters is broken.  Since all cases of encryption in
combination with anything else were already broken, that just leaves
encryption alone.  I could special case the handling of just encryption so
that it would be stored differently than when used in combination with other
filters.  This would allow old encrypted backups to be read at the expense
of having two versions of the encryption and decryption code.

Since this is a brand new feature I don't think changing the archive format
at this point would affect that many people.  Particularly since the
archives are unreadable if they've used it in combination with compression
or sparse file handling.

I think it is safer to just say that previously written archives using
encryption aren't readable and should be recreated.

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Kern
Sibbald
Sent: Friday, November 03, 2006 4:40 PM
To: Robert Nelson
Cc: [EMAIL PROTECTED]; 'Landon Fuller';
bacula-users@lists.sourceforge.net
Subject: Re: [Bacula-devel] [Bacula-users] Encryption/Compression Conflict
in CVS


> This code is backwards compatible for everything except encrypted data.
> Previously compressed backups will still work fine.

I'm not 100% sure what you mean, but here are my thoughts:

If it breaks something that previously worked, then it is does not fit
with the Bacula philosophy of always being able to read Volumes written by
prior versions.

If something was previously broken -- i.e. could not be read -- then we
should attempt to fix it, if at all possible.

Maintaining backward Volume compatibility and fixing the problem is the
best solution.  Hopefully this is what you can do ...

If we *must* create an incompatibility with Volumes written by prior
versions of Bacula, then we need to think really hard about how to handle
it because to the best of my knowledge this has never happened.

If certain combinations of options created data that cannot be read under
any conditions, then we need to carefully document it and inform the
users.

>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Kern
> Sibbald
> Sent: Friday, November 03, 2006 4:15 PM
> To: Robert Nelson
> Cc: [EMAIL PROTECTED]; 'Landon Fuller';
> bacula-users@lists.sourceforge.net
> Subject: Re: [Bacula-users] Encryption/Compression Conflict in CVS
>
>
>> Landon,
>>
>> I've changed the code so that the encryption code prefixes the data
>> block
>> with a block length prior to encryption.
>>
>> The decryption code accumulates data until a full data block is
>> decrypted
>> before passing it along to the decompression code.
>>
>> The code now works for all four scenarios with encryption and
>> compression:
>> none, encryption, compression, and encryption + compression.
>> Unfortunately
>> the code is no longer compatible for previously encrypted backups.
>>
>> I could add some more code to make the encryption only case work like
>> before.  However, since this is a new feature in 1.39 and there
>> shouldn't
>> be
>> a lot of existing backups, I would prefer to invalidate the previous
>> backups
>> and keep the code simpler.
>>
>> Also I think we should have a design rule that says any data filters
>> like
>> encryption, compression, etc must maintain the original buffer
>> boundaries.
>>
>> This will allow us to define arbitrary, dynamically extensible filter
>> stacks
>> in the future.
>>
>> What do you think?
>
> I'm unfortuntely not in a good position to examine this problem in detail,
> but I suggest that we should do our best to keep the old data readable by
> any kludge necessary.
>
> One possible solution for the new code that you have implemented is to put
> the new compressed data in a new stream -- i.e. a different one from the
> old compressed data -- this could possibly allow old Volumes to be read
> and any new data written to Volumes will be written correctly.
>
> One thing to be very careful about is to make sure the length that you
> store is bigendian-littlendian independent. Probably you have already done
> this, but if not you need to use the serialization code that is also used
> for sparse file length.
>
>
>>
>> -----Original Message-----
>> From: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] On Behalf Of Landon
>> Fuller
>> Sent: Wednesday, November 01, 2006 7:08 PM
>> To: Michael Brennen
>> Cc: bacula-users@lists.sourceforge.net
>> Subject: Re: [Bacula-users] Encryption/Compression Conflict in CVS
>>
>>
>> On Nov 1, 2006, at 2:20 PM, Michael Brennen wrote:
>>
>>> On Wednesday 01 November 2006 15:33, Arno Lehmann wrote:
>>>
>>>>>> This sounds like compression should be automatically disabled when
>>>>>> encrypton is enabled. Should be useless anyway as encrypted data
>>>>>> should
>>>>>> no longer be compressible.
>>>>>
>>>>> Not if compression happens prior to encryption. :)
>>>>
>>>> Theoretically - yes, but I'm quite sure that encryption usually also
>>>> compresses data. This is completely unverified and refers to
>>>> encryption
>>>> programs that are rather outdated by now, though...
>>>>
>>>> But I suppose you could inform us if encryption in Bacula also
>>>> compresses :-)
>>>
>>> Landon, what is your take on this?  Since you wrote the code you
>>> seem to be
>>> the best source on whether the openssl functions you are using
>>> compress data.
>>
>> Howdy,
>>
>> The encryption does not include compression -- It made more sense to
>> piggyback on the existing compression code.
>> Also, thanks for catching this! I'm embarrassed that I forgot to test
>> backup+restore with both compression and encryption enabled.
>>
>> -landonf
>>
>>
>>
>> -------------------------------------------------------------------------
>> 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
>>
>
>
> Best regards, Kern
>
> -------------------------------------------------------------------------
> 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
>
>
>
> -------------------------------------------------------------------------
> 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-devel mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/bacula-devel
>


Best regards, Kern

-------------------------------------------------------------------------
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-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/bacula-devel



-------------------------------------------------------------------------
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