Edit Encryption doc: add MAC, reformat pubkeys, add a footnote about padding

This commit is contained in:
Lee Miller 2022-08-18 15:23:22 +03:00
parent a961398a42
commit 4ad0839023
Signed by untrusted user: lee.miller
GPG Key ID: 4F97A5EA88F4AB63

View File

@ -44,7 +44,7 @@ Encryption
5. Use the X component of public key P and calculate the SHA512 hash H. 5. Use the X component of public key P and calculate the SHA512 hash H.
6. The first 32 bytes of H are called key_e and the last 32 bytes are called 6. The first 32 bytes of H are called key_e and the last 32 bytes are called
key_m. key_m.
7. Pad the input text to a multiple of 16 bytes, in accordance to PKCS7. 7. Pad the input text to a multiple of 16 bytes, in accordance to PKCS7. [#f1]_
8. Encrypt the data with AES-256-CBC, using IV as initialization vector, 8. Encrypt the data with AES-256-CBC, using IV as initialization vector,
key_e as encryption key and the padded input text as payload. Call the key_e as encryption key and the padded input text as payload. Call the
output cipher text. output cipher text.
@ -84,15 +84,15 @@ Partial Example
:: ::
04 09 d4 e5 c0 ab 3d 25 04
fe 04 8c 64 c9 da 1a 24 09 d4 e5 c0 ab 3d 25 fe
2c 7f 19 41 7e 95 17 cd 04 8c 64 c9 da 1a 24 2c
26 69 50 d7 2c 75 57 13 7f 19 41 7e 95 17 cd 26
58 5c 61 78 e9 7f e0 92 69 50 d7 2c 75 57 13 58
fc 89 7c 9a 1f 17 20 d5 5c 61 78 e9 7f e0 92 fc
77 0a e8 ea ad 2f a8 fc 89 7c 9a 1f 17 20 d5 77
bd 08 e9 32 4a 5d de 18 0a e8 ea ad 2f a8 fc bd
57 08 e9 32 4a 5d de 18 57
- Public key, 0x04 prefix, then 32 bytes X and 32 bytes Y. - Public key, 0x04 prefix, then 32 bytes X and 32 bytes Y.
@ -129,15 +129,15 @@ Partial Example
:: ::
04 02 93 21 3d cf 13 88 04
b6 1c 2a e5 cf 80 fe e6 02 93 21 3d cf 13 88 b6
ff ff c0 49 a2 f9 fe 73 1c 2a e5 cf 80 fe e6 ff
65 fe 38 67 81 3c a8 12 ff c0 49 a2 f9 fe 73 65
92 df 94 68 6c 6a fb 56 fe 38 67 81 3c a8 12 92
5a c6 14 9b 15 3d 61 b3 df 94 68 6c 6a fb 56 5a
b2 87 ee 2c 7f 99 7c 14 c6 14 9b 15 3d 61 b3 b2
23 87 96 c1 2b 43 a3 86 87 ee 2c 7f 99 7c 14 23
5a 87 96 c1 2b 43 a3 86 5a
- Public key R - Public key R
.. list-table:: Derived public key P (point multiply r with K): .. list-table:: Derived public key P (point multiply r with K):
@ -150,15 +150,15 @@ Partial Example
:: ::
04 0d b8 e3 ad 8c 0c d7 04
3f a2 b3 46 71 b7 b2 47 0d b8 e3 ad 8c 0c d7 3f
72 9b 10 11 41 57 9d 19 a2 b3 46 71 b7 b2 47 72
9e 0d c0 bd 02 4e ae fd 9b 10 11 41 57 9d 19 9e
89 ca c8 f5 28 dc 90 b6 0d c0 bd 02 4e ae fd 89
68 11 ab ac 51 7d 74 97 ca c8 f5 28 dc 90 b6 68
be 52 92 93 12 29 be 0b 11 ab ac 51 7d 74 97 be
74 3e 05 03 f4 43 c3 d2 52 92 93 12 29 be 0b 74
96 3e 05 03 f4 43 c3 d2 96
- Public key P - Public key P
* - * -
@ -230,3 +230,25 @@ Partial Example
43 a6 f9 a0 d7 5a f7 ea 43 a6 f9 a0 d7 5a f7 ea
cc 1b d9 57 14 7b f7 23 cc 1b d9 57 14 7b f7 23
- 3 blocks of 16 bytes of encrypted data. - 3 blocks of 16 bytes of encrypted data.
.. list-table:: MAC:
:header-rows: 1
:widths: auto
* - Data
- Comments
* -
::
f2 52 6d 61 b4 85 1f b2
34 09 86 38 26 fd 20 61
65 ed c0 21 36 8c 79 46
57 1c ea d6 90 46 e6 19
- 32 bytes hash
.. rubric:: Footnotes
.. [#f1] The pyelliptic implementation used in PyBitmessage takes unpadded data,
see :obj:`.pyelliptic.Cipher.ciphering`.