Re: [nfsv4] Fwd: I-D Action: draft-ietf-nfsv4-integrity-measurement-03.txt

"Everhart, Craig" <Craig.Everhart@netapp.com> Thu, 08 November 2018 16:14 UTC

Return-Path: <Craig.Everhart@netapp.com>
X-Original-To: nfsv4@ietfa.amsl.com
Delivered-To: nfsv4@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 306D312D4E6 for <nfsv4@ietfa.amsl.com>; Thu, 8 Nov 2018 08:14:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=netapp.onmicrosoft.com
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 6XpiZYiJnWI3 for <nfsv4@ietfa.amsl.com>; Thu, 8 Nov 2018 08:14:15 -0800 (PST)
Received: from NAM04-CO1-obe.outbound.protection.outlook.com (mail-eopbgr690071.outbound.protection.outlook.com [40.107.69.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CE70A129619 for <nfsv4@ietf.org>; Thu, 8 Nov 2018 08:14:14 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netapp.onmicrosoft.com; s=selector1-netapp-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6HwRxp5dvSz+I0fgUnAlYIa/pB7nnbe1MsTcQX2UkNU=; b=oprcFTGxeJCJnjGqxh/Fb3fGKDSwDA6H8YRql6TLn1uPRwJqOjSiTl8nWg5VdL+9U/51sodJF1Kj1FprdKtcgfni5NTI8yjKsWsb1CECUPcLKuJ403jDDgUezGa/9mUlz5+J6/GxN7o6UXvSyPExcPOW9x98E19kVJPL2HasKhA=
Received: from BN6PR06MB3089.namprd06.prod.outlook.com (10.174.95.163) by BN6PR06MB2705.namprd06.prod.outlook.com (10.173.140.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.27; Thu, 8 Nov 2018 16:14:13 +0000
Received: from BN6PR06MB3089.namprd06.prod.outlook.com ([fe80::c0b4:c45:1e23:713f]) by BN6PR06MB3089.namprd06.prod.outlook.com ([fe80::c0b4:c45:1e23:713f%3]) with mapi id 15.20.1294.034; Thu, 8 Nov 2018 16:14:13 +0000
From: "Everhart, Craig" <Craig.Everhart@netapp.com>
To: Chuck Lever <chuck.lever@oracle.com>
CC: NFSv4 <nfsv4@ietf.org>
Thread-Topic: [nfsv4] Fwd: I-D Action: draft-ietf-nfsv4-integrity-measurement-03.txt
Thread-Index: AQHUdq4vLsLdr/162UyNzLvaAaph+6VEOraAgAHLkQD//7S3AA==
Date: Thu, 08 Nov 2018 16:14:12 +0000
Message-ID: <578769FE-6C12-4003-A579-7FB461D99A8A@netapp.com>
References: <154160412218.26446.11676556173331817093@ietfa.amsl.com> <74E10D08-6181-49C8-B994-6554C72C4B7D@oracle.com> <BBC9F2E1-4E81-4FE4-99D0-A0B23F33AAD4@netapp.com> <D1E8642B-9A07-4812-82E0-982EDC6EF73E@oracle.com>
In-Reply-To: <D1E8642B-9A07-4812-82E0-982EDC6EF73E@oracle.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/10.12.0.181014
authentication-results: spf=none (sender IP is ) smtp.mailfrom=Craig.Everhart@netapp.com;
x-originating-ip: [216.240.30.4]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; BN6PR06MB2705; 6:VRDs86v3NPRyb6Taghro8v3j0QZ3uCYDMKa4O7DT8p5xwuaEOffKjudvyEZFX6uiZ7k04YzzjcMJ3NPYSBaooPWnMSKnmkr2k27CJAbZvDUsWGi5oyePq+6Y8TXom/7juHMlpyWEYz7DcugQHJTPsqUMEiYk8UItbqQV4NXD1fuP9ZPohvDJQq1z7TnZ6H1QeiNgEmRVbzL/JsqhxgbvBAuCam7CtJqaUnZ4yTOlvMrwy/igM1Z4/8QJ8d+dSRMPnFElBvIdaUyrDk3k/euksN0iag1FI7z3nJ7brfFrj7i3VfFA855P3pjjc44mDNXhYBinUb2X4e2+hw8NXJipUOCZso5AgtmQqj7fzY6h8V0KXJkKjkgk7BMPK7eaTdJQ5lHlhw3pcFvrbLW66KdlpEbvVhVv/UAFP9SDAEwND8b40nglLNeD7rhhvUMzzskWuKVpOc6rikjVVjNJn1djjg==; 5:bxBe9e9j4I4CEhH3crSKtUiJbr6PTjy9UinM3iLhIno0txptr6L9NQmTzC4IEffz37RzfciaWfTMBxWhfbLy75breMCd/y7acWZfEFmfsBkpSEIvfpjTJz2Wf2hcOCBLMan9erqSeEpXgcJVlmvI0FTIhAQ4gtxTI9Ci1fLRZmY=; 7:tAKQx//MZ3iIFMG5fAPpNMyr89nuAN4V/q+NGEd2ffsP7zl3QQSH34esRqaphKCIHxWxpBrt4QPJRdIrYUuTyTyJ9kiRkshrNIP70sc8sOvIeaPCppHKo+7DFXXQriJPJBTiKAWITlk3Kkai0ZUfMw==
x-ms-exchange-antispam-srfa-diagnostics: SOS;
x-ms-office365-filtering-correlation-id: 48f68737-26c1-40f3-0a3f-08d64595391f
x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(5600074)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020); SRVR:BN6PR06MB2705;
x-ms-traffictypediagnostic: BN6PR06MB2705:
x-microsoft-antispam-prvs: <BN6PR06MB27058D2D21E09D3EFD01173BF0C50@BN6PR06MB2705.namprd06.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(788757137089)(17755550239193)(158342451672863)(192374486261705)(146099531331640);
x-ms-exchange-senderadcheck: 1
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231382)(944501410)(52105095)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:BN6PR06MB2705; BCL:0; PCL:0; RULEID:; SRVR:BN6PR06MB2705;
x-forefront-prvs: 0850800A29
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(366004)(136003)(376002)(39860400002)(396003)(189003)(199004)(51914003)(97736004)(6116002)(83716004)(71200400001)(6916009)(68736007)(71190400001)(76176011)(6246003)(6512007)(53936002)(3846002)(26005)(6486002)(6506007)(102836004)(53546011)(8936002)(14454004)(229853002)(6436002)(81156014)(72206003)(5660300001)(8676002)(81166006)(66066001)(478600001)(256004)(86362001)(82746002)(4326008)(14444005)(36756003)(7736002)(2906002)(476003)(186003)(305945005)(486006)(25786009)(106356001)(105586002)(2616005)(2900100001)(58126008)(99286004)(446003)(11346002)(316002)(93886005)(33656002)(21314003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR06MB2705; H:BN6PR06MB3089.namprd06.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None (protection.outlook.com: netapp.com does not designate permitted sender hosts)
x-microsoft-antispam-message-info: lcV/Po01Uvqa7xBW+P8Gluu0uhVu9gXR9rwFVVLHck9E4C780/Y90pTxHYxvjxxVjYPWag90Z8BrdGi8kZKN4/7IfJhKMC7kp2obg3JCnUjiNiHRtDk2hXc/CP22cioe4gcXesuocoYjbyoPlakJMviODg0MsVt4Rfl2WVyktWnPevWpqhy79Z1C0gd8Hbex2+SrCtzXEuHUKe8u0YFUSJbSi70dVhP+mS+f7s5D4srG3OW3xKOLd8CDrheTPKZ2x/Cj4M3dMrOHYbGAFU9pKrgwt15p7NFp2/1wnKNBhancsz2r68Uyt+ICxkttGUu9g7+Nrlbb6OJg4b3/CKI24dXdcx8QOB0tqZaigGES1LE=
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: text/plain; charset="utf-8"
Content-ID: <F0057974B66BAC45AE80FE84DC78D954@namprd06.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: netapp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 48f68737-26c1-40f3-0a3f-08d64595391f
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Nov 2018 16:14:12.9152 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 4b0911a0-929b-4715-944b-c03745165b3a
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR06MB2705
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/kEwue_2PRYn8k6SCTlchce8yAPc>
Subject: Re: [nfsv4] Fwd: I-D Action: draft-ietf-nfsv4-integrity-measurement-03.txt
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/nfsv4/>
List-Post: <mailto:nfsv4@ietf.org>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 08 Nov 2018 16:14:18 -0000

Hi Chuck.   Comments in-line.
		Craig

On 11/8/18, 10:44 AM, "Chuck Lever" <chuck.lever@oracle.com> wrote:
   
    Hi Craig-
    
    > On Nov 7, 2018, at 12:18 PM, Everhart, Craig <Craig.Everhart@netapp.com> wrote:
    >
    > Hi Chuck,
    >
    > Thanks for the update.
    >
    > At the end of the introduction (1), you add "Unlike traditional integrity management schemes, the hash is not replaced every time a file is copied.  Instead, the signed checksum is copied along with file content and presented whenever the content is about to be used."  You're alluding to a practice with which I'm not familiar, even when you're describing traditional schemes.  Copied for reading or for writing?  What would have replaced the hash every time the file is copied--a storage system?  (I want to understand this so that I can understand how the mechanism that you're proposing will replace and modify the existing mechanism.)
    
    The traditional scheme I'm thinking of is the mechanism that
    generates and writes a checksum during media block writes.
    When a file is copied, each newly allocated and written block
    gets a freshly generated checksum.
    
    This checksum is based on the data as presented to the storage
    media, so it cannot protect against unwanted changes due to
    software bugs or malicious acts during the file copy operation.

I thought that your "traditional" scheme was to refer to how "traditional provenance" schemes worked.  Referring to this internal, unexposed checksum inside a storage system as a "traditional integrity management" scheme seems to be a strained parallel.  Perhaps "Unlike an integrity management scheme based solely on file content as seen on the file storage device"?
    
    Unlike that scheme, FPI follows without change the file's data
    content. Or to put it another way, FPI is copied along with
    the file's content to its destination. 

By one of those special tools, again?  What copying mechanism will know about provenance?

    This means _any_ change
    to the content between the time it is generated and the time it
    is used can be detected.

And detected by only these special tools.
    
    
    > It sounds like a hash would have been replaced whenever a file was written, but this replacement copies the hash along with file content--presumably by some client-side tool?
    
    Yes, when file content is updated, the FPI has to be refreshed.
    This would be done using a tool, run on a client or on the
    server, that is capable of re-signing the hash.
    
    In it's simplest form, using FPI means that protected files
    become effectively immutable. That's exactly what we want for
    things like executables, which change infrequently.
    
    
    > Down in 1.1, you likely want to add "only" immediately before the function that it most closely modifies; "NFS acts as only a conduit ..."  rather than "NFS acts only as a conduit...".  (e.g.: I'd hope that NFS acts as more than a conduit!)
    >
    > In 4.2, can there be multiple FATTR4_FILE_PROVENANCE objects with different fpv_type values?
    
    Right now my opinion is that should be allowed.

The down-side is that they'd need to be enumerated, if such a system were to be backed up, for example.
    
    > How do I enumerate them?
    
    There isn't an explicit mechanism to do that because I don't
    believe that's going to be needed. The client will ask the
    server for the particular fpv_values that the client supports.

Right, as long as it's only the special tools that do the reading.
    
    
    > Clearly your description of the treatment of distinct fpv_type values would suggest that there would be multiple instances.  Are there other FATTR4_xxx attributes with multiple values?
    
    Security Labels, but only one label can be stored at a time.

And I'd suggest that the one-at-a-time semantics is important if there's no way of doing enumeration.
    
    
    > It's a little odd that fpv_type is not in the fattr4 namespace, but that it represents a sub-type.  How do I specify a fpv_type to GETATTR?
    
    struct file_prov4 {
            uint32_t                 fpv_type;
            opaque                   fpv_data<>;
    };

That's in the GETATTR reply, right--how the NFS server indicates an attribute to the NFS client.  How does an NFS client specify to the GETATTR sent from client to server that it is interested in a specific value of fpv_type and not others?  (Per my reading, GETATTR accepts only the current file handle as a parameter.)  In the security-label regime, as you say, you ask for the security attribute and get back the (only) one that is stored.  Apparently you envision a file system in which many types can be stored simultaneously.  As an NFS client, how do I indicate the fpv_type value of interest to the NFS server?
    
    I just copied the security label attribute. I'll have to go back
    and look at how that works and copy that language to Section 4.3.

I suspect that it works because there's only one kind of security label.
    
    > Again, how do I enumerate all the stored fpv_type values?
    > (It might be easier if there were only one possible FATTR4_FILE_PROVENANCE attribute, so that storing any fpv_type value would replace any other FATTR4_FILE_PROVENANCE attribute.
    
    Easier how?

Principally because you wouldn't have me asking how the existing stored fpv_type values are to be enumerated.
    
    > Alternatively, you could allow for FATTR4_FILE_PROVENANCE_xxx values, in which the "xxx" extension semantically replaces your suggested fpv_type value.)
    
    That means we'd have to extend NFSv4.2 every time we add a new
    fpv_value. If we use a subtype and an IANA registry, it becomes
    simple to add a new value -- it does not require any change to
    the NFSv4 protocol.
   
I agree.  It's a flaky idea, but it has the advantage of not requiring a new type enumeration.