Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp3372290imm; Mon, 6 Aug 2018 03:41:49 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdT/iQnbmCwKV0KeDxX/hD9e0X3W/Tj/qVUAWy2wPIgkHRZHhNyvh51YYKnyGAE0AKJYWmY X-Received: by 2002:a62:2f84:: with SMTP id v126-v6mr16540256pfv.115.1533552109634; Mon, 06 Aug 2018 03:41:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533552109; cv=none; d=google.com; s=arc-20160816; b=hGVp95mEztl9ezkc8HlAcLb6YLKG9HUL3o80MOzMcBcTUcU7fWe3awEv8Wc5CKCJF+ mUWhG4Ec/Ji2wGuog0m2eYRS2QiSI6FC3o+zwA1hhSpef5FP4KR1NcdMMEbm5xt+43vi g5+3oHLAqP2KK6uRkbozyRfFppCqV8wn/SQw3po4dVPbkFmGHZeft9MRdbBqrIUdYfYr TjeaP7AUrWoa0JyCJ/YES6e1lxXvuLmUYWtKvU9BslhcLhJbs9y2PFmfLGxXpNaWgEDI aLP5g1oli44i/RskQFWVE1c7FadSHTO7+53gQOsW2d9Rm8H1Fe0qdiTS9OrfUSItMUWG 1FWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=1pU+D8ApnC0T0ngF9D7EkKlF6G+aqlTU+Zv20rvgQOw=; b=oRSwV+s/iwcQw+m3ETR7rW24E0e50fKyaUtgsoy0hSMYq4g9u2PV8/LVT8kVVqztMS /iEg58c0VtIejj7/oxyJW/2mFTH1cmaHTGHwfg9+TdA5mL82uYfo6CdonqH/oHxf0D0K veMv1sGgOK0ml7rw25AxpX2tQWrIpx4jCr/HPhL1MF1LVZdfvBCdCSYUfIjbxpGOFdD7 zUr81AeFw66bxLV4TcvhmaMOgV/ljWL2anZCCAd0ZYTJWXYUQRMBoblstWmHbJcqyMgj rEkroZIyCeBfdBVhtdm6pJ4zV8m2N56MJXihv95QIg9dTSO+habKr5o6Atzlz2foecuW ojUw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 17-v6si13528833pfm.264.2018.08.06.03.41.34; Mon, 06 Aug 2018 03:41:49 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729719AbeHFMsh (ORCPT + 99 others); Mon, 6 Aug 2018 08:48:37 -0400 Received: from smtp.nue.novell.com ([195.135.221.5]:43422 "EHLO smtp.nue.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726969AbeHFMsh (ORCPT ); Mon, 6 Aug 2018 08:48:37 -0400 Received: from linux-l9pv.suse (unknown.telstraglobal.net [134.159.103.118]) by smtp.nue.novell.com with ESMTP (TLS encrypted); Mon, 06 Aug 2018 12:40:03 +0200 Date: Mon, 6 Aug 2018 18:39:58 +0800 From: joeyli To: Yu Chen Cc: Pavel Machek , Ryan Chen , oneukum@suse.com, "Rafael J. Wysocki" , ebiggers@google.com, Theodore Ts'o , smueller@chronox.de, denkenz@gmail.com, Linux PM list , linux-crypto@vger.kernel.org, Linux Kernel Mailing List , kookoo.gu@intel.com, Zhang Rui Subject: Re: [PATCH 0/4][RFC v2] Introduce the in-kernel hibernation encryption Message-ID: <20180806103958.GI27062@linux-l9pv.suse> References: <1532346156.3057.11.camel@suse.com> <20180723162302.GA4503@sandybridge-desktop> <1532590246.7411.3.camel@suse.com> <20180726081404.GG4244@linux-l9pv.suse> <20180730170415.GQ4244@linux-l9pv.suse> <20180803033702.GB416@sandybridge-desktop> <20180803053445.GC4244@linux-l9pv.suse> <20180805100200.GB22948@amd> <20180806084534.GB12124@chenyu-desktop> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180806084534.GB12124@chenyu-desktop> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Aug 06, 2018 at 04:45:34PM +0800, Yu Chen wrote: > Hi Pavel, > On Sun, Aug 05, 2018 at 12:02:00PM +0200, Pavel Machek wrote: > > Hi! > > > > > > User space doesn't need to involve. The EFI root key is generated by > > > > EFI boot stub and be transfer to kernel. It's stored in EFI boot service > > > > variable that it can only be accessed by trusted EFI binary when > > > > secure boot is enabled. > > > > > > > Okay, this apply to the 'suspend' phase, right? > > > I'm still a little confused about the 'resume' phase. > > > Taking encryption as example(not signature), > > > the purpose of doing hibernation encryption is to prevent other users > > > from stealing ram content. Say, user A uses a passphrase to generate the > > > > No, I don't think that's purpose here. > > > > Purpose here is to prevent user from reading/modifying kernel memory > > content on machine he owns. > > > Say, A puts his laptop into hibernation and walks away, > and B walks by, and opens A's laptop and wakes up the system and he > can do what he wants. Although EFI key/TPM trusted key is enabled, > currently there's no certification during resume, which sounds > unsafe to me. Afterall, the original requirement is to probe > user for password during resume, which sounds more natural. OK, I saw your case. This is a physical accessing. I have a question: The suspend to memory also has the same behavior and more people are using suspend. Should we think a common solution to cover S3 and S4? > > Strange as it may sound, that is what "secure" boot requires (and what > > Disney wants). > > > Ok, I understand this requirement, and I'm also concerning how to > distinguish different users from seeing data of each other. > > Joey, > I'm thinking of a possible direction which could take advantage > of the password. It leverages either EFI key or TPM > trusted key to get it done. Does it make sense? > > 1. The user space generates a symetric key key_user using > the password, and passes the key_user to the kernel as the master > key. > 2. The kernel uses the EFI key or TPM trusted key to encrypt > the key_user thus gets a encrypt_key. > 3. Uses the encrypt_key to do snapshot encryption > 4. During resume, the same encrypt_key is generated following > the same steps(I assume the same EFI key or TPM key could be fetched > during resumed, right?) and do the snapshot decryption. > Yes, we can use TPM key to protect the user key. But I suggest that we should give user a function to disable the user key because not everyone want to key-in a password for hibernate/resume and also snapshot image encryption. Two policies: - When user key-in user key, the snapshot image must be encryption. - Without key-in user key, I still want the snapshot image can be encryption. No matter that the user key be key-in or not, the snapshot image must be encrypted by a kernel key. So I suggest that we treat the user key as a salt for snapshot image encryption and authentication. If the user key be disabled, then kernel just generates a random number as a salt. Actually, the kernel must compares the user key before snapshot decryption. If the user key doesn't match but user space still triggers furture resume process. Then kernel direct drops the snapshot image. > And this is what fscrypt is doing: > Documentation/filesystems/fscrypt.rst > The use case is different. We have two key for two purposes. And the two functions can be separated. Thanks Joey Lee