F. Y u
et al.
Analysis of TPM 2.0 HMAC authorization under DRM scenario
used the extended finite state machine model model for
generating the test cases and analyze the testing results.
The paper [31] developed a secure compiler for distributed
information flows, relying on TPM 1.2 to minimize trusted
computing base. This paper presented a security model for
these mechanisms in an imperative language. Similarly,
TPM 2.0 also provides its functional support to the exter-
nal entity by its commands or APIs. It is necessary to use
formal methods to analyze the security properties of TPM
2.0 to judge whether it has the security flaws.
We mainly make the following contributions in this paper:
(i) describe the TPM 2.0 HMAC authorization scheme as
a security protocol between the TPM and the caller; (ii)
make a detail comparison of the TPM 2.0 authorization to
the TPM 1.2 OIAP and OSAP; (iii) Use the typed pi cal-
culus to describe the TPM 2.0 HMAC authorization and
its security properties under the DRM scenario; and (iv)
use ProVerify to reason that the key handle manipulation
flaw for TPM 1.2 does not exist any more in TPM 2.0,
because the access entity unique name has been linked to
the HMAC value, but the vulnerability of key blob substi-
tution still exists in TPM 2.0.
The remainder of this paper is organized as follows:
Section 3 gives an introduction of TPM 2.0 HMAC autho-
rization and makes a detail comparison with TPM 1.2;
Section 4 constructs the formal model of the TPM 2.0
HMAC authorization under DRM scenario and reason
whether the security properties hold by attack analysis;
and Section 5 concludes this paper and introduces the
future work.
3. TRUSTED PLATFORM MODULE
2.0 HASH-BASED MESSAGE
AUTHENTICATION CODE
AUTHORIZATION AND
COMPARISON WITH TRUSTED
PLATFORM MODULE 1.2
Many TPM 2.0 commands used by the caller require
authorizations. TPM 2.0 specification defines three autho-
rization types: password, HMAC, and policy. A plaintext
password authorization is appropriate for cases in which
the path between the caller and the TPM is trusted, or
when the authorization value is shared by users. HMAC
and policy both are session-based authorizations, which
begins by using TPM2_StartAuthSession(). Dur-
ing the HMAC authorization, the authValue of the entity
is used. During the policy authorization, the authPolicy of
the entity is used. A policy defines the conditions for use
of an entity. In TPM 2.0, the authPolicy is one (statisti-
cally unique) digest. TPM 2.0 specification only requires
that the two commands, TPM2_NV_ChangeAuth() and
TPM2_Duplicate(), must use a policy authorization.
Most TPM 2.0 commands can use HMAC authorizations.
This paper focuses on giving an analysis of TPM 2.0
HMAC authorization.
3.1. Trusted Platform Module 2.0
hash-based message authentication
code authorization
The TPM 2.0 HMAC authorization is illustrated by
Figure 1 with one example command and its associated
authorization session, which is described as a security
protocol between the caller and the TPM like TPM 1.2,
although there is no clear declaration that the HMAC
authorization is a protocol in the TPM 2.0 specifications
for some unknown reasons. The example command in
Figure 1 only has one entity handle handleA. Depending
on the specific command of TPM 2.0, zero to three han-
dles are used to identify the entities in TPM. The command
handle may have an associated authorization session, but
no currently defined TPM 2.0 command needs more than
two authorizations. This example command also has one
sensitiveData parameter in session-based encryption.
When starting the TPM 2.0 HMAC authorization
session by calling TPM2_StartAuthSession(),
the parameters, handleBind and handleKeyLoaded,
can be set NULL or valid values. The key associated
with handleKeyLoaded is used to encrypt the salt
value. If handleKeyLoaded=NULL, there is no salt
value. The salt value maybe symmetrically (including
XOR obfuscation and Cipher Feed Back mode (CFB)
encryption) or asymmetrically encrypted during trans-
mission, which depends on the key type associated with
the handleKeyLoaded. The function SaltEnc() is
defined as Equation (1), and SaltDec() is defined as
Equation (2), the nonceCaller used in CFBSymEnc()
and CFBSymDec() is acted as the Initialization Vector
(IV). The parameter of handleBind declares the spe-
cific access entity in the session. Based on the values
of handleBind and handleKeyLoaded, the TPM 2.0
authorization session can be classified into four types:
unbound and unsalted session (handleBind=NULL and
handleKeyLoaded=NULL), unbound and salted session
(handleBind=NULL and handleKeyLoaded¤NULL),
bound and unsalted session (handleBind¤NULL
and handleKeyLoaded
=NULL), bound and salted
session (handleBind¤NULL and handleKey-
Loaded¤NULL). The sensitiveData parameter in the
example command is in encrypted form during transmis-
sion, which needs one sessionKey. The sessionKey
creation of TPM 2.0 is explained as Equation (3). Unbound
and unsalted session does not support this session-based
encryption. The session-based parameter encryption of
TPM 2.0 can be XOR obfuscation or Cipher FeedBack
(CFB) model symmetrical encryption. The function
SessionEnc() and SessionDec() are defined as
Equation (4) and (5). TPM 2.0 supports that the ses-
sion bind handle handleBind is not the same as the
access entity handle handleA, which leads two small
different situations in XOR obfuscation-based session
encryption, cmdAuthHMAC (defined as Equation (6))
and rspAuthHMAC (defined as Equation (7)) genera-
tion. The authorization of the caller is achieved by the
Security Comm. Networks
(2015) © 2015 John Wiley & Sons, Ltd.
DOI: 10.1002/sec