Home

keyEncipherment

KeyEncipherment is a flag in the X.509 public key certificate KeyUsage extension defined by RFC 5280. It indicates that the subject public key is intended to be used to encipher (encrypt) private or secret keys, such as a symmetric session key, or to wrap keys for secure delivery. The keyEncipherment bit is commonly associated with RSA keys but is applicable to other algorithms capable of encrypting keys.

In practice, keyEncipherment matters in TLS and other public-key infrastructures. A server certificate with keyEncipherment enables

KeyUsage is one of several bits in the extension, and it can be marked as critical. If

See also RFC 5280, X.509, and TLS cipher suites.

certain
key
exchange
methods,
such
as
RSA
key
exchange,
where
the
client
uses
the
server’s
public
key
to
encrypt
a
pre-master
secret
that
only
the
server
can
decrypt
with
its
private
key.
In
modern
TLS
configurations
that
employ
ephemeral
key
exchanges
(for
example,
ECDHE
with
RSA
or
ECDHE
with
ECDSA),
the
certificate
is
typically
used
to
sign
the
key
exchange
parameters
rather
than
to
encipher
data,
so
the
digitalSignature
bit
becomes
essential
and
keyEncipherment
may
be
unused
for
the
key.
a
certificate
is
marked
critical
and
a
relying
party
cannot
honor
keyEncipherment,
validation
may
fail.
It
is
common
for
TLS
server
certificates
to
include
both
digitalSignature
and
keyEncipherment,
though
configurations
vary
by
algorithm
and
policy.