On Mon, Apr 23, 2007 at 05:08:08PM +0100, Darren J Moffat wrote:
> I'm planning on storing the per data set encryption keys on the disk with the 
> dataset in a wrapped form.  They would be wrapped either with a  symetric key 
> or an asymetric 
> key.   I don't want to store these as properties since you won't be 
> manipulating them via 'zfs set', plus they are significantly larger in size 
> than any of the existing 
> properties.
> 
> A master (effectively per pool for the inital phase) key would then be stored 
> either in hardware (such as the SCA-6000 or a TPM) or be a passphrase that is 
> entered by hand 
> (and passed through PKCS#5 PBE to generate the master symetric key).  See the 
> udpated draft design document at [1] some for more details
> 
> I'm looking for some hints on what APIs in ZFS I should be using to store the 
> wrapped keys and what structures I should be hanging them off of.  I need to 
> be able to 
> "lookup" these wrapped keys using a zbookmark_t while in the ZIO pipeline.  
> My initial thought was using *dsl_dataset_phys_t* however that doesn't have 
> sufficient space so 
> it may be better to store a "pointer" there to some external object.
> 
> 
> [1] http://opensolaris.org/os/project/zfs-crypto/files/zfs-crypto.pdf

Nice to see progress on that front.

How do you plan to ask for passphrases exactly? If keys are stored on a
hardware, which is available immediately we could decrypt and mount
datasets automatically on 'zfs mount -a', but if someone has to enter a
passphrase/pin, maybe we should just skip such datasets and allow to
mount them manually later, when administrator is ready? That's the plan?

I'm not sure I agree than CBC mode is not ok. It can be used in a secure
way for data disk encryption and I think it should be done. The main
reason is that there is a lot of h/w accelerators out there that already
support CBC.

For some time now I'm thinking about encryption implementation at VDEV
level. This should allow to encrypt more ZFS metadata, which may be
desirable for some uses. Will it be possible to make the code
responsible for encryption/decryption as much general as possible to
make it usable for encryption at VDEV level (if you guys decide it makes
sense)?

Do you have an analysis/list of things that won't be encrypted? What are
the possible threats? For example will it be possible to move blocks
within a pool, which won't be discovered by ZFS?

-- 
Pawel Jakub Dawidek                       http://www.wheel.pl
pjd at FreeBSD.org                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
URL: 
<http://mail.opensolaris.org/pipermail/zfs-code/attachments/20070423/0e749c47/attachment.bin>

Reply via email to