Re: [Rats] Attestation Timing Definitions

Laurence Lundblade <lgl@island-resort.com> Wed, 11 March 2020 17:33 UTC

Return-Path: <lgl@island-resort.com>
X-Original-To: rats@ietfa.amsl.com
Delivered-To: rats@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2B41B3A0EF3 for <rats@ietfa.amsl.com>; Wed, 11 Mar 2020 10:33:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Level:
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id owcWCIHWawDF for <rats@ietfa.amsl.com>; Wed, 11 Mar 2020 10:33:18 -0700 (PDT)
Received: from p3plsmtpa06-03.prod.phx3.secureserver.net (p3plsmtpa06-03.prod.phx3.secureserver.net [173.201.192.104]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DE92C3A0DFD for <rats@ietf.org>; Wed, 11 Mar 2020 10:33:17 -0700 (PDT)
Received: from [192.168.1.78] ([76.167.193.86]) by :SMTPAUTH: with ESMTPA id C5EKjm4ihso8HC5ELjZ2af; Wed, 11 Mar 2020 10:33:17 -0700
X-CMAE-Analysis: v=2.3 cv=Zf1jyfdA c=1 sm=1 tr=0 a=t2DvPg6iSvRzsOFYbaV4uQ==:117 a=t2DvPg6iSvRzsOFYbaV4uQ==:17 a=jpOVt7BSZ2e4Z31A5e1TngXxSK0=:19 a=i0EeH86SAAAA:8 a=wQLaGZ9sczJfdtaUgisA:9 a=2d-h5_NGd3dIkSdA:21 a=CxqRe4fUQcKUzhpa:21 a=QEXdDO2ut3YA:10 a=8wg_CCA9M0A3ZtRdVM4A:9 a=hI9OAD1hEV8Qkzy3:21 a=oOlXN-JKjYpjySIh:21 a=g-Tno0vfu0tfAptd:21 a=_W_S_7VecoQA:10
X-SECURESERVER-ACCT: lgl@island-resort.com
From: Laurence Lundblade <lgl@island-resort.com>
Message-Id: <870488EF-4981-44CA-A6B9-65E176D380FF@island-resort.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_9FB4FD89-E914-4442-BBE4-A628199B347E"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
Date: Wed, 11 Mar 2020 10:33:16 -0700
In-Reply-To: <817d60e7ab6b41d5bad81b7702002397@huawei.com>
Cc: "Eric Voit (evoit)" <evoit=40cisco.com@dmarc.ietf.org>, "rats@ietf.org" <rats@ietf.org>
To: "Panwei (William)" <william.panwei@huawei.com>
References: <BYAPR11MB31256F11BD86730AF9D21B6CA1FF0@BYAPR11MB3125.namprd11.prod.outlook.com><CD539706-7F11-4FF1-8483-17F51329C014@island-resort.com> <BYAPR11MB312543840E706D6A0DBC8013A1FF0@BYAPR11MB3125.namprd11.prod.outlook.com> <817d60e7ab6b41d5bad81b7702002397@huawei.com>
X-Mailer: Apple Mail (2.3445.104.11)
X-CMAE-Envelope: MS4wfHQzMYRFr9i2shotqKDue3VGdjXlLbbVXYMYGEYGz5bvNbDkISE0n2Np+ETl8Dm2+hBDbfTuzSvkl50avnqi1tRrUGhTjQUaCJ2qUQ6PQ0rww27Yi4mm 6//t2OMUVex9ELlG37GsDUh2aNUE90gVHzyri29ce7IR13WHjX4OA23Z0Y+bf9v3EYaZtOtikuhZvFlUwU1JLR9qCuIIpM4WSLcNciZTg+JYG+a1RzNCj94L w8cuhO6KiqdEENKX9YsfWw==
Archived-At: <https://mailarchive.ietf.org/arch/msg/rats/3bZppBnIUqpuu4rkTMeWi_KZkno>
Subject: Re: [Rats] Attestation Timing Definitions
X-BeenThere: rats@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Remote Attestation Procedures <rats.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rats>, <mailto:rats-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rats/>
List-Post: <mailto:rats@ietf.org>
List-Help: <mailto:rats-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rats>, <mailto:rats-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Mar 2020 17:33:21 -0000


> On Mar 10, 2020, at 8:20 PM, Panwei (William) <william.panwei@huawei.com> wrote:
> 
> I think Ned’s email also has detailedly explained that the entity of Relying Party can also take on the role of Verifier, and in this case the Attester sends Evidence + previous Attestation Result to that entity, within that entity the Verifier role processes the Evidence and the Relying Party role consumes the two Attestation Results.
>  
> So, for a simple nonce-based Passport Model, the Attester just sends Attestation Result produced by the Verifier to the Relying Party, and the passport is simply the Attestation Result. 
>    .----------.                     .----------.  .---------------.
>    | Attester |                     | Verifier |  | Relying Party |
>    '----------'                     '----------'  '---------------'
>       time(a)                             |               |
>       time(b)                             |               |
>         |                               time(c)           |
>         |<-----nonce1-------------------time(d)           |
>       time(e)                             |               |
>         |------Evidence---------------->time(f)           |
>         |                               time(g){@time(h)} |
>         |<-----Attestation Result-------time(i)           |
>         |                                 |             time(c’)
>         |<-----nonce2-----------------------------------time(d’)
>       time(e’)                            |               |
>         |------Attestation Result---------------------->time(l)
>         |                                 |             time(h)


This still doesn’t seem right. time(e’) indicates the Attester is signing and creating Evidence because of the definition of a time id label (e). Additionally, the only way to securely include nonce2 is if the Attester is signing which implies it is creating Evidence. 

By my understanding in simple passport all the attester is doing is convey the exact bits it got from the Verifier to the RP. It can’t incorporate nonce2 in any meaningful way.

The only way to use nonce2 in the simple passport model is for it to go along side of nonce1 and arrive before time(e) to be part of Evidence. It could go direct to the Attester from the RP or it could go through the Verifier to the RP.

Note that the latest EAT draft has an array of nonces rather than just one to accommodate this.


>  
>  
> And for a complex model, which is the diagram 2 that Eric drew, the Attester will produce another Evidence to be sent together with the Attestation Result to the entity of Relying Party and Verifier.
> For example, in the case of Eric’s draft (draft-voit-rats-trusted-path-routing), Evidence 1 is about the PCR value information, Attestation Result 1 says ‘boot processes have been verified successfully’, Evidence 2 is about time and changes since the Attester was last verified, Attestation Result 2 says ’time and changes are acceptable because only 5 minutes have passed since last verification and no changes happened’, then the Relying Party consumes these two Attestation Results to establish trust on the Attester.
>    .----------.                     .------------.      .------------------------------------.
>    | Attester |                     | Verifier 1 |      | Verifier 2     |     Relying Party |
>    '----------'                     '------------'      '------------------------------------'
>       time(a)                             |                   |                      |
>       time(b)                             |                   |                      |
>         |                               time(c)               |                      |
>         |<-----nonce 1------------------time(d)               |                      |
>       time(e)                             |                   |                      |
>         |------Evidence 1-------------->time(f)               |                      |
>         |                               time(g){@time(h)}     |                      |
>         |<-----Attestation Result 1-----time(i)               |                      |
>         |                                 |                   |                      |
>       time(a’)                            |                   |                      |
>       time(b’)                            |                   |                      |
>         |                                 |                 time(c’)                 |
>         |<-----nonce 2--------------------------------------time(d’)                 |
>       time(e’)                            |                   |                      |
>         |------Attestation Result 1 + Evidence 2----------->time(f')               time(l)
>         |                                 |                 time(g’){@time(h’)}      |
>         |                                 |                 time(i')-----AR 2----->time(l’)
>         |                                 |                   |                    time(h)
>         |                                 |                   |                    time(h’)

The flow seems technically correct, but a few comments:

- Seems like an awful lot of trouble just to add a nonce from the RP. If nonce2 can be made to arrive before time(e) either directly from the RP to the Attester or via Verifier 1 you get the same effect (I think) with much less trouble.  Or maybe it is the job of Verifier 1 to check the PCRs and the job of Verifier 2 to impose the policy related to the age of Evidence 1? Maybe even Verifier 2 is a machine learning system run by a 3rd party while Verifier 1 is a dumber system that just knows about valid PCRs operated by the HW vendor.

- If using dual verifiers and using EAT, then Evidence 2 has three claims: nonce 2, issued at time and Attestation Result 1 as a submodule, right? Attestation Result 1 might be TPM format which implies EAT submods have to allow for TPM format attestations.

LL