1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677
|
<pre>Network Working Group T. Clancy
Request for Comments: 4746 LTS
Category: Informational W. Arbaugh
UMD
November 2006
<span class="h1">Extensible Authentication Protocol (EAP)</span>
<span class="h1">Password Authenticated Exchange</span>
Status of This Memo
This memo provides information for the Internet community. It does
not specify an Internet standard of any kind. Distribution of this
memo is unlimited.
Copyright Notice
Copyright (C) The IETF Trust (2006).
Copyright Notice
Copyright (C) The Internet Society (2006).
Abstract
This document defines an Extensible Authentication Protocol (EAP)
method called EAP-PAX (Password Authenticated eXchange). This method
is a lightweight shared-key authentication protocol with optional
support for key provisioning, key management, identity protection,
and authenticated data exchange.
Table of Contents
<a href="#section-1">1</a>. Introduction ....................................................<a href="#page-2">2</a>
<a href="#section-1.1">1.1</a>. Language Requirements ......................................<a href="#page-3">3</a>
<a href="#section-1.2">1.2</a>. Terminology ................................................<a href="#page-3">3</a>
<a href="#section-2">2</a>. Overview ........................................................<a href="#page-5">5</a>
<a href="#section-2.1">2.1</a>. PAX_STD Protocol ...........................................<a href="#page-6">6</a>
<a href="#section-2.2">2.2</a>. PAX_SEC Protocol ...........................................<a href="#page-7">7</a>
<a href="#section-2.3">2.3</a>. Authenticated Data Exchange ................................<a href="#page-9">9</a>
<a href="#section-2.4">2.4</a>. Key Derivation ............................................<a href="#page-10">10</a>
<a href="#section-2.5">2.5</a>. Verification Requirements .................................<a href="#page-11">11</a>
<a href="#section-2.6">2.6</a>. PAX Key Derivation Function ...............................<a href="#page-12">12</a>
<a href="#section-3">3</a>. Protocol Specification .........................................<a href="#page-13">13</a>
<a href="#section-3.1">3.1</a>. Header Specification ......................................<a href="#page-13">13</a>
<a href="#section-3.1.1">3.1.1</a>. Op-Code ............................................<a href="#page-13">13</a>
<a href="#section-3.1.2">3.1.2</a>. Flags ..............................................<a href="#page-14">14</a>
<span class="grey">Clancy & Arbaugh Informational [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
<a href="#section-3.1.3">3.1.3</a>. MAC ID .............................................<a href="#page-14">14</a>
<a href="#section-3.1.4">3.1.4</a>. DH Group ID ........................................<a href="#page-14">14</a>
<a href="#section-3.1.5">3.1.5</a>. Public Key ID ......................................<a href="#page-15">15</a>
<a href="#section-3.1.6">3.1.6</a>. Mandatory to Implement .............................<a href="#page-15">15</a>
<a href="#section-3.2">3.2</a>. Payload Formatting ........................................<a href="#page-16">16</a>
<a href="#section-3.3">3.3</a>. Authenticated Data Exchange (ADE) .........................<a href="#page-18">18</a>
<a href="#section-3.4">3.4</a>. Integrity Check Value (ICV) ...............................<a href="#page-19">19</a>
<a href="#section-4">4</a>. Security Considerations ........................................<a href="#page-19">19</a>
<a href="#section-4.1">4.1</a>. Server Certificates .......................................<a href="#page-20">20</a>
<a href="#section-4.2">4.2</a>. Server Security ...........................................<a href="#page-20">20</a>
<a href="#section-4.3">4.3</a>. EAP Security Claims .......................................<a href="#page-21">21</a>
<a href="#section-4.3.1">4.3.1</a>. Protected Ciphersuite Negotiation ..................<a href="#page-21">21</a>
<a href="#section-4.3.2">4.3.2</a>. Mutual Authentication ..............................<a href="#page-21">21</a>
<a href="#section-4.3.3">4.3.3</a>. Integrity Protection ...............................<a href="#page-21">21</a>
<a href="#section-4.3.4">4.3.4</a>. Replay Protection ..................................<a href="#page-21">21</a>
<a href="#section-4.3.5">4.3.5</a>. Confidentiality ....................................<a href="#page-21">21</a>
<a href="#section-4.3.6">4.3.6</a>. Key Derivation .....................................<a href="#page-21">21</a>
<a href="#section-4.3.7">4.3.7</a>. Key Strength .......................................<a href="#page-22">22</a>
<a href="#section-4.3.8">4.3.8</a>. Dictionary Attack Resistance .......................<a href="#page-22">22</a>
<a href="#section-4.3.9">4.3.9</a>. Fast Reconnect .....................................<a href="#page-22">22</a>
<a href="#section-4.3.10">4.3.10</a>. Session Independence ..............................<a href="#page-22">22</a>
<a href="#section-4.3.11">4.3.11</a>. Fragmentation .....................................<a href="#page-23">23</a>
<a href="#section-4.3.12">4.3.12</a>. Channel Binding ...................................<a href="#page-23">23</a>
<a href="#section-4.3.13">4.3.13</a>. Cryptographic Binding .............................<a href="#page-23">23</a>
<a href="#section-4.3.14">4.3.14</a>. Negotiation Attack Prevention .....................<a href="#page-23">23</a>
<a href="#section-5">5</a>. IANA Considerations ............................................<a href="#page-23">23</a>
<a href="#section-6">6</a>. Acknowledgments ................................................<a href="#page-24">24</a>
<a href="#section-7">7</a>. References .....................................................<a href="#page-24">24</a>
<a href="#section-7.1">7.1</a>. Normative References ......................................<a href="#page-24">24</a>
<a href="#section-7.2">7.2</a>. Informative References ....................................<a href="#page-25">25</a>
<a href="#appendix-A">Appendix A</a>. Key Generation from Passwords ........................ <a href="#page-27">27</a>
<a href="#appendix-B">Appendix B</a>. Implementation Suggestions ........................... <a href="#page-27">27</a>
<a href="#appendix-B.1">B.1</a>. WiFi Enterprise Network ................................... <a href="#page-27">27</a>
<a href="#appendix-B.2">B.2</a>. Mobile Phone Network ...................................... <a href="#page-28">28</a>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
EAP-PAX (Password Authenticated eXchange) is an Extensible
Authentication Protocol (EAP) method [<a href="./rfc3748" title=""Extensible Authentication Protocol (EAP)"">RFC3748</a>] designed for
authentication using a shared key. It makes use of two separate
subprotocols, PAX_STD and PAX_SEC. PAX_STD is a simple, lightweight
protocol for mutual authentication using a shared key, supporting
Authenticated Data Exchange (ADE). PAX_SEC complements PAX_STD by
providing support for shared-key provisioning and identity protection
using a server-side public key.
<span class="grey">Clancy & Arbaugh Informational [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
The idea motivating EAP-PAX is a desire for device authentication
bootstrapped by a simple Personal Identification Number (PIN). If a
weak key is used or a expiration period has elapsed, the
authentication server forces a key update. Rather than using a
symmetric key exchange, the client and server perform a Diffie-
Hellman key exchange, which provides forward secrecy.
Since implementing a Public Key Infrastructure (PKI) can be
cumbersome, PAX_SEC defines multiple client security policies,
selectable based on one's threat model. In the weakest mode, PAX_SEC
allows the use of raw public keys completely eliminating the need for
a PKI. In the strongest mode, PAX_SEC requires that EAP servers use
certificates signed by a trusted Certification Authority (CA). In
the weaker modes, during provisioning PAX_SEC is vulnerable to a
man-in-the-middle dictionary attack. In the strongest mode, EAP-PAX
is provably secure under the Random Oracle model.
EAP-PAX supports the generation of strong key material; mutual
authentication; resistance to desynchronization, dictionary, and
man-in-the-middle attacks; ciphersuite extensibility with protected
negotiation; identity protection; and the authenticated exchange of
data, useful for implementing channel binding. These features
satisfy the EAP method requirements for wireless LANs [<a href="./rfc4017" title=""Extensible Authentication Protocol (EAP) Method Requirements for Wireless LANs"">RFC4017</a>],
making EAP-PAX ideal for wireless environments such as IEEE 802.11
[<a href="#ref-IEEE.80211" title=""Information technology - Telecommunications and information exchange between systems - Local and metropolitan area networks - Specific Requirements Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications"">IEEE.80211</a>].
<span class="h3"><a class="selflink" id="section-1.1" href="#section-1.1">1.1</a>. Language Requirements</span>
In this document, several words are used to signify the requirements
of the specification. The key words "MUST", "MUST NOT", "REQUIRED",
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
and "OPTIONAL" in this document are to be interpreted as described in
[<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirement Levels"">RFC2119</a>].
<span class="h3"><a class="selflink" id="section-1.2" href="#section-1.2">1.2</a>. Terminology</span>
This section describes the various variables and functions used in
the EAP-PAX protocol. They will be referenced frequently in later
sections.
Variables:
CID
User-supplied client ID, specified as a Network Access Identifier
(NAI) [<a href="./rfc4282" title=""The Network Access Identifier"">RFC4282</a>], restricted to 65535 octets
g
public Diffie-Hellman generator, typically the integer 2 [<a href="./rfc2631" title=""Diffie-Hellman Key Agreement Method"">RFC2631</a>]
<span class="grey">Clancy & Arbaugh Informational [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
M
128-bit random integer generated by the server
N
128-bit random integer generated by the client
X
256-bit random integer generated by the server
Y
256-bit random integer generated by the client
Keys:
AK
authentication key shared between the client and EAP server
AK'
new authentication key generated during a key update
CertPK
EAP server's certificate containing public key PK
CK
Confirmation Key generated from the MK and used during
authentication to prove knowledge of AK
EMSK
Extended Master Session Key also generated from the MK and
containing additional keying material
IV
Initialization Vector used to seed ciphers; exported to the
authenticator
MID
Method ID used to construct the EAP Session ID and consequently
name all the exported keys [<a href="#ref-IETF.KEY" title=""Extensible Authentication Protocol (EAP) Key Management Framework"">IETF.KEY</a>]
MK
Master Key between the client and EAP server from which all other
EAP method session keys are derived
MSK
Master Session Key generated from the MK and exported by the EAP
method to the authenticator
<span class="grey">Clancy & Arbaugh Informational [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
PK
EAP server's public key
Operations:
enc_X(Y)
encryption of message Y with public key X
MAC_X(Y)
keyed message authentication code computed over message Y with
symmetric key X
PAX-KDF-W(X, Y, Z)
PAX Key Derivation Function computed using secret X, identifier Y,
and seed Z, and producing W octets of output
||
string or binary data concatenation
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Overview</span>
The EAP framework [<a href="./rfc3748" title=""Extensible Authentication Protocol (EAP)"">RFC3748</a>] defines four basic steps that occur
during the execution of an EAP conversation between client and
server. The first phase, discovery, is handled by the underlying
link-layer protocol. The authentication phase is defined here. The
key distribution and secure association phases are handled
differently depending on the underlying protocol, and are not
discussed in this document.
+--------+ +--------+
| | EAP-Request/Identity | |
| CLIENT |<------------------------------------| SERVER |
| | | |
| | EAP-Response/Identity | |
| |------------------------------------>| |
| | | |
| | EAP-PAX (STD or SEC) | |
| |<----------------------------------->| |
| | ... ... | |
| |<----------------------------------->| |
| | | |
| | EAP-Success or EAP-Failure | |
| |<------------------------------------| |
+--------+ +--------+
Figure 1: EAP-PAX Packet Exchanges
<span class="grey">Clancy & Arbaugh Informational [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
There are two distinct subprotocols that can be executed. The first,
PAX_STD, is used during typical authentications. The second,
PAX_SEC, provides more secure features such as key provisioning and
identity protection.
PAX_STD and PAX_SEC have two modes of operation. When an AK update
is being performed, the client and server exchange Diffie-Hellman
exponents g^X and g^Y, which are computed modulo prime P or over an
elliptic curve multiplicative group. When no update is being
performed, and only session keys are being derived, X and Y are
exchanged. Using Diffie-Hellman during the key update provides
forward secrecy, and secure key derivation when a weak provisioned
key is used.
The main deployment difference between PAX_STD and PAX_SEC is that
PAX_SEC requires a server-side public key. More specifically, that
means a private key known only to the server with corresponding
public key being transmitted to the client during each PAX_SEC
session. For every authentication, the client is required to compute
computationally intensive public-key operations. PAX_STD, on the
other hand, uses purely symmetric operations, other than a possible
Diffie-Hellman exchange.
Each of the protocols is now defined.
<span class="h3"><a class="selflink" id="section-2.1" href="#section-2.1">2.1</a>. PAX_STD Protocol</span>
PAX_STD is a simple nonce-based authentication using the strong
long-term key. The client and server each exchange 256 bits of
random data, which is used to seed the PAX-KDF for generation of
session keys. The randomly exchanged data in the protocol differs
depending on whether a key update is being performed. If no key
update is being performed, then let:
o A = X
o B = Y
o E = X || Y
Thus, A and B are 256-bit values and E is their 512-bit
concatenation. To provide forward secrecy and security, let the
following be true when a key update is being performed:
o A = g^X
o B = g^Y
o E = g^(XY)
Here A and B are Diffie-Hellman exponents whose length is determined
by the Diffie-Hellman group size. The value A is data transmitted
<span class="grey">Clancy & Arbaugh Informational [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
from the server to the client, and B is data transmitted from the
client to the server. The value E is the entropy computed by each
that is used in <a href="#section-2.4">Section 2.4</a> to perform key derivation.
The full protocol is as follows:
o PAX_STD-1 : client <- server : A
o PAX_STD-2 : client -> server : B, CID, MAC_CK(A, B, CID),
[optional ADE]
o PAX_STD-3 : client <- server : MAC_CK(B, CID), [optional ADE]
o PAX-ACK : client -> server : [optional ADE]
See <a href="#section-2.3">Section 2.3</a> for more information on the ADE component, and
<a href="#section-2.4">Section 2.4</a> for the key derivation process, including derivation of
CK.
<span class="h3"><a class="selflink" id="section-2.2" href="#section-2.2">2.2</a>. PAX_SEC Protocol</span>
PAX_SEC is the high-security protocol designed to provide identity
protection and support for provisioning. PAX_SEC requires a server-
side public key, and public-key operations for every authentication.
PAX_SEC can be performed with and without key update. Let A, B, and
E be defined as in the previous section.
The exchanges for PAX_SEC are as follows:
o PAX_SEC-1 : client <- server : M, PK or CertPK
o PAX_SEC-2 : client -> server : Enc_PK(M, N, CID)
o PAX_SEC-3 : client <- server : A, MAC_N(A, CID)
o PAX_SEC-4 : client -> server : B, MAC_CK(A, B, CID), [optional
ADE]
o PAX_SEC-5 : client <- server : MAC_CK(B, CID), [optional ADE]
o PAX-ACK : client -> server : [optional ADE]
See <a href="#section-2.3">Section 2.3</a> for more information on the ADE component, and
<a href="#section-2.4">Section 2.4</a> for the key derivation process, including derivation of
CK.
Use of CertPK is optional in PAX_SEC; however, careful consideration
should be given before omitting the CertPK. The following table
describes the risks involved when using PAX_SEC without a
certificate.
<span class="grey">Clancy & Arbaugh Informational [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
Certificate | Provisioning | Identity
Mode | | Protection
==================+=====================+======================
No Certificate | MiTM offline | ID reveal attack
| dictionary attack |
------------------+---------------------+---------------------
Self-Signed | MiTM offline | ID reveal attack
Certificate | dictionary attack |
------------------+---------------------+---------------------
Certificate/PK | MiTM offline | ID reveal attack
Caching | dictionary attack | during first auth
------------------+---------------------+---------------------
CA-Signed | secure mutual | secure mutual
Certificate | authentication | authentication
Figure 2: Table of Different Security Modes
When using PAX_SEC to support provisioning with a weak key, use of a
CA-signed certificate is RECOMMENDED. When not using a CA-signed
certificate, the initial authentication is vulnerable to an offline
man-in-the-middle (MiTM) dictionary attack.
When using PAX_SEC to support identity protection, use of either a
CA-signed certificate or key caching is RECOMMENDED. Caching
involves a client recording the public key of the EAP server and
verifying its consistency between sessions, similar to Secure SHell
(SSH) Protocol [<a href="./rfc4252" title=""The Secure Shell (SSH) Authentication Protocol"">RFC4252</a>]. Otherwise, an attacker can spoof an EAP
server during a session and gain knowledge of a client's identity.
Whenever certificates are used, clients MUST validate that the
certificate's extended key usage, KeyPurposeID, is either
"eapOverPPP" or "eapOverLAN" [<a href="./rfc3280" title=""Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile"">RFC3280</a>][RFC4334]. If the underlying
EAP transport protocol is known, then the client MUST differentiate
between these values. For example, an IEEE 802.11 supplicant SHOULD
require KeyPurposeID == eapOverLAN. By not distinguishing, a client
could accept as valid an unauthorized server certificate.
When using EAP-PAX with Wireless LAN, clients SHOULD validate that
the certificate's wlanSSID extension matches the SSID of the network
to which it is currently authenticating.
In order to facilitate discussion of packet validations, three client
security policies for PAX_SEC are defined.
open
Clients support both use of PK and CertPK. If CertPK is used, the
client MUST validate the KeyPurposeID.
<span class="grey">Clancy & Arbaugh Informational [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
caching
Clients save PK for each EAP server the first time it encounters
the server, and SHOULD NOT authenticate to EAP servers whose
public key has been changed. If CertPK is used, the client MUST
validate the KeyPurposeID.
strict
In strict mode, clients require servers to present a valid
certificate signed by a trusted CA. As with the other modes, the
KeyPurposeID MUST be validated.
Servers SHOULD support the PAX_SEC mode of operation, and SHOULD
support both the use of PK and CertPK with PAX_SEC. Clients MUST
support PAX_SEC, and MUST be capable of accepting both raw public
keys and certificates from the server. Local security policy will
define which forms of key or certificate authentications are
permissible. Default configurations SHOULD require a minimum of the
caching security policy, and MAY require strict.
The ability to perform key management on the AK is built in to EAP-
PAX through the use of AK'. However, key management of the server
public key is beyond the scope of this document. If self-signed
certificates are used, the deployers should be aware that expired
certificates may be difficult to replace when the caching security
mode is used.
See <a href="#section-4">Section 4</a> for further discussion on security considerations.
<span class="h3"><a class="selflink" id="section-2.3" href="#section-2.3">2.3</a>. Authenticated Data Exchange</span>
Messages PAX_STD-2, PAX_STD-3, PAX_SEC-4, PAX_SEC-5, and PAX_ACK
contain optional component ADE. This component is used to convey
authenticated data between the client and server during the
authentication.
The Authenticated Data Exchanged (ADE) can be used in a variety of
ways, including the implementation of channel bindings. Channel
bindings allow link-layer network properties to be securely validated
by the EAP client and server during the authentication session.
It is important to note that ADE is not encrypted, so any data
included will not be confidential. However, since these packets are
all protected by the Integrity Check Value (ICV), authenticity is
guaranteed.
<span class="grey">Clancy & Arbaugh Informational [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
The ADE element consists of an arbitrary number of subelements, each
with length and type specified. If the number and size of
subelements is too large, packet fragmentation will be necessary.
Vendor-specific options are supported. See <a href="#section-3.3">Section 3.3</a>.
Note that more than 1.5 round-trips may be necessary to execute a
particular authenticated protocol within EAP-PAX. In this case,
instead of sending an EAP-Success after receiving the PAX_ACK, the
server can continue sending PAX_ACK messages with attached elements.
The client responds to these PAX_ACK messages with PAX_ACK messages
possibly containing more ADE elements. Such an execution could look
something like the following:
+--------+ +--------+
| | PAX_STD-1 | |
| |<------------------------------------| |
| | PAX_STD-2(ADE[1]) | |
| |------------------------------------>| |
| | PAX_STD-3(ADE[2]) | |
| |<------------------------------------| |
| | PAX_ACK(ADE[3]) | |
| |------------------------------------>| |
| | PAX_ACK(ADE[4]) | |
| |<------------------------------------| |
| | | |
| | ... | |
| | | |
| | PAX_ACK(ADE[i]) | |
| |------------------------------------>| |
| | PAX_ACK(ADE[i+1]) | |
| |<------------------------------------| |
| | | |
| | ... | |
| | | |
| | EAP-Success or EAP-Failure | |
| |<------------------------------------| |
+--------+ +--------+
Figure 3: Extended Diagram of EAP-PAX Packet Exchanges
<span class="h3"><a class="selflink" id="section-2.4" href="#section-2.4">2.4</a>. Key Derivation</span>
Keys are derived independently of which authentication mechanism was
used. The process uses the entropy value E computed as described
above. Session and authentication keys are computed as follows:
o AK' = PAX-KDF-16(AK, "Authentication Key", E)
o MK = PAX-KDF-16(AK, "Master Key", E)
<span class="grey">Clancy & Arbaugh Informational [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
o CK = PAX-KDF-16(MK, "Confirmation Key", E)
o ICK = PAX-KDF-16(MK, "Integrity Check Key", E)
o MID = PAX-KDF-16(MK, "Method ID", E)
o MSK = PAX-KDF-64(MK, "Master Session Key", E)
o EMSK = PAX-KDF-64(MK, "Extended Master Session Key", E)
o IV = PAX-KDF-64(0x00^16, "Initialization Vector", E)
The IV is computed using a 16-octet NULL key. The value of AK' is
only used to replace AK if a key update is being performed. The EAP
Method ID is represented in ASCII as 32 hexadecimal characters
without any octet delimiters such as colons or dashes.
The EAP Key Management Framework [<a href="#ref-IETF.KEY" title=""Extensible Authentication Protocol (EAP) Key Management Framework"">IETF.KEY</a>] recommends specification
of key names and scope. The EAP-PAX Method-ID is the MID value
computed as described above. The EAP peer name is the CID value
exchanged in PAX_STD-2 and PAX_SEC-2. The EAP server name is an
empty string.
<span class="h3"><a class="selflink" id="section-2.5" href="#section-2.5">2.5</a>. Verification Requirements</span>
In order for EAP-PAX to be secure, MACs must be properly verified
each step of the way. Any packet with an ICV (see <a href="#section-3.4">Section 3.4</a>) that
fails validation must be silently discarded. After ICV validation,
the following checks must be performed:
PAX_STD-2
The server MUST validate the included MAC, as it serves to
authenticate the client to the server. If this validation fails,
the server MUST send an EAP-Failure message.
PAX_STD-3
The client MUST validate the included MAC, as it serves to
authenticate the server to the client. If this validation fails,
the client MUST send an EAP-Failure message.
PAX_SEC-1
The client MUST validate PK or CertPK in a manner specified by its
local security policy (see <a href="#section-2.2">Section 2.2</a>). If this validation
fails, the client MUST send an EAP-Failure message.
PAX_SEC-2
The server MUST verify that the decrypted value of M matches the
value transmitted in PAX_SEC-1. If this validation fails, the
server MUST send an EAP-Failure message.
<span class="grey">Clancy & Arbaugh Informational [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
PAX_SEC-3
The client MUST validate the included MAC, as it serves to prevent
replay attacks. If this validation fails, the client MUST send an
EAP-Failure message.
PAX_SEC-4
The server MUST validate the included MAC, as it serves to
authenticate the client to the server. If this validation fails,
the server MUST send an EAP-Failure message.
PAX_SEC-5
The client MUST validate the included MAC, as it serves to
authenticate the server to the client. If this validation fails,
the client MUST send an EAP-Failure message.
PAX-ACK
If PAX-ACK is received in response to a message fragment, the
receiver continues the protocol execution. If PAX-ACK is received
in response to PAX_STD-3 or PAX_SEC-5, then the server MUST send
an EAP-Success message. This indicates a successful execution of
PAX.
<span class="h3"><a class="selflink" id="section-2.6" href="#section-2.6">2.6</a>. PAX Key Derivation Function</span>
The PAX-KDF is a secure key derivation function used to generate
various keys from the provided entropy and shared key.
PAX-KDF-W(X, Y, Z)
W length, in octets, of the desired output
X secret key used to protect the computation
Y public identifier for the key being derived
Z exchanged entropy used to seed the KDF
Let's define some variables and functions:
o M_i = MAC_X(Y || Z || i), where i is an 8-bit unsigned integer
o L = ceiling(W/16)
o F(A, B) = first A octets of binary data B
We define PAX-KDF-W(X, Y, Z) = F(W, M_1 || M_2 || ... || M_L).
Consequently for the two values of W used in this document, we have:
o PAX-KDF-16(X, Y, Z) = MAC_X(Y || Z || 0x01)
o PAX-KDF-64(X, Y, Z) = MAC_X(Y || Z || 0x01) || MAC_X(Y || Z ||
0x02) || MAC_X(Y || Z || 0x03) || MAC_X(Y || Z || 0x04)
<span class="grey">Clancy & Arbaugh Informational [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
The MAC used in the PRF is extensible and is the same MAC used in the
rest of the protocol. It is specified in the EAP-PAX header.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Protocol Specification</span>
In this section, the packet format and content for the EAP-PAX
messages are defined.
EAP-PAX packets have the following structure:
--- bit offset --->
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Code | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | OP-Code | Flags | MAC ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DH Group ID | Public Key ID | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
... Payload ...
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
... ICV ...
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4: EAP-PAX Packet Structure
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. Header Specification</span>
The Code, Identifier, Length, and Type fields are all part of the EAP
header, and defined in [<a href="./rfc3748" title=""Extensible Authentication Protocol (EAP)"">RFC3748</a>]. IANA has allocated EAP Method Type
46 for EAP-PAX; thus, the Type field in the EAP header MUST be 46.
<span class="h4"><a class="selflink" id="section-3.1.1" href="#section-3.1.1">3.1.1</a>. Op-Code</span>
The OP-Code field is one of the following values:
o 0x01 : PAX_STD-1
o 0x02 : PAX_STD-2
o 0x03 : PAX_STD-3
o 0x11 : PAX_SEC-1
o 0x12 : PAX_SEC-2
o 0x13 : PAX_SEC-3
o 0x14 : PAX_SEC-4
<span class="grey">Clancy & Arbaugh Informational [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
o 0x15 : PAX_SEC-5
o 0x21 : PAX-ACK
<span class="h4"><a class="selflink" id="section-3.1.2" href="#section-3.1.2">3.1.2</a>. Flags</span>
The flags field is broken up into 8 bits each representing a binary
flag. The field is defined as the Logical OR of the following
values:
o 0x01 : more fragments (MF)
o 0x02 : certificate enabled (CE)
o 0x04 : ADE Included (AI)
o 0x08 - 0x80 : reserved
The MF flag is set if the current packet required fragmentation, and
further fragments need to be transmitted. If a packet does not
require fragmentation, the MF flag is not set.
When a payload requires fragmentation, each fragment is transmitted,
and the receiving party responds with a PAX-ACK packet for each
received fragment.
When using PAX_STD, the CE flag MUST be zero. When using PAX_SEC,
the CE flag MUST be set if PAX_SEC-1 includes CertPK. It MUST NOT be
set if PAX_SEC-1 includes PK. If CE is set in PAX_SEC-1, it MUST be
set in PAX_SEC-2, PAX_SEC-3, PAX_SEC-4, and PAX_SEC-5. If either
party detects an inconsistent value of the CE flag, he MUST send an
EAP-Failure message and discontinue the session.
The AI flag indicates the presence of an ADE element. AI MUST only
be set on packets PAX_STD-2, PAX_STD-3, PAX_SEC-4, PAX_SEC-5, and
PAX_ACK if an ADE element is included. On packets of other types,
ADE elements MUST be silently discarded as they cannot be
authenticated.
<span class="h4"><a class="selflink" id="section-3.1.3" href="#section-3.1.3">3.1.3</a>. MAC ID</span>
The MAC field specifies the cryptographic hash used to generate the
keyed hash value. The following are currently supported:
o 0x01 : HMAC_SHA1_128 [<a href="#ref-FIPS198" title=""The Keyed-Hash Message Authentication Code (HMAC)"">FIPS198</a>] [<a href="#ref-FIPS180" title=""Secure Hash Standard"">FIPS180</a>]
o 0x02 : HMAC_SHA256_128 [<a href="#ref-FIPS180" title=""Secure Hash Standard"">FIPS180</a>]
<span class="h4"><a class="selflink" id="section-3.1.4" href="#section-3.1.4">3.1.4</a>. DH Group ID</span>
The Diffie-Hellman group field specifies the group used in the
Diffie-Hellman computations. The following are currently supported:
<span class="grey">Clancy & Arbaugh Informational [Page 14]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-15" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
o 0x00 : NONE (iff not performing a key update)
o 0x01 : 2048-bit MODP Group (IANA DH Group 14) [<a href="./rfc3526" title=""More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)"">RFC3526</a>]
o 0x02 : 3072-bit MODP Group (IANA DH Group 15) [<a href="./rfc3526" title=""More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)"">RFC3526</a>]
o 0x03 : NIST ECC Group P-256 [<a href="#ref-FIPS186" title=""Digital Signature Standard (DSS)"">FIPS186</a>]
If no key update is being performed, the DH Group ID field MUST be
zero. Otherwise, the DH Group ID field MUST NOT be zero.
<span class="h4"><a class="selflink" id="section-3.1.5" href="#section-3.1.5">3.1.5</a>. Public Key ID</span>
The Public Key ID field specifies the cipher used to encrypt the
client's EAP-Response in PAX_SEC-2.
The following are currently supported:
o 0x00 : NONE (if using PAX_STD)
o 0x01 : RSAES-OAEP [<a href="./rfc3447" title=""Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1"">RFC3447</a>]
o 0x02 : RSA-PKCS1-V1_5 [<a href="./rfc3447" title=""Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1"">RFC3447</a>]
o 0x03 : El-Gamal Over NIST ECC Group P-256 [<a href="#ref-FIPS186" title=""Digital Signature Standard (DSS)"">FIPS186</a>]
If PAX_STD is being executed, the Public Key ID field MUST be zero.
If PAX_SEC is being executed, the Public Key ID field MUST NOT be
zero.
When using RSAES-OAEP, the hash algorithm and mask generation
algorithm used SHALL be the MAC specified by the MAC ID, keyed using
an all-zero key. The label SHALL be null.
The RSA-based schemes specified here do not dictate the length of the
public keys. DER encoding rules will specify the key size in the key
or certificate [<a href="#ref-X.690" title=""Information technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)"">X.690</a>]. Key sizes SHOULD be used that reflect the
desired level of security.
<span class="h4"><a class="selflink" id="section-3.1.6" href="#section-3.1.6">3.1.6</a>. Mandatory to Implement</span>
The following ciphersuite is mandatory to implement and achieves
roughly 112 bits of security:
o HMAC_SHA1_128
o IANA DH Group 14 (2048 bits)
o RSA-PKCS1-V1_5 (RECOMMEND 2048-bit public key)
The following ciphersuite is RECOMMENDED and achieves 128 bits of
security:
o HMAC_SHA256_128
o IANA DH Group 15 (3072 bits)
o RSAES-OAEP (RECOMMEND 3072-bit public key)
<span class="grey">Clancy & Arbaugh Informational [Page 15]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-16" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. Payload Formatting</span>
This section describes how to format the payload field. Depending on
the packet type, different values are transmitted. Sections <a href="#section-2.1">2.1</a> and
2.2 define the fields, and in what order they are to be concatenated.
For simplicity and since many field lengths can vary with the
ciphersuite, each value is prepended with a 2-octet length value
encoded as an integer as described below. This length field MUST
equal the length in octets of the subsequent value field.
--- octet offset --->
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+---+---------------------
|len| value ....
+---+--------
Figure 5: Length Encoding for Data Elements
All integer values are stored as octet arrays in network-byte order,
with the most significant octet first. Integers are padded on the
most significant end to reach octet boundaries.
Public keys and certificates SHALL be in X.509 format [<a href="./rfc3280" title=""Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile"">RFC3280</a>]
encoded using the Distinguished Encoding Rules (DER) format [<a href="#ref-X.690" title=""Information technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)"">X.690</a>].
Strings are not null-terminated and are encoded using UTF-8. Binary
data, such as message authentication codes, are transmitted as-is.
MACs are computed by concatenating the specified values in the
specified order. Note that for MACs, length fields are not included,
though the resulting MAC will itself have a length field. Values are
encoded as described above, except that no length field is specified.
To illustrate this process, an example is presented. What follows is
the encoding of the payload for PAX_STD-2. The three basic steps
will be computing the MAC, forming the payload, and encrypting the
payload.
To create the MAC, we first need to form the buffer that will be
MACed. For this example, assume that no key update is being done and
HMAC_SHA1_128 is used such that the result will be a 16-octet value.
<span class="grey">Clancy & Arbaugh Informational [Page 16]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-17" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
--- octet offset --->
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 32-octet integer A |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 32-octet integer B |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
... variable length CID ...
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
||
||
CK --> MAC
||
\/
--- octet offset --->
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 16-octet MAC output |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 6: Example Encoding of PAX_STD-2 MAC Data
With this, we can now create the encoded payload:
--- octet offset --->
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|32 | 32-octet integer B
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| L | |
+-+-+-+-+ +
| |
... L-octet CID ...
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|16 | MAC computed above |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 7: Example Encoding of PAX_STD-2 Packet
<span class="grey">Clancy & Arbaugh Informational [Page 17]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-18" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
These 52+L octets are then attached to the packet as the payload.
The ICV is then computed by MACing the packet headers and payload,
and appended after the payload (see <a href="#section-3.4">Section 3.4</a>).
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. Authenticated Data Exchange (ADE)</span>
This section describes the formatting of the ADE elements. ADE
elements can only occur on packets of type PAX_STD-2, PAX_STD-3,
PAX_SEC-4, PAX_SEC-5, and PAX_ACK. Values included in other packets
MUST be silently ignored.
The ADE element is preceded by its 2-octet length L. Each subelement
has first a 2-octet length Li followed by a 2-octet type Ti. The
entire ADE element looks as follows:
--- octet offset --->
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| L |L1 |T1 | |
+-+-+-+-+-+-+ +
| |
... subADE-1, type T1, length L1 ...
| |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |L2 |T2 | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
... subADE-2, type T2, length L2 ...
| |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | more subADE elements... ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 8: Encoding of ADE Components
The following type values have been allocated:
o 0x01 : Vendor Specific
o 0x02 : Client Channel Binding Data
o 0x03 : Server Channel Binding Data
<span class="grey">Clancy & Arbaugh Informational [Page 18]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-19" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
The first three octets of a subADE utilizing type code 0x01 must be
the vendor's Enterprise Number [<a href="./rfc3232" title=""Assigned Numbers: RFC 1700 is Replaced by an On-line Database"">RFC3232</a>] as registered with IANA.
The format for such a subADE is as follows:
--- octet offset --->
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Li | 1 | ENi | |
+-+-+-+-+-+-+-+ +
| |
... subADE-i, type Vendor Specific, length Li, vendor ENi ...
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 9: Encoding of Vendor-specific ADE
Channel binding subADEs have yet to be defined. Future IETF
documents will specify the format for these subADE fields.
<span class="h3"><a class="selflink" id="section-3.4" href="#section-3.4">3.4</a>. Integrity Check Value (ICV)</span>
The ICV is computed as the MAC over the entire EAP packet, including
the EAP header, the EAP-PAX header, and the EAP-PAX payload. The MAC
is keyed using the 16-octet ICK, using the MAC type specified by the
MAC ID in the EAP-PAX header. For packets of type PAX_STD-1,
PAX_SEC-1, PAX_SEC-2, and PAX_SEC-3, where the MK has not yet been
derived, the MAC is keyed using a zero-octet NULL key.
If the ICV field is incorrect, the receiver MUST silently discard the
packet.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Security Considerations</span>
Any authentication protocol, especially one geared for wireless
environments, must assume that adversaries have many capabilities.
In general, one must assume that all messages between the client and
server are delivered via the adversary. This allows passive
attackers to eavesdrop on all traffic, while active attackers can
modify data in any way before delivery.
In this section, we discuss the security properties and requirements
of EAP-PAX with respect to this threat model. Also note that the
security of PAX can be proved using under the Random Oracle model.
<span class="grey">Clancy & Arbaugh Informational [Page 19]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-20" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
<span class="h3"><a class="selflink" id="section-4.1" href="#section-4.1">4.1</a>. Server Certificates</span>
PAX_SEC can be used in several configurations. It can be used with
or without a server-side certificate. <a href="#section-2.2">Section 2.2</a> details the
possible modes and the resulting security risk.
When using PAX_SEC for identity protection and not using a CA-signed
certificate, an attacker can convince a client to reveal his
username. To achieve this, an attacker can simply forge a PAX_SEC-1
message and send it to the client. The client would respond with a
PAX_SEC-2 message containing his encrypted username. The attacker
can then use his associated private key to decrypt the client's
username. Use of key caching can reduce the risk of identity
revelation by allowing clients to detect when the EAP server to which
they are accustom has a different public key.
When provisioning with PAX_SEC and not using a CA-signed certificate,
an attacker could first forge a PAX_SEC-1 message and send it to the
client. The client would respond with a PAX_SEC-2 message. Using
the decrypted value of N, an attacker could forge a PAX_SEC-3
message. Once the client responds with a PAX_SEC-4 message, an
attacker can guess values of the weak AK and compute CK = PAX-KDF(AK,
"Confirmation Key", g^XY). Given enough time, the attacker can
obtain both the old AK and new AK' and forge a responding PAX_SEC-5.
<span class="h3"><a class="selflink" id="section-4.2" href="#section-4.2">4.2</a>. Server Security</span>
In order to maintain a reasonable security policy, the server should
manage five pieces of information concerning each user, most
obviously, the username and current key. In addition, the server
must keep a bit that indicates whether the current key is weak. Weak
keys must be updated prior to key derivation. Also, the server
should track the date of last key update. To implement the coarse-
grained forward secrecy, the authentication key must be updated on a
regular basis, and this field can be used to expire keys. Last, the
server should track the previous key, to prevent attacks where an
adversary desynchronizes the key state by interfering with PAX-ACK
packets. See <a href="#appendix-B">Appendix B</a> for more suggested implementation strategies
that prevent key desynchronization attacks.
Since the client keys are stored in plaintext on the server, special
care should be given to the overall security of the authentication
server. An operating system-level attack yielding root access to an
intruder would result in the compromise of all client credentials.
<span class="grey">Clancy & Arbaugh Informational [Page 20]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-21" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
<span class="h3"><a class="selflink" id="section-4.3" href="#section-4.3">4.3</a>. EAP Security Claims</span>
This section describes EAP-PAX in terms of specific security
terminology as required by [<a href="./rfc3748" title=""Extensible Authentication Protocol (EAP)"">RFC3748</a>].
<span class="h4"><a class="selflink" id="section-4.3.1" href="#section-4.3.1">4.3.1</a>. Protected Ciphersuite Negotiation</span>
In the initial packet from the server, the server specifies the
ciphersuite in the packet header. The server is in total control of
the ciphersuite; thus, a client not supporting the specified
ciphersuite will not be able to authenticate. In addition, each
client's local security policy should specify secure ciphersuites the
client will accept. The ciphersuite specified in PAX_STD-1 and
PAX_SEC-1 MUST remain the same in successive packets within the same
authentication session. Since later packets are covered by an ICV
keyed with the ICK, the server can verify that the originally
transmitted ciphersuite was not altered by an adversary.
<span class="h4"><a class="selflink" id="section-4.3.2" href="#section-4.3.2">4.3.2</a>. Mutual Authentication</span>
Both PAX_STD and PAX_SEC authenticate the client and the server, and
consequently achieve explicit mutual authentication.
<span class="h4"><a class="selflink" id="section-4.3.3" href="#section-4.3.3">4.3.3</a>. Integrity Protection</span>
The ICV described in <a href="#section-3.4">Section 3.4</a> provides integrity protection once
the integrity check key has been derived. The header values in the
unprotected packets can be verified when an ICV is received later in
the session.
<span class="h4"><a class="selflink" id="section-4.3.4" href="#section-4.3.4">4.3.4</a>. Replay Protection</span>
EAP-PAX is inherently designed to avoid replay attacks by
cryptographically binding each packet to the previous one. Also the
EAP sequence number is covered by the ICV to further strengthen
resistance to replay attacks.
<span class="h4"><a class="selflink" id="section-4.3.5" href="#section-4.3.5">4.3.5</a>. Confidentiality</span>
With identity protection enabled, PAX_SEC provides full
confidentiality.
<span class="h4"><a class="selflink" id="section-4.3.6" href="#section-4.3.6">4.3.6</a>. Key Derivation</span>
Session keys are derived using the PAX-KDF and fresh entropy supplied
by both the client and the server. Since the key hierarchy is
derived from the shared password, only someone with knowledge of that
password or the capability of guessing it is capable of deriving the
<span class="grey">Clancy & Arbaugh Informational [Page 21]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-22" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
session keys. One of the main benefits of PAX_SEC is that it allows
you to bootstrap a strong shared secret using a weak password while
preventing offline dictionary attacks.
<span class="h4"><a class="selflink" id="section-4.3.7" href="#section-4.3.7">4.3.7</a>. Key Strength</span>
Authentication keys are 128 bits. The key generation is protected by
a Diffie-Hellman key exchange. It is believed that a 3000-bit MODP
public-key scheme is roughly equivalent [<a href="./rfc3766" title=""Determining Strengths For Public Keys Used For Exchanging Symmetric Keys"">RFC3766</a>] to a 128-bit
symmetric-key scheme. Consequently, EAP-PAX requires the use of a
Diffie-Hellman group with modulus larger than 3000. Also, the
exponent used as the private DH parameter must be at least twice as
large as the key eventually generated. Consequently, EAP-PAX uses
256-bit DH exponents. Thus, the authentication keys contain the full
128 bits of security.
Future ciphersuites defined for EAP-PAX MUST contain a minimum of 128
bits of security.
<span class="h4"><a class="selflink" id="section-4.3.8" href="#section-4.3.8">4.3.8</a>. Dictionary Attack Resistance</span>
EAP-PAX is resistant to dictionary attacks, except for the case where
a weak password is initially used and the server is not using a
certificate for authentication. See <a href="#section-4.1">Section 4.1</a> for more information
on resistance to dictionary attacks.
<span class="h4"><a class="selflink" id="section-4.3.9" href="#section-4.3.9">4.3.9</a>. Fast Reconnect</span>
Although a specific fast reconnection option is not included,
execution of PAX_STD requires very little computation time and is
therefore bound primarily by the latency of the Authentication,
Authorization, and Accounting (AAA) server.
<span class="h4"><a class="selflink" id="section-4.3.10" href="#section-4.3.10">4.3.10</a>. Session Independence</span>
This protocol easily achieves backward secrecy through, among other
things, use of the PAX-KDF. Given a current session key, attackers
can discover neither the entropy used to generate it nor the key used
to encrypt that entropy as it was transmitted across the network.
This protocol has coarse-grained forward secrecy. Compromised
session keys are only useful on data for that session, and one cannot
derive AK from them. If an attacker can discover AK, that value can
only be used to compromise session keys derived using that AK.
Reasonably frequent password updates will help mitigate such attacks.
Session keys are independently generated using fresh nonces for each
session, and therefore the sessions are independent.
<span class="grey">Clancy & Arbaugh Informational [Page 22]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-23" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
<span class="h4"><a class="selflink" id="section-4.3.11" href="#section-4.3.11">4.3.11</a>. Fragmentation</span>
Fragmentation and reassembly is supported through the fragmentation
flag in the header.
<span class="h4"><a class="selflink" id="section-4.3.12" href="#section-4.3.12">4.3.12</a>. Channel Binding</span>
EAP-PAX can be extended to support channel bindings through the use
of its subADE fields.
<span class="h4"><a class="selflink" id="section-4.3.13" href="#section-4.3.13">4.3.13</a>. Cryptographic Binding</span>
EAP-PAX does not include any cryptographic binding. This is relevant
only for tunneled methods.
<span class="h4"><a class="selflink" id="section-4.3.14" href="#section-4.3.14">4.3.14</a>. Negotiation Attack Prevention</span>
EAP is susceptible to an attack where an attacker uses NAKs to
convince an EAP client and server to use a less secure method, and
can be prevented using method-specific integrity protection on NAK
messages. Since EAP-PAX does not have suitable keys derived for this
integrity protection at the beginning of a PAX conversation, this is
not included.
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. IANA Considerations</span>
This document requires IANA to maintain the namespace for the
following header fields: MAC ID, DH Group ID, Public Key ID, and ADE
type. The initial namespace populations are as follows.
MAC ID Namespace:
o 0x01 : HMAC_SHA1_128
o 0x02 : HMAC_SHA256_128
DH Group ID Namespace:
o 0x00 : NONE
o 0x01 : IANA DH Group 14
o 0x02 : IANA DH Group 15
o 0x03 : NIST ECC Group P-256
<span class="grey">Clancy & Arbaugh Informational [Page 23]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-24" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
Public Key ID Namespace:
o 0x00 : NONE
o 0x01 : RSAES-OAEP
o 0x02 : RSA-PKCS1-V1_5
o 0x03 : El-Gamal Over NIST ECC Group P-256
ADE Type Namespace:
o 0x01 : Vendor Specific
o 0x02 : Client Channel Binding Data
o 0x03 : Server Channel Binding Data
Allocation of values for these namespaces shall be reviewed by a
Designated Expert appointed by the IESG. The Designated Expert will
post a request to the EAP WG mailing list (or a successor designated
by the Designated Expert) for comment and review, including an
Internet-Draft. Before a period of 30 days has passed, the
Designated Expert will either approve or deny the registration
request and publish a notice of the decision to the EAP WG mailing
list or its successor, as well as informing IANA. A denial notice
must be justified by an explanation and, in the cases where it is
possible, concrete suggestions on how the request can be modified so
as to become acceptable.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Acknowledgments</span>
The authors would like to thank Jonathan Katz for discussion with
respect to provable security, Bernard Aboba for technical guidance,
Jari Arkko for his expert review, and Florent Bersani for feedback
and suggestions. Finally, the authors would like to thank the
Defense Information Systems Agency for initially funding this work.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. References</span>
<span class="h3"><a class="selflink" id="section-7.1" href="#section-7.1">7.1</a>. Normative References</span>
[<a id="ref-FIPS180">FIPS180</a>] National Institute for Standards and Technology, "Secure
Hash Standard", Federal Information Processing Standard
180-2, August 2002.
[<a id="ref-FIPS186">FIPS186</a>] National Institute for Standards and Technology,
"Digital Signature Standard (DSS)", Federal Information
Processing Standard 186, May 1994.
[<a id="ref-FIPS198">FIPS198</a>] National Institute for Standards and Technology, "The
Keyed-Hash Message Authentication Code (HMAC)", Federal
Information Processing Standard 198, March 2002.
<span class="grey">Clancy & Arbaugh Informational [Page 24]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-25" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
[<a id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>, March 1997.
[<a id="ref-RFC3232">RFC3232</a>] Reynolds, J., "Assigned Numbers: <a href="./rfc1700">RFC 1700</a> is Replaced by
an On-line Database", <a href="./rfc3232">RFC 3232</a>, January 2002.
[<a id="ref-RFC3280">RFC3280</a>] Housley, R., Polk, W., Ford, W., and D. Solo, "Internet
X.509 Public Key Infrastructure Certificate and
Certificate Revocation List (CRL) Profile", <a href="./rfc3280">RFC 3280</a>,
April 2002.
[<a id="ref-RFC3447">RFC3447</a>] Jonsson, J. and B. Kaliski, "Public-Key Cryptography
Standards (PKCS) #1: RSA Cryptography Specifications
Version 2.1", <a href="./rfc3447">RFC 3447</a>, February 2003.
[<a id="ref-RFC3526">RFC3526</a>] Kivinen, T. and M. Kojo, "More Modular Exponential
(MODP) Diffie-Hellman groups for Internet Key Exchange
(IKE)", <a href="./rfc3526">RFC 3526</a>, May 2003.
[<a id="ref-RFC3748">RFC3748</a>] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and
H. Levkowetz, "Extensible Authentication Protocol
(EAP)", <a href="./rfc3748">RFC 3748</a>, June 2004.
[<a id="ref-RFC4282">RFC4282</a>] Aboba, B., Beadles, M., Arkko, J., and P. Eronen, "The
Network Access Identifier", <a href="./rfc4282">RFC 4282</a>, December 2005.
[<a id="ref-RFC4334">RFC4334</a>] Housley, R. and T. Moore, "Certificate Extensions and
Attributes Supporting Authentication in Point-to-Point
Protocol (PPP) and Wireless Local Area Networks (WLAN)",
<a href="./rfc4334">RFC 4334</a>, February 2006.
[<a id="ref-X.690">X.690</a>] International Telecommunications Union, "Information
technology - ASN.1 encoding rules: Specification of
Basic Encoding Rules (BER), Canonical Encoding Rules
(CER) and Distinguished Encoding Rules (DER)", Data
Networks and Open System Communication Recommendation
X.690, July 2002.
<span class="h3"><a class="selflink" id="section-7.2" href="#section-7.2">7.2</a>. Informative References</span>
[<a id="ref-IETF.KEY">IETF.KEY</a>] Aboba, B., Simon, D., Arkko, J., Eronen, P., and H.
Levkowetz, "Extensible Authentication Protocol (EAP) Key
Management Framework", Work in Progress.
<span class="grey">Clancy & Arbaugh Informational [Page 25]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-26" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
[<a id="ref-IEEE.80211">IEEE.80211</a>] Institute of Electrical and Electronics Engineers,
"Information technology - Telecommunications and
information exchange between systems - Local and
metropolitan area networks - Specific Requirements Part
11: Wireless LAN Medium Access Control (MAC) and
Physical Layer (PHY) Specifications", IEEE Standard
802.11-1997, 1997.
[<a id="ref-RFC2631">RFC2631</a>] Rescorla, E., "Diffie-Hellman Key Agreement Method", <a href="./rfc2631">RFC</a>
<a href="./rfc2631">2631</a>, June 1999.
[<a id="ref-RFC3766">RFC3766</a>] Orman, H. and P. Hoffman, "Determining Strengths For
Public Keys Used For Exchanging Symmetric Keys", <a href="https://www.rfc-editor.org/bcp/bcp86">BCP 86</a>,
<a href="./rfc3766">RFC 3766</a>, April 2004.
[<a id="ref-RFC4017">RFC4017</a>] Stanley, D., Walker, J., and B. Aboba, "Extensible
Authentication Protocol (EAP) Method Requirements for
Wireless LANs", <a href="./rfc4017">RFC 4017</a>, March 2005.
[<a id="ref-RFC4252">RFC4252</a>] Ylonen, T. and C. Lonvick, "The Secure Shell (SSH)
Authentication Protocol", <a href="./rfc4252">RFC 4252</a>, January 2006.
<span class="grey">Clancy & Arbaugh Informational [Page 26]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-27" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
<span class="h2"><a class="selflink" id="appendix-A" href="#appendix-A">Appendix A</a>. Key Generation from Passwords</span>
If a 128-bit key is not available to bootstrap the authentication
process, then one must be generated from some sort of weak preshared
key. Note that the security of the hashing process is unimportant,
as long as it does not significantly decrease the password's entropy.
Resistance to dictionary attacks is provided by PAX_SEC.
Consequently, computing the SHA-1 of the password and truncating the
output to 128 bits is RECOMMENDED as a means of converting a weak
password to a key for provisioning.
When using other preshared credentials, such as a Kerberos Data
Encryption Standard (DES) key, or an MD4-hashed Microsoft Challenge
Handshake Authentication Protocol (MSCHAP) password, to provision
clients, these keys SHOULD still be put through SHA-1 before being
used. This serves to protect the credentials from possible
compromise, and also keeps things uniform. As an example, consider
provisioning using an existing Kerberos credential. The initial key
computation could be SHA1_128(string2key(password)). The KDC,
storing string2key(password), would also be able to compute this
initial key value.
<span class="h2"><a class="selflink" id="appendix-B" href="#appendix-B">Appendix B</a>. Implementation Suggestions</span>
In this section, two implementation strategies are discussed. The
first describes how best to implement and deploy EAP-PAX in an
enterprise network for IEEE 802.11i authentication. The second
describes how to use EAP-PAX for device authentication in a 3G-style
mobile phone network.
<span class="h3"><a class="selflink" id="appendix-B.1" href="#appendix-B.1">B.1</a>. WiFi Enterprise Network</span>
For the purposes of this section, a wireless enterprise network is
defined to have the following characteristics:
o Users wish to obtain network access through IEEE 802.11 access
points.
o Users can possibly have multiple devices (laptops, PDAs, etc.)
they wish to authenticate.
o A preexisting authentication framework already exists, for
example, a Microsoft Active Directory domain or a Kerberos realm.
Two of the biggest challenges in an enterprise WiFi network is key
provisioning and support for multiple devices. Consequently, it is
recommended that the client's Network Access Identifier (NAI) have
<span class="grey">Clancy & Arbaugh Informational [Page 27]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-28" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
the format username/KID@realm, where KID is a key ID that can be used
to distinguish between different devices.
The client's supplicant can use a variety of sources to automatically
generate the KID. Two of the better choices would likely be the
computer's NETBIOS name, or local Ethernet adapter's MAC address.
The wireless adapter's address may be a suboptimal choice, as the
user may only have one PCCARD adapter for multiple systems.
With an authentication system already in place, there is a natural
choice for the provisioned key. Clients can authenticate using their
preexisting password. When the server is presented with a new KID,
it can create a new key record on the server and use the user's
current password as the provisioned key. For example, for Active
Directory, the supplicant could use Microsoft's NtPasswordHash
function to generate a key verifiable by the server. It is suggested
that this key then be fed through SHA1_128 before being used in a
non-Microsoft authentication protocol.
After a key update, the server should keep track of both the old and
new authentication keys. When two keys exist, the server should
attempt to use both to validate the MACs on transmitted packets.
Once a client successfully authenticates using the new key, the
server should discard the old key. This prevents desynchronization
attacks.
<span class="h3"><a class="selflink" id="appendix-B.2" href="#appendix-B.2">B.2</a>. Mobile Phone Network</span>
In a mobile phone system, we no longer need to worry about supporting
multiple keys per identity. Presumably, each mobile device has a
unique identity. However, if multiple devices per identity are
desired, a method similar to that presented in Section B.1 could be
used.
Provisioning could easily be accomplished by issuing customers a 6-
digit PIN they could type into their phone's keypad.
<span class="grey">Clancy & Arbaugh Informational [Page 28]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-29" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
Authors' Addresses
T. Charles Clancy
DoD Laboratory for Telecommunications Sciences
8080 Greenmeade Drive
College Park, MD 20740
USA
EMail: clancy@ltsnet.net
William A. Arbaugh
University of Maryland
Department of Computer Science
College Park, MD 20742
USA
EMail: waa@cs.umd.edu
<span class="grey">Clancy & Arbaugh Informational [Page 29]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-30" ></span>
<span class="grey"><a href="./rfc4746">RFC 4746</a> EAP-PAX November 2006</span>
Full Copyright Statement
Copyright (C) The IETF Trust (2006).
This document is subject to the rights, licenses and restrictions
contained in <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a>, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST,
AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and <a href="https://www.rfc-editor.org/bcp/bcp79">BCP 79</a>.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
<a href="http://www.ietf.org/ipr">http://www.ietf.org/ipr</a>.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Clancy & Arbaugh Informational [Page 30]
</pre>
|