blob: ce08dbaa4a6064f6b3e9f9fa7cbbeb6a8d5bed94 [file] [log] [blame]
Alex Gaynor8c9dcb32013-11-03 13:10:57 -08001Glossary
2========
3
4.. glossary::
Alex Gaynor2d160122014-01-02 09:41:24 -08005 :sorted:
Alex Gaynor8c9dcb32013-11-03 13:10:57 -08006
7 plaintext
8 User-readable data you care about.
9
10 ciphertext
11 The encoded data, it's not user readable. Potential attackers are able
12 to see this.
13
14 encryption
15 The process of converting plaintext to ciphertext.
16
17 decryption
18 The process of converting ciphertext to plaintext.
19
20 key
21 Secret data is encoded with a function using this key. Sometimes
Alex Gaynora0516bf2013-11-03 13:20:41 -080022 multiple keys are used. These **must** be kept secret, if a key is
23 exposed to an attacker, any data encrypted with it will be exposed.
Alex Gaynor8c9dcb32013-11-03 13:10:57 -080024
25 symmetric cryptography
26 Cryptographic operations where encryption and decryption use the same
27 key.
28
Alex Gaynor049a3682014-02-17 13:21:39 -080029 public-key cryptography
Alex Gaynor8c9dcb32013-11-03 13:10:57 -080030 asymmetric cryptography
31 Cryptographic operations where encryption and decryption use different
Alex Gaynor049a3682014-02-17 13:21:39 -080032 keys. There are separate encryption and decryption keys. Typically
33 encryption is performed using a :term:`public key`, and it can then be
34 decrypted using a :term:`private key`. Asymmetric cryptography can also
35 be used to create signatures, which can be generated with a
36 :term:`private key` and verified with a :term:`public key`.
37
38 public key
39 This is one of two keys involved in :term:`public-key cryptography`. It
Alex Gaynor2c89df52014-02-17 13:30:16 -080040 can be used to encrypt messages for someone possessing the
41 corresponding :term:`private key` and to verify signatures created with
42 the corresponding :term:`private key`. This can be distributed
43 publicly, hence the name.
Alex Gaynor049a3682014-02-17 13:21:39 -080044
45 private key
46 This is one of two keys involved in :term:`public-key cryptography`. It
47 can be used to decrypt messages which were encrypted with the
Alex Gaynor2c89df52014-02-17 13:30:16 -080048 corresponding :term:`public key`, as well as to create signatures,
49 which can be verified with the corresponding :term:`public key`. These
Alex Gaynor049a3682014-02-17 13:21:39 -080050 **must** be kept secret, if they are exposed, all encrypted messages
51 are compromised, and an attacker will be able to forge signatures.
Alex Gaynor953ebf82013-12-08 10:28:30 -080052
53 authentication
54 The process of verifying that a message was created by a specific
55 individual (or program). Like encryption, authentication can be either
56 symmetric or asymmetric. Authentication is necessary for effective
57 encryption.
58
Alex Gaynor2d160122014-01-02 09:41:24 -080059 ciphertext indistinguishability
Alex Gaynor953ebf82013-12-08 10:28:30 -080060 This is a property of encryption systems whereby two encrypted messages
61 aren't distinguishable without knowing the encryption key. This is
62 considered a basic, necessary property for a working encryption system.
Paul Kehrerd5852cb2015-01-30 08:25:23 -060063
64 text
Paul Kehrer76c69902015-02-04 13:07:20 -060065 This type corresponds to ``unicode`` on Python 2 and ``str`` on Python
Paul Kehrer834d22f2015-02-06 11:01:07 -060066 3. This is equivalent to ``six.text_type``.
Eeshan Garg94759002015-05-20 20:35:33 +053067
68 nonce
69 A nonce is a **n**\ umber used **once**. Nonces are used in many
70 cryptographic protocols. Generally, a nonce does not have to be secret
71 or unpredictable, but it must be unique. A nonce is often a random
72 or pseudo-random number (see :doc:`Random number generation
73 </random-numbers>`). Since a nonce does not have to be unpredictable,
74 it can also take a form of a counter.
Paul Kehrer5bc8c7d2017-06-24 13:21:20 -100075
76 opaque key
77 An opaque key is a type of key that allows you to perform cryptographic
78 operations such as encryption, decryption, signing, and verification,
79 but does not allow access to the key itself. Typically an opaque key is
80 loaded from a `hardware security module`_ (HSM).
81
Paul Kehrer1b86dc52017-09-20 23:42:34 +080082 A-label
83 The ASCII compatible encoded (ACE) representation of an
84 internationalized (unicode) domain name. A-labels begin with the
85 prefix ``xn--``. To create an A-label from a unicode domain string use
86 a library like `idna`_.
Paul Kehrer5bc8c7d2017-06-24 13:21:20 -100087
Paul Kehrer1aac78c2017-10-11 19:49:57 +080088 bits
89 A bit is binary value -- a value that has only two possible states.
90 Typically binary values are represented visually as 0 or 1, but
91 remember that their actual value is not a printable character. A byte
92 on modern computers is 8 bits and represents 256 possible values. In
93 cryptographic applications when you see something say it requires a 128
94 bit key, you can calculate the number of bytes by dividing by 8. 128
95 divided by 8 is 16, so a 128 bit key is a 16 byte key.
96
Paul Kehrere885bd62017-10-11 20:29:23 +080097 U-label
98 The presentational unicode form of an internationalized domain
99 name. U-labels use unicode characters outside the ASCII range and
100 are encoded as A-labels when stored in certificates.
101
Paul Kehrer5bc8c7d2017-06-24 13:21:20 -1000102.. _`hardware security module`: https://en.wikipedia.org/wiki/Hardware_security_module
Paul Kehrer1b86dc52017-09-20 23:42:34 +0800103.. _`idna`: https://pypi.org/project/idna/