aboutsummaryrefslogtreecommitdiff
path: root/draft-schanzen-gns.txt
diff options
context:
space:
mode:
Diffstat (limited to 'draft-schanzen-gns.txt')
-rw-r--r--draft-schanzen-gns.txt202
1 files changed, 129 insertions, 73 deletions
diff --git a/draft-schanzen-gns.txt b/draft-schanzen-gns.txt
index 9d62457..6d41ad3 100644
--- a/draft-schanzen-gns.txt
+++ b/draft-schanzen-gns.txt
@@ -85,11 +85,11 @@ Table of Contents
85 6.2.5. VPN . . . . . . . . . . . . . . . . . . . . . . . . . 18 85 6.2.5. VPN . . . . . . . . . . . . . . . . . . . . . . . . . 18
86 6.2.6. NICK . . . . . . . . . . . . . . . . . . . . . . . . 19 86 6.2.6. NICK . . . . . . . . . . . . . . . . . . . . . . . . 19
87 7. Zone Revocation . . . . . . . . . . . . . . . . . . . . . . . 19 87 7. Zone Revocation . . . . . . . . . . . . . . . . . . . . . . . 19
88 8. Determining the Root Zone and Zone Governance . . . . . . . . 21 88 8. Determining the Root Zone and Zone Governance . . . . . . . . 22
89 9. Security Considerations . . . . . . . . . . . . . . . . . . . 22 89 9. Security Considerations . . . . . . . . . . . . . . . . . . . 23
90 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 90 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23
91 11. Test Vectors . . . . . . . . . . . . . . . . . . . . . . . . 23 91 11. Test Vectors . . . . . . . . . . . . . . . . . . . . . . . . 24
92 12. Normative References . . . . . . . . . . . . . . . . . . . . 25 92 12. Normative References . . . . . . . . . . . . . . . . . . . . 26
93 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 93 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27
94 94
951. Introduction 951. Introduction
@@ -1073,6 +1073,16 @@ Internet-Draft The GNU Name System November 2019
1073 work. The revocation message including the proof-of-work MAY be 1073 work. The revocation message including the proof-of-work MAY be
1074 calculated ahead of time to support timely revocation. 1074 calculated ahead of time to support timely revocation.
1075 1075
1076 For all occurences below, "scrypt" is the scrypt Password-based Key
1077 Derivation Function as defined in [RFC7914] with the following
1078 parameters set:
1079
1080 S := "gnunet-revocation-proof-of-work" /* Salt */
1081 N := 2
1082 r := 8 /* Block size */
1083 p := 2 /* Parallelization parameter */
1084 dkLen := 64 /* Intended output length in octets */
1085
1076 The following the the basic data "REV" on which the proof-of work is 1086 The following the the basic data "REV" on which the proof-of work is
1077 calculated: 1087 calculated:
1078 1088
@@ -1096,12 +1106,30 @@ Internet-Draft The GNU Name System November 2019
1096 1106
1097 3. Encrypt the REV data using K and IV. 1107 3. Encrypt the REV data using K and IV.
1098 1108
1099 4. Derive the proof of work from the encrypted REV. 1109 4. Derive the proof of work from the encrypted REV and check against
1110 the proof condition.
1111
1112 The first step in the PoW is a call to scrypt with the REV data as
1113 password parameter to derive the initial key material K:
1100 1114
1101 K := scrypt (P := REV) 1115 K := scrypt (P := REV)
1102 1116
1117
1118
1119
1120Schanzenbach, et al. Expires 13 May 2020 [Page 20]
1121
1122Internet-Draft The GNU Name System November 2019
1123
1124
1103 Figure 16 1125 Figure 16
1104 1126
1127 The second step is to derive an initialization vector using a Hash-
1128 based Key Derivation Function as defined in ([RFC5869]).
1129 Specifically, HMAC-SHA512 is used for the extraction phase and HMAC-
1130 SHA256 for the expansion phase.
1131
1132 STATUS QUO:
1105 PRK_aes := HKDF-Extract ("gnunet-proof-of-work-ivAES!", 1133 PRK_aes := HKDF-Extract ("gnunet-proof-of-work-ivAES!",
1106 K[0,31]) 1134 K[0,31])
1107 PRK_two := HKDF-Extract ("gnunet-proof-of-work-ivFISH", 1135 PRK_two := HKDF-Extract ("gnunet-proof-of-work-ivFISH",
@@ -1112,36 +1140,43 @@ Internet-Draft The GNU Name System November 2019
1112 IV_two := HKDF-Expand (PRK_two, 1140 IV_two := HKDF-Expand (PRK_two,
1113 "gnunet-revocation-proof-of-work, 1141 "gnunet-revocation-proof-of-work,
1114 128 / 8) 1142 128 / 8)
1115 1143 ALTERNATIVE:
1116 Figure 17 1144 PRK := HKDF-Extract ("gnunet-proof-of-work-iv", K)
1145 IV := HKDF-Expand (PRK, "gnunet-revocation-proof-of-work", 128 / 8);
1117 1146
1118 1147
1148 Figure 17
1119 1149
1120Schanzenbach, et al. Expires 13 May 2020 [Page 20] 1150 We divide the resulting keying material "K" into a 256-bit AES
1121 1151 [RFC3826] key and a 256-bit TWOFISH [TWOFISH] key and use IV as
1122Internet-Draft The GNU Name System November 2019 1152 corresponding initialization vectors:
1123
1124 1153
1154 STATUS QUO:
1125 EREV := TWOFISH(K[0:31], IV_two, 1155 EREV := TWOFISH(K[0:31], IV_two,
1126 AES(K[32:63], IV_aes, REV)) 1156 AES(K[32:63], IV_aes, REV))
1157 ALTERNATIVE:
1158 EREV := TWOFISH(K[0:31], IV[16:31],
1159 AES(K[32:63], IV[0:15], REV))
1160
1127 1161
1128 Figure 18 1162 Figure 18
1129 1163
1130 The above EREV data object is calculated with different values for 1164 The above EREV data object is again derived using the scrypt
1131 the "NONCE" in "REV" until the following inequality holds: 1165 algorithm. The proof of work is complete, if the following
1166 inequality holds:
1132 1167
1133 scrypt(P := EREV) < 2^(39)-1 1168 scrypt(P := EREV) < 2^(39)-1
1134 1169
1170
1135 Figure 19 1171 Figure 19
1136 1172
1137 For all occurences above, "scrypt" is the scrypt algorithm as defined
1138 in [RFC7914] with the following parameters set:
1139 1173
1140 S := "gnunet-revocation-proof-of-work" /* Salt */ 1174
1141 N := 2 1175
1142 r := 8 /* Block size */ 1176Schanzenbach, et al. Expires 13 May 2020 [Page 21]
1143 p := 2 /* Parallelization parameter */ 1177
1144 dkLen := 64 /* Intended output length in octets */ 1178Internet-Draft The GNU Name System November 2019
1179
1145 1180
11468. Determining the Root Zone and Zone Governance 11818. Determining the Root Zone and Zone Governance
1147 1182
@@ -1169,15 +1204,6 @@ Internet-Draft The GNU Name System November 2019
1169 1204
1170 GNS clients SHOULD first try to interpret the top-level domain of a 1205 GNS clients SHOULD first try to interpret the top-level domain of a
1171 GNS name as a zone key. For example. if the top-level domain is a 1206 GNS name as a zone key. For example. if the top-level domain is a
1172
1173
1174
1175
1176Schanzenbach, et al. Expires 13 May 2020 [Page 21]
1177
1178Internet-Draft The GNU Name System November 2019
1179
1180
1181 Base32-encoded public zone key "zk", the root zone of the resolution 1207 Base32-encoded public zone key "zk", the root zone of the resolution
1182 process is implicitly given by the name: 1208 process is implicitly given by the name:
1183 1209
@@ -1200,6 +1226,14 @@ Internet-Draft The GNU Name System November 2019
1200 => Entry zone: zk1 1226 => Entry zone: zk1
1201 => Name to resolve from entry zone: www.example 1227 => Name to resolve from entry zone: www.example
1202 1228
1229
1230
1231
1232Schanzenbach, et al. Expires 13 May 2020 [Page 22]
1233
1234Internet-Draft The GNU Name System November 2019
1235
1236
1203 Finally, additional "suffix to zone" mappings MAY be configured. 1237 Finally, additional "suffix to zone" mappings MAY be configured.
1204 Suffix to zone key mappings SHOULD be configurable through a local 1238 Suffix to zone key mappings SHOULD be configurable through a local
1205 configuration file or database by the user or system administrator. 1239 configuration file or database by the user or system administrator.
@@ -1223,17 +1257,6 @@ Internet-Draft The GNU Name System November 2019
1223 1257
1224 TODO 1258 TODO
1225 1259
1226
1227
1228
1229
1230
1231
1232Schanzenbach, et al. Expires 13 May 2020 [Page 22]
1233
1234Internet-Draft The GNU Name System November 2019
1235
1236
123710. IANA Considerations 126010. IANA Considerations
1238 1261
1239 IANA is requested to create an "GNU Name System Record Type" 1262 IANA is requested to create an "GNU Name System Record Type"
@@ -1254,6 +1277,19 @@ Internet-Draft The GNU Name System November 2019
1254 Served", as described in [RFC8126]. IANA is requested to populate 1277 Served", as described in [RFC8126]. IANA is requested to populate
1255 this registry as follows: 1278 this registry as follows:
1256 1279
1280
1281
1282
1283
1284
1285
1286
1287
1288Schanzenbach, et al. Expires 13 May 2020 [Page 23]
1289
1290Internet-Draft The GNU Name System November 2019
1291
1292
1257 Number | Type | Contact | References 1293 Number | Type | Contact | References
1258 ---------+-----------------+---------+--------- 1294 ---------+-----------------+---------+---------
1259 65536 | PKEY | N/A | [This.I-D] 1295 65536 | PKEY | N/A | [This.I-D]
@@ -1282,14 +1318,6 @@ Internet-Draft The GNU Name System November 2019
1282 zk (public zone key) := 1318 zk (public zone key) :=
1283 dff911496d025d7e 1319 dff911496d025d7e
1284 0885c03d19153e99 1320 0885c03d19153e99
1285
1286
1287
1288Schanzenbach, et al. Expires 13 May 2020 [Page 23]
1289
1290Internet-Draft The GNU Name System November 2019
1291
1292
1293 4f213f23ea719eca 1321 4f213f23ea719eca
1294 17fc32dc410e082e 1322 17fc32dc410e082e
1295 1323
@@ -1310,6 +1338,14 @@ Internet-Draft The GNU Name System November 2019
1310 0017c802f7d32e18 1338 0017c802f7d32e18
1311 1339
1312 q (query key) := 1340 q (query key) :=
1341
1342
1343
1344Schanzenbach, et al. Expires 13 May 2020 [Page 24]
1345
1346Internet-Draft The GNU Name System November 2019
1347
1348
1313 6fce4deddc5ad681 1349 6fce4deddc5ad681
1314 f4e29a3310767e3b 1350 f4e29a3310767e3b
1315 8b38bc1b276ce2ba 1351 8b38bc1b276ce2ba
@@ -1339,13 +1375,6 @@ Internet-Draft The GNU Name System November 2019
1339 071be189a9d236f9 1375 071be189a9d236f9
1340 b4a3654bb8c281d4 1376 b4a3654bb8c281d4
1341 1377
1342
1343
1344Schanzenbach, et al. Expires 13 May 2020 [Page 24]
1345
1346Internet-Draft The GNU Name System November 2019
1347
1348
1349 RDATA := 1378 RDATA :=
1350 0000000100059412 RR COUNT | EXPIRA- 1379 0000000100059412 RR COUNT | EXPIRA-
1351 09ddea0f00000014 -TION | DATA SIZE (20) 1380 09ddea0f00000014 -TION | DATA SIZE (20)
@@ -1365,6 +1394,14 @@ Internet-Draft The GNU Name System November 2019
1365 afc99ba9c5a3bb54 1394 afc99ba9c5a3bb54
1366 07e731a34680ee33 1395 07e731a34680ee33
1367 ae0de7bfeda7d2b7 1396 ae0de7bfeda7d2b7
1397
1398
1399
1400Schanzenbach, et al. Expires 13 May 2020 [Page 25]
1401
1402Internet-Draft The GNU Name System November 2019
1403
1404
1368 8c6b854a008b1b54 1405 8c6b854a008b1b54
1369 10df4f39f5ba9f46____________ 1406 10df4f39f5ba9f46____________
1370 8cb514a56c0eaae0 zk_h 1407 8cb514a56c0eaae0 zk_h
@@ -1393,15 +1430,6 @@ Internet-Draft The GNU Name System November 2019
1393 specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, 1430 specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
1394 November 1987, <https://www.rfc-editor.org/info/rfc1035>. 1431 November 1987, <https://www.rfc-editor.org/info/rfc1035>.
1395 1432
1396
1397
1398
1399
1400Schanzenbach, et al. Expires 13 May 2020 [Page 25]
1401
1402Internet-Draft The GNU Name System November 2019
1403
1404
1405 [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for 1433 [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for
1406 specifying the location of services (DNS SRV)", RFC 2782, 1434 specifying the location of services (DNS SRV)", RFC 2782,
1407 DOI 10.17487/RFC2782, February 2000, 1435 DOI 10.17487/RFC2782, February 2000,
@@ -1422,6 +1450,14 @@ Internet-Draft The GNU Name System November 2019
1422 DOI 10.17487/RFC3826, June 2004, 1450 DOI 10.17487/RFC3826, June 2004,
1423 <https://www.rfc-editor.org/info/rfc3826>. 1451 <https://www.rfc-editor.org/info/rfc3826>.
1424 1452
1453
1454
1455
1456Schanzenbach, et al. Expires 13 May 2020 [Page 26]
1457
1458Internet-Draft The GNU Name System November 2019
1459
1460
1425 [RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand 1461 [RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand
1426 Key Derivation Function (HKDF)", RFC 5869, 1462 Key Derivation Function (HKDF)", RFC 5869,
1427 DOI 10.17487/RFC5869, May 2010, 1463 DOI 10.17487/RFC5869, May 2010,
@@ -1450,14 +1486,6 @@ Internet-Draft The GNU Name System November 2019
1450 for Security", RFC 7748, DOI 10.17487/RFC7748, January 1486 for Security", RFC 7748, DOI 10.17487/RFC7748, January
1451 2016, <https://www.rfc-editor.org/info/rfc7748>. 1487 2016, <https://www.rfc-editor.org/info/rfc7748>.
1452 1488
1453
1454
1455
1456Schanzenbach, et al. Expires 13 May 2020 [Page 26]
1457
1458Internet-Draft The GNU Name System November 2019
1459
1460
1461 [RFC8032] Josefsson, S. and I. Liusvaara, "Edwards-Curve Digital 1489 [RFC8032] Josefsson, S. and I. Liusvaara, "Edwards-Curve Digital
1462 Signature Algorithm (EdDSA)", RFC 8032, 1490 Signature Algorithm (EdDSA)", RFC 8032,
1463 DOI 10.17487/RFC8032, January 2017, 1491 DOI 10.17487/RFC8032, January 2017,
@@ -1477,6 +1505,15 @@ Internet-Draft The GNU Name System November 2019
1477 1505
1478Authors' Addresses 1506Authors' Addresses
1479 1507
1508
1509
1510
1511
1512Schanzenbach, et al. Expires 13 May 2020 [Page 27]
1513
1514Internet-Draft The GNU Name System November 2019
1515
1516
1480 Martin Schanzenbach 1517 Martin Schanzenbach
1481 GNUnet e.V. 1518 GNUnet e.V.
1482 Boltzmannstrasse 3 1519 Boltzmannstrasse 3
@@ -1509,4 +1546,23 @@ Authors' Addresses
1509 1546
1510 1547
1511 1548
1512Schanzenbach, et al. Expires 13 May 2020 [Page 27] 1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568Schanzenbach, et al. Expires 13 May 2020 [Page 28]