I modified linux kernel tpm_tis driver to try to start with locality 2. I did some logging and after taking a look with dmesg it seems that the IO pages for other localities are full with 1. in tpm_tis_init: for(i=0;i<5;i++){ release_locality(chip,i,1); } ... wait_startup(chip,2); request_locality(chip,2) ... TPM_RID(2);//FF TPM_RID(0);//64 Would this mean that Atmel disabled other localities after manufacturing? I tried to define a NVRAM index at F200 but I have the same results.
I see what you mean about changing the DeepQuote behaviour in order to provide evidence of the VM launch but I am not sure that I understand what is the type of extraInfoFlags and what should it contain. Will the UUIDs and vTPM measurements be stored in extraInfoFlags? If we take this as a solution for systems that do not support DRTM lanch, they will still be forced to use locality 0 if any other is disabled and the TPM might return busy if other commands are currently running. Thanks. Emil Condrea On Sat, Nov 8, 2014 at 1:31 AM, Daniel De Graaf <dgde...@tycho.nsa.gov> wrote: > On 11/07/2014 05:40 AM, Emil Condrea wrote: > >> My system does not support DRTM so I can not test this. I am interested in >> contributing to vtpm and making this to work without DRTM, can you give me >> more details about PCRs that need to be implemented using an alternate >> manner? When someone wants to use other locality than 0 it will run all >> commands with PCRs disabled? Since the vtpmmgr is tying domU to hardware >> TPM, deactivating PCRs will result that all commands issued by domU will >> not use PCRs anymore, right? >> > > The PCRs seen by the domU are emulated by the vTPM, and the vTPM Manager > has no information on any of their values or updates. Deep quotes may > include a hash of the vTPM's PCR values, but the vTPM Manager is only > asserting that the hash was given by the vTPM. > > Where should the new layer of PCR values stored? NVRAM ? >> > > They will be stored in the vtpmmgr domain's RAM; in fact, they are already > stored there (they just need to be used more directly). > > The PCRs in question are PCR 20-23, used by the vTPM Manager to store > information about the vTPM making a deep quote request. In order to > support more than one vTPM, the values of these PCRs need to be reset when > a different client connects. However, the reset operation for PCR 20-22 is > limited to locality 2. > > An alternative to this is to embed this information in the externData > field that is signed by the quote operation. This requires a bit more work > to provide the same flexibility that the PCRs provided, but it can be made > equivalently secure. > > A deep quote request currently contains a PCR mask and a requestData value > (20 bytes) from the vTPM. On a deep quote request, the vTPM Manager: > 1. Reset PCR 20-23 > 2. Extend information about the requesting vTPM to PCR 20-23 > - Different information is extended into each PCR > - Some clients want all information, some only want selected PCRs > 3. Perform a Quote with externData=requestData on the requested PCRs > 4. Return the result to the requesting vTPM > > The change I am suggesting requires: > - Add a field to the request - extraInfoFlags > - Compute externData = SHA1 ( > requestData > extraInfoFlags > [UUIDs if requested] > [vTPM measurements if requested] > [vTPM group update policy if requested] > ) > - Perform deep quotes using the above externData value instead of the > value provided by the vTPM. > > This change also has the benefit of increasing the flexibility of the > request - it is simple to define additional flags and add data to the hash > if needed. > > > On Thu, Nov 6, 2014 at 11:55 PM, Daniel De Graaf <dgde...@tycho.nsa.gov> >> wrote: >> >> On 11/05/2014 05:00 AM, Ian Campbell wrote: >>> >>> CCing Daniel. >>>> >>>> On Fri, 2014-10-31 at 17:37 +0200, Emil Condrea wrote: >>>> >>>> >>>>> I am wondering if this is known issue that when I set locality!=0 to >>>>> vtpmmgr it does not start. It is a bit strange that every call to >>>>> tpm_tis_status returns 255 and device-id is also FFFF: >>>>> 1.2 TPM (device-id=0xFFFF vendor-id = FFFF rev-id = FF). >>>>> TPM interface capabilities (0xffffffff): >>>>> >>>>> I am configuring vtpmmgr using: >>>>> >>>>> kernel="/usr/local/lib/xen/boot/vtpmmgr-stubdom.gz" >>>>> memory=8 >>>>> disk=["file:/var/vtpmmgr-stubdom.img,hda,w"] >>>>> name="vtpmmgr" >>>>> iomem=["fed40,5"] >>>>> extra="tpmlocality=2" >>>>> >>>>> >>>>> I also tried using : >>>>> iomem=["fed40,1"] >>>>> extra="tpmlocality=0"//works well >>>>> >>>>> or >>>>> iomem=["fed42,1"] >>>>> extra="tpmlocality=2" >>>>> It seems that everything that is not mapped at fed40-fed41 is >>>>> FFFFFFFF. >>>>> >>>>> I have an Atmel TPM chipset. >>>>> >>>>> Could it be a chipset problem to not handle well different localities? >>>>> >>>>> When I use locality=0, the device driver info is correct and >>>>> everything works fine: >>>>> 1.2 TPM (device-id=0x3204 vendor-id = 1114 rev-id = 40) >>>>> TPM interface capabilities (0xfd) >>>>> >>>>> >>>> This may be an issue with locality 2 being unavailable unless a DRTM >>> launch (tboot) is performed. Returning all-ones is the normal response >>> of the x86 chipset when unmapped MMIO regions are accessed; disabled >>> localities of the TPM may act like this. >>> >>> Does your system support the DRTM launch? If so, can you test it to see >>> if this is the issue? >>> >>> In this case, to better support people who want to use the vTPM Manager >>> without a DRTM launch, the features of the vTPM Manager that use the TPM >>> 1.2 PCRs may need to be disabled or implemented in an alternate manner >>> such as embedding the data in the quote instead of in PCRs. The current >>> design was created with the assumption that systems using it would be >>> performing a DRTM launch in order to fully secure the boot process. >>> >>> In linux kernel this information is obtained using locality 0 and >>> >>>> after that other commands execute using specified locality. >>>>> https://git.kernel.org/cgit/linux/kernel/git/stable/linux- >>>>> stable.git/tree/drivers/char/tpm/tpm_tis.c#n558 >>>>> >>>>> >>>> Have you tested that other localities work for your TPM under Linux? >>> >> >> >> >> >> >>> Thanks, >>>>> >>>>> Emil >>>>> >>>>> >>>>> -- >>> Daniel De Graaf >>> National Security Agency >>> >>> >> > > -- > Daniel De Graaf > National Security Agency >
_______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel