|
8 | 8 | "\n",
|
9 | 9 | "[Hash chains](https://en.wikipedia.org/wiki/Hash_chain) are well-known as a simple and efficient solution for asymmetric identification and authentication. They appear in many guises, often in contexts with severe performance constraints. For example, the [TESLA](https://www.rfc-editor.org/info/rfc4082) scheme and friends use hash chains at their core and provide authentication in wireless sensor networks and satellite communication.\n",
|
10 | 10 | "\n",
|
11 |
| - "In this notebook we construct an MPyC program for handling hash chains in a multiparty setting. There will be no single point of failure, as no single party will ever know the secret information from which the hash chains are built. This way of protecting secret keys is similar to what companies like [Sepior](https://sepior.com/) and [Unbound](https://www.unboundsecurity.com/) do using threshold cryptography and MPC-based hardware security modules (HSMs).\n", |
| 11 | + "In this notebook we construct an MPyC program for handling hash chains in a multiparty setting. There will be no single point of failure, as no single party will ever know the secret information from which the hash chains are built. This way of protecting secret keys is similar to what companies like [Sepior](https://sepior.com/) and [Unbound](https://github.com/unboundsecurity) do using threshold cryptography and MPC-based hardware security modules (HSMs).\n", |
12 | 12 | "\n",
|
13 | 13 | "## Hash Chains\n",
|
14 | 14 | "\n",
|
|
184 | 184 | "output_type": "stream",
|
185 | 185 | "text": [
|
186 | 186 | "Order-0 hash chain of length 1 (1 rounds):\n",
|
187 |
| - " 1 x0 = dce02350924adb59103b4000066ba9b2\n", |
| 187 | + " 1 x0 = 604fc4433bbbba2e5c4796510010ed48\n", |
188 | 188 | "\n",
|
189 | 189 | "Order-1 hash chain of length 2 (3 rounds):\n",
|
190 | 190 | " 1 -\n",
|
191 |
| - " 2 x1 = 1f25ad5f0aec7b7da294b0eaf8a197ad\n", |
192 |
| - " 3 x0 = dce02350924adb59103b4000066ba9b2\n", |
| 191 | + " 2 x1 = fe242be2c20da3cd87370d1614277d0d\n", |
| 192 | + " 3 x0 = 604fc4433bbbba2e5c4796510010ed48\n", |
193 | 193 | "\n",
|
194 | 194 | "Order-2 hash chain of length 4 (7 rounds):\n",
|
195 | 195 | " 1 -\n",
|
196 | 196 | " 2 -\n",
|
197 | 197 | " 3 -\n",
|
198 |
| - " 4 x3 = 86310b3f27481602941f8092771b6b45\n", |
199 |
| - " 5 x2 = 0f3d5981719b4410636824cb98433953\n", |
200 |
| - " 6 x1 = 1f25ad5f0aec7b7da294b0eaf8a197ad\n", |
201 |
| - " 7 x0 = dce02350924adb59103b4000066ba9b2\n", |
| 198 | + " 4 x3 = fb38d81680a23a43d8063ee81de10c90\n", |
| 199 | + " 5 x2 = 8b613cbcfaa17ff36b1823d599f535e2\n", |
| 200 | + " 6 x1 = fe242be2c20da3cd87370d1614277d0d\n", |
| 201 | + " 7 x0 = 604fc4433bbbba2e5c4796510010ed48\n", |
202 | 202 | "\n",
|
203 | 203 | "Order-3 hash chain of length 8 (15 rounds):\n",
|
204 | 204 | " 1 -\n",
|
|
208 | 208 | " 5 -\n",
|
209 | 209 | " 6 -\n",
|
210 | 210 | " 7 -\n",
|
211 |
| - " 8 x7 = d06f7022bce379c300c5522b5859be10\n", |
212 |
| - " 9 x6 = 6bd7f5507fe750c620e562b5740d1618\n", |
213 |
| - "10 x5 = 21f54ab687cd1e4d8fbfa1b25401887a\n", |
214 |
| - "11 x4 = 7cc31a0733a1c1f9dc4723d56976dc37\n", |
215 |
| - "12 x3 = 86310b3f27481602941f8092771b6b45\n", |
216 |
| - "13 x2 = 0f3d5981719b4410636824cb98433953\n", |
217 |
| - "14 x1 = 1f25ad5f0aec7b7da294b0eaf8a197ad\n", |
218 |
| - "15 x0 = dce02350924adb59103b4000066ba9b2\n", |
| 211 | + " 8 x7 = 104a0c631c5a3fdac68ddc47dc140bce\n", |
| 212 | + " 9 x6 = a5a807b0270387b6a599545bf23a455c\n", |
| 213 | + "10 x5 = 74ba842fc3c53005b3ba4a3d56ae3228\n", |
| 214 | + "11 x4 = 5f6d0953546e5fbdc4a4c1f3cd1dd380\n", |
| 215 | + "12 x3 = fb38d81680a23a43d8063ee81de10c90\n", |
| 216 | + "13 x2 = 8b613cbcfaa17ff36b1823d599f535e2\n", |
| 217 | + "14 x1 = fe242be2c20da3cd87370d1614277d0d\n", |
| 218 | + "15 x0 = 604fc4433bbbba2e5c4796510010ed48\n", |
219 | 219 | "\n"
|
220 | 220 | ]
|
221 | 221 | }
|
|
238 | 238 | "cell_type": "markdown",
|
239 | 239 | "metadata": {},
|
240 | 240 | "source": [
|
241 |
| - "The Python program [onewayhashchains.py](onewayhashchains.py) follows the same approach as presented in this notebook. In addition to the recursive pebbler shown above, however, the optimal binary pebbler is also implemented as an iterative algorithm." |
| 241 | + "The Python program [onewayhashchains.py](onewayhashchains.py) follows the same approach as presented in this notebook. In addition to the recursive pebbler shown above, however, the optimal binary pebbler is also implemented as an iterative algorithm. Moreover, [np_onewayhashchains.py](np_onewayhashchains.py) demos the use of the faster Numpy-based [np_aes.py](np_aes.py) reimplementation of the AES demo as well as the use of the Numpy-based [sha3.py](sha3.py) threshold SHA-3 hash functions." |
242 | 242 | ]
|
243 | 243 | }
|
244 | 244 | ],
|
|
0 commit comments