Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Issue 729803002: Easy Sign-in: Use TPM RSA key to sign nonce in sign-in protocol (Closed)

Created:
6 years, 1 month ago by tbarzic
Modified:
6 years ago
CC:
chromium-reviews, extensions-reviews_chromium.org, nkostylev+watch_chromium.org, oshima+watch_chromium.org, chromium-apps-reviews_chromium.org, stevenjb+watch_chromium.org, davemoore+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Project:
chromium
Visibility:
Public.

Description

This adds utility for creating user-specific RSA key pair in system TPM slot that is used for easy sign-in protocol, and for signing data provided by Easy Unlock app using the created private key. Per user public keys are kept in the local state and added to challenge data when challenges are created (while resetting cryptohome sign-in secrets). During challenge creation, existence of the Easy Sign-in TPM key is checked for user, and the key pair is created if necessary. Additionally, key pair presence is ensured when EasyUnlockService is started after user log in. This is done to handle the case where Easy Unlock has previously been set up. At this time, it is verified that the private key actually exists in the TPM slot. Mapping from user id to public TPM key is kept in local state so it can be accessed on sign in screen (as it will be needed before a user logs in; the public key is used to identify the private key in the system slot) BUG=409027 TEST=Confirmed easy sign-in works Committed: https://crrev.com/cc7df610b49e8ba6c60c8ccbcfb111f5d2084128 Cr-Commit-Position: refs/heads/master@{#308431}

Patch Set 1 #

Patch Set 2 : . #

Patch Set 3 : . #

Patch Set 4 : . #

Patch Set 5 : . #

Patch Set 6 : #

Patch Set 7 : . #

Patch Set 8 : . #

Patch Set 9 : . #

Patch Set 10 : . #

Patch Set 11 : . #

Total comments: 18

Patch Set 12 : . #

Patch Set 13 : . #

Patch Set 14 : browsertests -> unittests #

Patch Set 15 : compile on non chromeos #

Patch Set 16 : . #

Patch Set 17 : . #

Total comments: 20

Patch Set 18 : . #

Patch Set 19 : . #

Total comments: 8

Patch Set 20 : . #

Patch Set 21 : . #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1268 lines, -42 lines) Patch
M chrome/browser/chromeos/login/easy_unlock/easy_unlock_create_keys_operation.h View 1 2 chunks +2 lines, -0 lines 0 comments Download
M chrome/browser/chromeos/login/easy_unlock/easy_unlock_create_keys_operation.cc View 1 3 chunks +3 lines, -30 lines 0 comments Download
M chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.h View 1 6 1 chunk +4 lines, -0 lines 0 comments Download
M chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2 chunks +44 lines, -1 line 0 comments Download
A chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +136 lines, -0 lines 0 comments Download
A chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +355 lines, -0 lines 0 comments Download
A chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager_factory.h View 1 2 1 chunk +44 lines, -0 lines 0 comments Download
A chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager_factory.cc View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +71 lines, -0 lines 0 comments Download
A chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 chunk +528 lines, -0 lines 0 comments Download
M chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +23 lines, -2 lines 0 comments Download
M chrome/browser/signin/easy_unlock_service.h View 1 2 3 4 5 6 7 2 chunks +4 lines, -0 lines 0 comments Download
M chrome/browser/signin/easy_unlock_service.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 6 chunks +34 lines, -0 lines 0 comments Download
M chrome/browser/signin/easy_unlock_service_factory.cc View 1 2 chunks +4 lines, -0 lines 0 comments Download
M chrome/browser/signin/easy_unlock_service_regular.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +6 lines, -9 lines 0 comments Download
M chrome/chrome_browser_chromeos.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 chunk +4 lines, -0 lines 0 comments Download
M chrome/chrome_tests_unit.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 chunk +1 line, -0 lines 0 comments Download
M chrome/common/pref_names.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 chunk +1 line, -0 lines 0 comments Download
M chrome/common/pref_names.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 chunk +4 lines, -0 lines 0 comments Download

Messages

Total messages: 13 (2 generated)
tbarzic
Can you please take a look? xiyuan: main review pneubeck: easy_unlock_tpm_key_manager.cc (for usage of chromeos::platform_keys ...
6 years ago (2014-12-02 07:30:28 UTC) #2
xiyuan
Sorry, the comments were on PS11. https://codereview.chromium.org/729803002/diff/200001/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc File chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc (right): https://codereview.chromium.org/729803002/diff/200001/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc#newcode286 chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc:286: SetKeyInLocalState(user_id, public_key); Since ...
6 years ago (2014-12-02 23:15:59 UTC) #3
tbarzic
https://codereview.chromium.org/729803002/diff/200001/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc File chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc (right): https://codereview.chromium.org/729803002/diff/200001/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc#newcode286 chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc:286: SetKeyInLocalState(user_id, public_key); On 2014/12/02 23:15:58, xiyuan wrote: > Since ...
6 years ago (2014-12-03 19:10:29 UTC) #4
xiyuan
LGTM Thank you for taking care of this. :) Please wait for pneubeck@ for the ...
6 years ago (2014-12-03 19:25:29 UTC) #5
pneubeck (no reviews)
I looked at the crypto part of the manager, which lgtm. https://codereview.chromium.org/729803002/diff/320001/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc File chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc (right): ...
6 years ago (2014-12-05 12:16:05 UTC) #6
tbarzic
https://codereview.chromium.org/729803002/diff/320001/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc File chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc (right): https://codereview.chromium.org/729803002/diff/320001/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc#newcode216 chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc:216: bool EasyUnlockTpmKeyManager::SetGetSystemSlotTimeoutMs(size_t timeout_ms) { On 2014/12/05 12:16:04, pneubeck wrote: ...
6 years ago (2014-12-11 23:43:28 UTC) #7
pneubeck (no reviews)
still lgtm https://codereview.chromium.org/729803002/diff/360001/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc File chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc (right): https://codereview.chromium.org/729803002/diff/360001/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc#newcode188 chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc:188: CHECK_EQ(user_id_, user_id); can't you just remove the ...
6 years ago (2014-12-14 09:39:37 UTC) #8
tbarzic
https://codereview.chromium.org/729803002/diff/360001/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc File chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc (right): https://codereview.chromium.org/729803002/diff/360001/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc#newcode188 chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc:188: CHECK_EQ(user_id_, user_id); On 2014/12/14 09:39:37, pneubeck wrote: > can't ...
6 years ago (2014-12-15 20:05:47 UTC) #9
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/729803002/400001
6 years ago (2014-12-15 20:07:05 UTC) #11
commit-bot: I haz the power
Committed patchset #21 (id:400001)
6 years ago (2014-12-15 21:54:44 UTC) #12
commit-bot: I haz the power
6 years ago (2014-12-15 21:56:21 UTC) #13
Message was sent while issue was closed.
Patchset 21 (id:??) landed as
https://crrev.com/cc7df610b49e8ba6c60c8ccbcfb111f5d2084128
Cr-Commit-Position: refs/heads/master@{#308431}

Powered by Google App Engine
This is Rietveld 408576698