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
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
|
Network Working Group D. Simon
Request for Comments: 5216 B. Aboba
Obsoletes: 2716 R. Hurst
Category: Standards Track Microsoft Corporation
March 2008
The EAP-TLS Authentication Protocol
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Abstract
The Extensible Authentication Protocol (EAP), defined in RFC 3748,
provides support for multiple authentication methods. Transport
Layer Security (TLS) provides for mutual authentication, integrity-
protected ciphersuite negotiation, and key exchange between two
endpoints. This document defines EAP-TLS, which includes support for
certificate-based mutual authentication and key derivation.
This document obsoletes RFC 2716. A summary of the changes between
this document and RFC 2716 is available in Appendix A.
Simon, et al. Standards Track [Page 1]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
Table of Contents
1. Introduction ....................................................2
1.1. Requirements ...............................................3
1.2. Terminology ................................................3
2. Protocol Overview ...............................................4
2.1. Overview of the EAP-TLS Conversation .......................4
2.1.1. Base Case ...........................................4
2.1.2. Session Resumption ..................................7
2.1.3. Termination .........................................8
2.1.4. Privacy ............................................11
2.1.5. Fragmentation ......................................14
2.2. Identity Verification .....................................16
2.3. Key Hierarchy .............................................17
2.4. Ciphersuite and Compression Negotiation ...................19
3. Detailed Description of the EAP-TLS Protocol ...................20
3.1. EAP-TLS Request Packet ....................................20
3.2. EAP-TLS Response Packet ...................................22
4. IANA Considerations ............................................23
5. Security Considerations ........................................24
5.1. Security Claims ...........................................24
5.2. Peer and Server Identities ................................25
5.3. Certificate Validation ....................................26
5.4. Certificate Revocation ....................................27
5.5. Packet Modification Attacks ...............................28
6. References .....................................................29
6.1. Normative References ......................................29
6.2. Informative References ....................................29
Acknowledgments ...................................................31
Appendix A -- Changes from RFC 2716 ...............................32
1. Introduction
The Extensible Authentication Protocol (EAP), described in [RFC3748],
provides a standard mechanism for support of multiple authentication
methods. Through the use of EAP, support for a number of
authentication schemes may be added, including smart cards, Kerberos,
Public Key, One Time Passwords, and others. EAP has been defined for
use with a variety of lower layers, including the Point-to-Point
Protocol (PPP) [RFC1661], Layer 2 tunneling protocols such as the
Point-to-Point Tunneling Protocol (PPTP) [RFC2637] or Layer 2
Tunneling Protocol (L2TP) [RFC2661], IEEE 802 wired networks
[IEEE-802.1X], and wireless technologies such as IEEE 802.11 [IEEE-
802.11] and IEEE 802.16 [IEEE-802.16e].
While the EAP methods defined in [RFC3748] did not support mutual
authentication, the use of EAP with wireless technologies such as
[IEEE-802.11] has resulted in development of a new set of
Simon, et al. Standards Track [Page 2]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
requirements. As described in "Extensible Authentication Protocol
(EAP) Method Requirements for Wireless LANs" [RFC4017], it is
desirable for EAP methods used for wireless LAN authentication to
support mutual authentication and key derivation. Other link layers
can also make use of EAP to enable mutual authentication and key
derivation.
This document defines EAP-Transport Layer Security (EAP-TLS), which
includes support for certificate-based mutual authentication and key
derivation, utilizing the protected ciphersuite negotiation, mutual
authentication and key management capabilities of the TLS protocol,
described in "The Transport Layer Security (TLS) Protocol
Version 1.1" [RFC4346]. While this document obsoletes RFC 2716
[RFC2716], it remains backward compatible with it. A summary of the
changes between this document and RFC 2716 is available in Appendix
A.
1.1. Requirements
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 [RFC2119].
1.2. Terminology
This document frequently uses the following terms:
authenticator
The entity initiating EAP authentication.
peer
The entity that responds to the authenticator. In [IEEE-802.1X],
this entity is known as the Supplicant.
backend authentication server
A backend authentication server is an entity that provides an
authentication service to an authenticator. When used, this server
typically executes EAP methods for the authenticator. This
terminology is also used in [IEEE-802.1X].
EAP server
The entity that terminates the EAP authentication method with the
peer. In the case where no backend authentication server is used,
the EAP server is part of the authenticator. In the case where the
authenticator operates in pass-through mode, the EAP server is
located on the backend authentication server.
Simon, et al. Standards Track [Page 3]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
Master Session Key (MSK)
Keying material that is derived between the EAP peer and server and
exported by the EAP method.
Extended Master Session Key (EMSK)
Additional keying material derived between the EAP peer and server
that is exported by the EAP method.
2. Protocol Overview
2.1. Overview of the EAP-TLS Conversation
As described in [RFC3748], the EAP-TLS conversation will typically
begin with the authenticator and the peer negotiating EAP. The
authenticator will then typically send an EAP-Request/Identity packet
to the peer, and the peer will respond with an EAP-Response/Identity
packet to the authenticator, containing the peer's user-Id.
From this point forward, while nominally the EAP conversation occurs
between the EAP authenticator and the peer, the authenticator MAY act
as a pass-through device, with the EAP packets received from the peer
being encapsulated for transmission to a backend authentication
server. In the discussion that follows, we will use the term "EAP
server" to denote the ultimate endpoint conversing with the peer.
2.1.1. Base Case
Once having received the peer's Identity, the EAP server MUST respond
with an EAP-TLS/Start packet, which is an EAP-Request packet with
EAP-Type=EAP-TLS, the Start (S) bit set, and no data. The EAP-TLS
conversation will then begin, with the peer sending an EAP-Response
packet with EAP-Type=EAP-TLS. The data field of that packet will
encapsulate one or more TLS records in TLS record layer format,
containing a TLS client_hello handshake message. The current cipher
spec for the TLS records will be TLS_NULL_WITH_NULL_NULL and null
compression. This current cipher spec remains the same until the
change_cipher_spec message signals that subsequent records will have
the negotiated attributes for the remainder of the handshake.
The client_hello message contains the peer's TLS version number, a
sessionId, a random number, and a set of ciphersuites supported by
the peer. The version offered by the peer MUST correspond to TLS
v1.0 or later.
The EAP server will then respond with an EAP-Request packet with
EAP-Type=EAP-TLS. The data field of this packet will encapsulate one
or more TLS records. These will contain a TLS server_hello handshake
Simon, et al. Standards Track [Page 4]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
message, possibly followed by TLS certificate, server_key_exchange,
certificate_request, server_hello_done and/or finished handshake
messages, and/or a TLS change_cipher_spec message. The server_hello
handshake message contains a TLS version number, another random
number, a sessionId, and a ciphersuite. The version offered by the
server MUST correspond to TLS v1.0 or later.
If the peer's sessionId is null or unrecognized by the server, the
server MUST choose the sessionId to establish a new session.
Otherwise, the sessionId will match that offered by the peer,
indicating a resumption of the previously established session with
that sessionId. The server will also choose a ciphersuite from those
offered by the peer. If the session matches the peer's, then the
ciphersuite MUST match the one negotiated during the handshake
protocol execution that established the session.
If the EAP server is not resuming a previously established session,
then it MUST include a TLS server_certificate handshake message, and
a server_hello_done handshake message MUST be the last handshake
message encapsulated in this EAP-Request packet.
The certificate message contains a public key certificate chain for
either a key exchange public key (such as an RSA or Diffie-Hellman
key exchange public key) or a signature public key (such as an RSA or
Digital Signature Standard (DSS) signature public key). In the
latter case, a TLS server_key_exchange handshake message MUST also be
included to allow the key exchange to take place.
The certificate_request message is included when the server desires
the peer to authenticate itself via public key. While the EAP server
SHOULD require peer authentication, this is not mandatory, since
there are circumstances in which peer authentication will not be
needed (e.g., emergency services, as described in [UNAUTH]), or where
the peer will authenticate via some other means.
If the peer supports EAP-TLS and is configured to use it, it MUST
respond to the EAP-Request with an EAP-Response packet of EAP-
Type=EAP-TLS. If the preceding server_hello message sent by the EAP
server in the preceding EAP-Request packet did not indicate the
resumption of a previous session, the data field of this packet MUST
encapsulate one or more TLS records containing a TLS
client_key_exchange, change_cipher_spec, and finished messages. If
the EAP server sent a certificate_request message in the preceding
EAP-Request packet, then unless the peer is configured for privacy
(see Section 2.1.4) the peer MUST send, in addition, certificate and
certificate_verify messages. The former contains a certificate for
the peer's signature public key, while the latter contains the peer's
signed authentication response to the EAP server. After receiving
Simon, et al. Standards Track [Page 5]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
this packet, the EAP server will verify the peer's certificate and
digital signature, if requested.
If the preceding server_hello message sent by the EAP server in the
preceding EAP-Request packet indicated the resumption of a previous
session, then the peer MUST send only the change_cipher_spec and
finished handshake messages. The finished message contains the
peer's authentication response to the EAP server.
In the case where the EAP-TLS mutual authentication is successful,
the conversation will appear as follows:
Authenticating Peer Authenticator
------------------- -------------
<- EAP-Request/
Identity
EAP-Response/
Identity (MyID) ->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS Start)
EAP-Response/
EAP-Type=EAP-TLS
(TLS client_hello)->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS server_hello,
TLS certificate,
[TLS server_key_exchange,]
TLS certificate_request,
TLS server_hello_done)
EAP-Response/
EAP-Type=EAP-TLS
(TLS certificate,
TLS client_key_exchange,
TLS certificate_verify,
TLS change_cipher_spec,
TLS finished) ->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS change_cipher_spec,
TLS finished)
EAP-Response/
EAP-Type=EAP-TLS ->
<- EAP-Success
Simon, et al. Standards Track [Page 6]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
2.1.2. Session Resumption
The purpose of the sessionId within the TLS protocol is to allow for
improved efficiency in the case where a peer repeatedly attempts to
authenticate to an EAP server within a short period of time. While
this model was developed for use with HTTP authentication, it also
can be used to provide "fast reconnect" functionality as defined in
Section 7.2.1 of [RFC3748].
It is left up to the peer whether to attempt to continue a previous
session, thus shortening the TLS conversation. Typically, the peer's
decision will be made based on the time elapsed since the previous
authentication attempt to that EAP server. Based on the sessionId
chosen by the peer, and the time elapsed since the previous
authentication, the EAP server will decide whether to allow the
continuation or to choose a new session.
In the case where the EAP server and authenticator reside on the same
device, the peer will only be able to continue sessions when
connecting to the same authenticator. Should the authenticators be
set up in a rotary or round-robin, then it may not be possible for
the peer to know in advance the authenticator to which it will be
connecting, and therefore which sessionId to attempt to reuse. As a
result, it is likely that the continuation attempt will fail. In the
case where the EAP authentication is remoted, then continuation is
much more likely to be successful, since multiple authenticators will
utilize the same backend authentication server.
If the EAP server is resuming a previously established session, then
it MUST include only a TLS change_cipher_spec message and a TLS
finished handshake message after the server_hello message. The
finished message contains the EAP server's authentication response to
the peer.
Simon, et al. Standards Track [Page 7]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
In the case where a previously established session is being resumed,
and both sides authenticate successfully, the conversation will
appear as follows:
Authenticating Peer Authenticator
------------------- -------------
<- EAP-Request/
Identity
EAP-Response/
Identity (MyID) ->
<- EAP-Request/
EAP-Request/
EAP-Type=EAP-TLS
(TLS Start)
EAP-Response/
EAP-Type=EAP-TLS
(TLS client_hello)->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS server_hello,
TLS change_cipher_spec
TLS finished)
EAP-Response/
EAP-Type=EAP-TLS
(TLS change_cipher_spec,
TLS finished) ->
<- EAP-Success
2.1.3. Termination
If the peer's authentication is unsuccessful, the EAP server SHOULD
send an EAP-Request packet with EAP-Type=EAP-TLS, encapsulating a TLS
record containing the appropriate TLS alert message. The EAP server
SHOULD send a TLS alert message immediately terminating the
conversation so as to allow the peer to inform the user or log the
cause of the failure and possibly allow for a restart of the
conversation.
To ensure that the peer receives the TLS alert message, the EAP
server MUST wait for the peer to reply with an EAP-Response packet.
The EAP-Response packet sent by the peer MAY encapsulate a TLS
client_hello handshake message, in which case the EAP server MAY
allow the EAP-TLS conversation to be restarted, or it MAY contain an
EAP-Response packet with EAP-Type=EAP-TLS and no data, in which case
the EAP-Server MUST send an EAP-Failure packet and terminate the
conversation. It is up to the EAP server whether to allow restarts,
and if so, how many times the conversation can be restarted. An EAP
Server implementing restart capability SHOULD impose a per-peer limit
Simon, et al. Standards Track [Page 8]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
on the number of restarts, so as to protect against denial-of-service
attacks.
If the peer authenticates successfully, the EAP server MUST respond
with an EAP-Request packet with EAP-Type=EAP-TLS, which includes, in
the case of a new TLS session, one or more TLS records containing TLS
change_cipher_spec and finished handshake messages. The latter
contains the EAP server's authentication response to the peer. The
peer will then verify the finished message in order to authenticate
the EAP server.
If EAP server authentication is unsuccessful, the peer SHOULD delete
the session from its cache, preventing reuse of the sessionId. The
peer MAY send an EAP-Response packet of EAP-Type=EAP-TLS containing a
TLS Alert message identifying the reason for the failed
authentication. The peer MAY send a TLS alert message rather than
immediately terminating the conversation so as to allow the EAP
server to log the cause of the error for examination by the system
administrator.
To ensure that the EAP Server receives the TLS alert message, the
peer MUST wait for the EAP Server to reply before terminating the
conversation. The EAP Server MUST reply with an EAP-Failure packet
since server authentication failure is a terminal condition.
If the EAP server authenticates successfully, the peer MUST send an
EAP-Response packet of EAP-Type=EAP-TLS, and no data. The EAP Server
then MUST respond with an EAP-Success message.
Simon, et al. Standards Track [Page 9]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
In the case where the server authenticates to the peer successfully,
but the peer fails to authenticate to the server, the conversation
will appear as follows:
Authenticating Peer Authenticator
------------------- -------------
<- EAP-Request/
Identity
EAP-Response/
Identity (MyID) ->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS Start)
EAP-Response/
EAP-Type=EAP-TLS
(TLS client_hello)->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS server_hello,
TLS certificate,
[TLS server_key_exchange,]
TLS certificate_request,
TLS server_hello_done)
EAP-Response/
EAP-Type=EAP-TLS
(TLS certificate,
TLS client_key_exchange,
TLS certificate_verify,
TLS change_cipher_spec,
TLS finished) ->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS change_cipher_spec,
TLS finished)
EAP-Response/
EAP-Type=EAP-TLS ->
<- EAP-Request
EAP-Type=EAP-TLS
(TLS Alert message)
EAP-Response/
EAP-Type=EAP-TLS ->
<- EAP-Failure
(User Disconnected)
Simon, et al. Standards Track [Page 10]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
In the case where server authentication is unsuccessful, the
conversation will appear as follows:
Authenticating Peer Authenticator
------------------- -------------
<- EAP-Request/
Identity
EAP-Response/
Identity (MyID) ->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS Start)
EAP-Response/
EAP-Type=EAP-TLS
(TLS client_hello)->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS server_hello,
TLS certificate,
[TLS server_key_exchange,]
TLS certificate_request,
TLS server_hello_done)
EAP-Response/
EAP-Type=EAP-TLS
(TLS Alert message) ->
<- EAP-Failure
(User Disconnected)
2.1.4. Privacy
EAP-TLS peer and server implementations MAY support privacy.
Disclosure of the username is avoided by utilizing a privacy Network
Access Identifier (NAI) [RFC4282] in the EAP-Response/Identity, and
transmitting the peer certificate within a TLS session providing
confidentiality.
In order to avoid disclosing the peer username, an EAP-TLS peer
configured for privacy MUST negotiate a TLS ciphersuite supporting
confidentiality and MUST provide a client certificate list containing
no entries in response to the initial certificate_request from the
EAP-TLS server.
An EAP-TLS server supporting privacy MUST NOT treat a certificate
list containing no entries as a terminal condition; instead, it MUST
bring up the TLS session and then send a hello_request. The
handshake then proceeds normally; the peer sends a client_hello and
the server replies with a server_hello, certificate,
server_key_exchange, certificate_request, server_hello_done, etc.
Simon, et al. Standards Track [Page 11]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
For the calculation of exported keying material (see Section 2.3),
the master_secret derived within the second handshake is used.
An EAP-TLS peer supporting privacy MUST provide a certificate list
containing at least one entry in response to the subsequent
certificate_request sent by the server. If the EAP-TLS server
supporting privacy does not receive a client certificate in response
to the subsequent certificate_request, then it MUST abort the
session.
EAP-TLS privacy support is designed to allow EAP-TLS peers that do
not support privacy to interoperate with EAP-TLS servers supporting
privacy. EAP-TLS servers supporting privacy MUST request a client
certificate, and MUST be able to accept a client certificate offered
by the EAP-TLS peer, in order to preserve interoperability with EAP-
TLS peers that do not support privacy.
However, an EAP-TLS peer configured for privacy typically will not be
able to successfully authenticate with an EAP-TLS server that does
not support privacy, since such a server will typically treat the
refusal to provide a client certificate as a terminal error. As a
result, unless authentication failure is considered preferable to
disclosure of the username, EAP-TLS peers SHOULD only be configured
for privacy on networks known to support it.
This is most easily achieved with EAP lower layers that support
network advertisement, so that the network and appropriate privacy
configuration can be determined. In order to determine the privacy
configuration on link layers (such as IEEE 802 wired networks) that
do not support network advertisement, it may be desirable to utilize
information provided in the server certificate (such as the subject
and subjectAltName fields) or within identity selection hints
[RFC4284] to determine the appropriate configuration.
In the case where the peer and server support privacy and mutual
authentication, the conversation will appear as follows:
Authenticating Peer Authenticator
------------------- -------------
<- EAP-Request/
Identity
EAP-Response/
Identity (Anonymous NAI) ->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS Start)
Simon, et al. Standards Track [Page 12]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
EAP-Response/
EAP-Type=EAP-TLS
(TLS client_hello)->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS server_hello,
TLS certificate,
[TLS server_key_exchange,]
TLS certificate_request,
TLS server_hello_done)
EAP-Response/
EAP-Type=EAP-TLS
(TLS certificate (no cert),
TLS client_key_exchange,
TLS change_cipher_spec,
TLS finished) ->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS change_cipher_spec,
finished,
hello_request)
EAP-Response/
EAP-Type=EAP-TLS
(TLS client_hello)->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS server_hello,
TLS certificate,
TLS server_key_exchange,
TLS certificate_request,
TLS server_hello_done)
EAP-Response/
EAP-Type=EAP-TLS
(TLS certificate,
TLS client_key_exchange,
TLS certificate_verify,
TLS change_cipher_spec,
TLS finished) ->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS change_cipher_spec,
TLS finished)
EAP-Response/
EAP-Type=EAP-TLS ->
<- EAP-Success
Simon, et al. Standards Track [Page 13]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
2.1.5. Fragmentation
A single TLS record may be up to 16384 octets in length, but a TLS
message may span multiple TLS records, and a TLS certificate message
may in principle be as long as 16 MB. The group of EAP-TLS messages
sent in a single round may thus be larger than the MTU size or the
maximum Remote Authentication Dail-In User Service (RADIUS) packet
size of 4096 octets. As a result, an EAP-TLS implementation MUST
provide its own support for fragmentation and reassembly. However,
in order to ensure interoperability with existing implementations,
TLS handshake messages SHOULD NOT be fragmented into multiple TLS
records if they fit within a single TLS record.
In order to protect against reassembly lockup and denial-of-service
attacks, it may be desirable for an implementation to set a maximum
size for one such group of TLS messages. Since a single certificate
is rarely longer than a few thousand octets, and no other field is
likely to be anywhere near as long, a reasonable choice of maximum
acceptable message length might be 64 KB.
Since EAP is a simple ACK-NAK protocol, fragmentation support can be
added in a simple manner. In EAP, fragments that are lost or damaged
in transit will be retransmitted, and since sequencing information is
provided by the Identifier field in EAP, there is no need for a
fragment offset field as is provided in IPv4.
EAP-TLS fragmentation support is provided through addition of a flags
octet within the EAP-Response and EAP-Request packets, as well as a
TLS Message Length field of four octets. Flags include the Length
included (L), More fragments (M), and EAP-TLS Start (S) bits. The L
flag is set to indicate the presence of the four-octet TLS Message
Length field, and MUST be set for the first fragment of a fragmented
TLS message or set of messages. The M flag is set on all but the
last fragment. The S flag is set only within the EAP-TLS start
message sent from the EAP server to the peer. The TLS Message Length
field is four octets, and provides the total length of the TLS
message or set of messages that is being fragmented; this simplifies
buffer allocation.
When an EAP-TLS peer receives an EAP-Request packet with the M bit
set, it MUST respond with an EAP-Response with EAP-Type=EAP-TLS and
no data. This serves as a fragment ACK. The EAP server MUST wait
until it receives the EAP-Response before sending another fragment.
In order to prevent errors in processing of fragments, the EAP server
MUST increment the Identifier field for each fragment contained
within an EAP-Request, and the peer MUST include this Identifier
value in the fragment ACK contained within the EAP-Response.
Retransmitted fragments will contain the same Identifier value.
Simon, et al. Standards Track [Page 14]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
Similarly, when the EAP server receives an EAP-Response with the M
bit set, it MUST respond with an EAP-Request with EAP-Type=EAP-TLS
and no data. This serves as a fragment ACK. The EAP peer MUST wait
until it receives the EAP-Request before sending another fragment.
In order to prevent errors in the processing of fragments, the EAP
server MUST increment the Identifier value for each fragment ACK
contained within an EAP-Request, and the peer MUST include this
Identifier value in the subsequent fragment contained within an EAP-
Response.
In the case where the EAP-TLS mutual authentication is successful,
and fragmentation is required, the conversation will appear as
follows:
Authenticating Peer Authenticator
------------------- -------------
<- EAP-Request/
Identity
EAP-Response/
Identity (MyID) ->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS Start, S bit set)
EAP-Response/
EAP-Type=EAP-TLS
(TLS client_hello)->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS server_hello,
TLS certificate,
[TLS server_key_exchange,]
TLS certificate_request,
TLS server_hello_done)
(Fragment 1: L, M bits set)
EAP-Response/
EAP-Type=EAP-TLS ->
<- EAP-Request/
EAP-Type=EAP-TLS
(Fragment 2: M bit set)
EAP-Response/
EAP-Type=EAP-TLS ->
<- EAP-Request/
EAP-Type=EAP-TLS
(Fragment 3)
Simon, et al. Standards Track [Page 15]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
EAP-Response/
EAP-Type=EAP-TLS
(TLS certificate,
TLS client_key_exchange,
TLS certificate_verify,
TLS change_cipher_spec,
TLS finished)(Fragment 1:
L, M bits set)->
<- EAP-Request/
EAP-Type=EAP-TLS
EAP-Response/
EAP-Type=EAP-TLS
(Fragment 2)->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS change_cipher_spec,
TLS finished)
EAP-Response/
EAP-Type=EAP-TLS ->
<- EAP-Success
2.2. Identity Verification
As noted in Section 5.1 of [RFC3748]:
It is RECOMMENDED that the Identity Response be used primarily for
routing purposes and selecting which EAP method to use. EAP
Methods SHOULD include a method-specific mechanism for obtaining
the identity, so that they do not have to rely on the Identity
Response.
As part of the TLS negotiation, the server presents a certificate to
the peer, and if mutual authentication is requested, the peer
presents a certificate to the server. EAP-TLS therefore provides a
mechanism for determining both the peer identity (Peer-Id in
[KEYFRAME]) and server identity (Server-Id in [KEYFRAME]). For
details, see Section 5.2.
Since the identity presented in the EAP-Response/Identity need not be
related to the identity presented in the peer certificate, EAP-TLS
implementations SHOULD NOT require that they be identical. However,
if they are not identical, the identity presented in the EAP-
Response/Identity is unauthenticated information, and SHOULD NOT be
used for access control or accounting purposes.
Simon, et al. Standards Track [Page 16]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
2.3. Key Hierarchy
Figure 1 illustrates the TLS Key Hierarchy, described in [RFC4346]
Section 6.3. The derivation proceeds as follows:
master_secret = TLS-PRF-48(pre_master_secret, "master secret",
client.random || server.random) key_block =
TLS-PRF-X(master_secret, "key expansion",
server.random || client.random)
Where:
TLS-PRF-X = TLS pseudo-random function defined in [RFC4346],
computed to X octets.
In EAP-TLS, the MSK, EMSK, and Initialization Vector (IV) are derived
from the TLS master secret via a one-way function. This ensures that
the TLS master secret cannot be derived from the MSK, EMSK, or IV
unless the one-way function (TLS PRF) is broken. Since the MSK and
EMSK are derived from the TLS master secret, if the TLS master secret
is compromised then the MSK and EMSK are also compromised.
The MSK is divided into two halves, corresponding to the "Peer to
Authenticator Encryption Key" (Enc-RECV-Key, 32 octets) and
"Authenticator to Peer Encryption Key" (Enc-SEND-Key, 32 octets).
The IV is a 64-octet quantity that is a known value; octets 0-31 are
known as the "Peer to Authenticator IV" or RECV-IV, and octets 32-63
are known as the "Authenticator to Peer IV", or SEND-IV.
Simon, et al. Standards Track [Page 17]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
| | pre_master_secret |
server| | | client
Random| V | Random
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | | |
+---->| master_secret |<----+
| | (TMS) | |
| | | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | |
V V V
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| key_block |
| label == "key expansion" |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | |
| client | server | client | server | client | server
| MAC | MAC | write | write | IV | IV
| | | | | |
V V V V V V
Figure 1 - TLS [RFC4346] Key Hierarchy
EAP-TLS derives exported keying material and parameters as follows:
Key_Material = TLS-PRF-128(master_secret, "client EAP encryption",
client.random || server.random)
MSK = Key_Material(0,63)
EMSK = Key_Material(64,127)
IV = TLS-PRF-64("", "client EAP encryption",
client.random || server.random)
Enc-RECV-Key = MSK(0,31) = Peer to Authenticator Encryption Key
(MS-MPPE-Recv-Key in [RFC2548]). Also known as the
PMK in [IEEE-802.11].
Enc-SEND-Key = MSK(32,63) = Authenticator to Peer Encryption Key
(MS-MPPE-Send-Key in [RFC2548])
RECV-IV = IV(0,31) = Peer to Authenticator Initialization Vector
SEND-IV = IV(32,63) = Authenticator to Peer Initialization
Vector
Session-Id = 0x0D || client.random || server.random
Simon, et al. Standards Track [Page 18]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
Where:
Key_Material(W,Z) = Octets W through Z inclusive of the key material.
IV(W,Z) = Octets W through Z inclusive of the IV.
MSK(W,Z) = Octets W through Z inclusive of the MSK.
EMSK(W,Z) = Octets W through Z inclusive of the EMSK.
TLS-PRF-X = TLS PRF function computed to X octets.
client.random = Nonce generated by the TLS client.
server.random = Nonce generated by the TLS server.
| | pre_master_secret |
server| | | client
Random| V | Random
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | | |
+---->| master_secret |<----+
| | | |
| | | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | |
V V V
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| MSK, EMSK |
| label == "client EAP encryption" |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
| MSK(0,31) | MSK(32,63) | EMSK(0,63)
| | |
| | |
V V V
Figure 2 - EAP-TLS Key Hierarchy
The use of these keys is specific to the lower layer, as described in
Section 2.1 of [KEYFRAME].
2.4. Ciphersuite and Compression Negotiation
EAP-TLS implementations MUST support TLS v1.0.
EAP-TLS implementations need not necessarily support all TLS
ciphersuites listed in [RFC4346]. Not all TLS ciphersuites are
supported by available TLS tool kits, and licenses may be required in
some cases.
Simon, et al. Standards Track [Page 19]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
To ensure interoperability, EAP-TLS peers and servers MUST support
the TLS [RFC4346] mandatory-to-implement ciphersuite:
TLS_RSA_WITH_3DES_EDE_CBC_SHA
EAP-TLS peers and servers SHOULD also support and be able to
negotiate the following TLS ciphersuites:
TLS_RSA_WITH_RC4_128_SHA [RFC4346]
TLS_RSA_WITH_AES_128_CBC_SHA [RFC3268]
In addition, EAP-TLS servers SHOULD support and be able to negotiate
the following TLS ciphersuite:
TLS_RSA_WITH_RC4_128_MD5 [RFC4346]
Since TLS supports ciphersuite negotiation, peers completing the TLS
negotiation will also have selected a ciphersuite, which includes
encryption and hashing methods. Since the ciphersuite negotiated
within EAP-TLS applies only to the EAP conversation, TLS ciphersuite
negotiation MUST NOT be used to negotiate the ciphersuites used to
secure data.
TLS also supports compression as well as ciphersuite negotiation.
However, during the EAP-TLS conversation the EAP peer and server MUST
NOT request or negotiate compression.
3. Detailed Description of the EAP-TLS Protocol
3.1. EAP-TLS Request Packet
A summary of the EAP-TLS Request packet format is shown below. The
fields are transmitted from left to right.
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 | Flags | TLS Message Length
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TLS Message Length | TLS Data...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Code
1
Simon, et al. Standards Track [Page 20]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
Identifier
The Identifier field is one octet and aids in matching responses
with requests. The Identifier field MUST be changed on each
Request packet.
Length
The Length field is two octets and indicates the length of the EAP
packet including the Code, Identifier, Length, Type, and Data
fields. Octets outside the range of the Length field should be
treated as Data Link Layer padding and MUST be ignored on
reception.
Type
13 -- EAP-TLS
Flags
0 1 2 3 4 5 6 7 8
+-+-+-+-+-+-+-+-+
|L M S R R R R R|
+-+-+-+-+-+-+-+-+
L = Length included
M = More fragments
S = EAP-TLS start
R = Reserved
The L bit (length included) is set to indicate the presence of the
four-octet TLS Message Length field, and MUST be set for the first
fragment of a fragmented TLS message or set of messages. The M
bit (more fragments) is set on all but the last fragment. The S
bit (EAP-TLS start) is set in an EAP-TLS Start message. This
differentiates the EAP-TLS Start message from a fragment
acknowledgment. Implementations of this specification MUST set
the reserved bits to zero, and MUST ignore them on reception.
TLS Message Length
The TLS Message Length field is four octets, and is present only
if the L bit is set. This field provides the total length of the
TLS message or set of messages that is being fragmented.
Simon, et al. Standards Track [Page 21]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
TLS data
The TLS data consists of the encapsulated TLS packet in TLS record
format.
3.2. EAP-TLS Response Packet
A summary of the EAP-TLS Response packet format is shown below.
The fields are transmitted from left to right.
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 | Flags | TLS Message Length
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TLS Message Length | TLS Data...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Code
2
Identifier
The Identifier field is one octet and MUST match the Identifier
field from the corresponding request.
Length
The Length field is two octets and indicates the length of the EAP
packet including the Code, Identifier, Length, Type, and Data
fields. Octets outside the range of the Length field should be
treated as Data Link Layer padding and MUST be ignored on
reception.
Type
13 -- EAP-TLS
Simon, et al. Standards Track [Page 22]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
Flags
0 1 2 3 4 5 6 7 8
+-+-+-+-+-+-+-+-+
|L M R R R R R R|
+-+-+-+-+-+-+-+-+
L = Length included
M = More fragments
R = Reserved
The L bit (length included) is set to indicate the presence of the
four-octet TLS Message Length field, and MUST be set for the first
fragment of a fragmented TLS message or set of messages. The M
bit (more fragments) is set on all but the last fragment.
Implementations of this specification MUST set the reserved bits
to zero, and MUST ignore them on reception.
TLS Message Length
The TLS Message Length field is four octets, and is present only
if the L bit is set. This field provides the total length of the
TLS message or set of messages that is being fragmented.
TLS data
The TLS data consists of the encapsulated TLS packet in TLS record
format.
4. IANA Considerations
IANA has allocated EAP Type 13 for EAP-TLS. The allocation has been
updated to reference this document.
Simon, et al. Standards Track [Page 23]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
5. Security Considerations
5.1. Security Claims
EAP security claims are defined in Section 7.2.1 of [RFC3748]. The
security claims for EAP-TLS are as follows:
Auth. mechanism: Certificates
Ciphersuite negotiation: Yes [4]
Mutual authentication: Yes [1]
Integrity protection: Yes [1]
Replay protection: Yes [1]
Confidentiality: Yes [2]
Key derivation: Yes
Key strength: [3]
Dictionary attack prot.: Yes
Fast reconnect: Yes
Crypt. binding: N/A
Session independence: Yes [1]
Fragmentation: Yes
Channel binding: No
Notes
-----
[1] A formal proof of the security of EAP-TLS when used with
[IEEE-802.11] is provided in [He]. This proof relies on the
assumption that the private key pairs used by the EAP peer and server
are not shared with other parties or applications. For example, a
backend authentication server supporting EAP-TLS SHOULD NOT utilize
the same certificate with https.
[2] Privacy is an optional feature described in Section 2.1.4.
[3] Section 5 of BCP 86 [RFC3766] offers advice on the required RSA
or Diffie-Hellman (DH) module and Digital Signature Algorithm (DSA)
subgroup size in bits, for a given level of attack resistance in
bits. For example, a 2048-bit RSA key is recommended to provide
128-bit equivalent key strength. The National Institute of Standards
and Technology (NIST) also offers advice on appropriate key sizes in
[SP800-57].
[4] EAP-TLS inherits the secure ciphersuite negotiation features of
TLS, including key derivation function negotiation when utilized with
TLS v1.2 [RFC4346bis].
Simon, et al. Standards Track [Page 24]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
5.2. Peer and Server Identities
The EAP-TLS peer name (Peer-Id) represents the identity to be used
for access control and accounting purposes. The Server-Id represents
the identity of the EAP server. Together the Peer-Id and Server-Id
name the entities involved in deriving the MSK/EMSK.
In EAP-TLS, the Peer-Id and Server-Id are determined from the subject
or subjectAltName fields in the peer and server certificates. For
details, see Section 4.1.2.6 of [RFC3280]. Where the subjectAltName
field is present in the peer or server certificate, the Peer-Id or
Server-Id MUST be set to the contents of the subjectAltName. If
subject naming information is present only in the subjectAltName
extension of a peer or server certificate, then the subject field
MUST be an empty sequence and the subjectAltName extension MUST be
critical.
Where the peer identity represents a host, a subjectAltName of type
dnsName SHOULD be present in the peer certificate. Where the peer
identity represents a user and not a resource, a subjectAltName of
type rfc822Name SHOULD be used, conforming to the grammar for the
Network Access Identifier (NAI) defined in Section 2.1 of [RFC4282].
If a dnsName or rfc822Name are not available, other field types (for
example, a subjectAltName of type ipAddress or
uniformResourceIdentifier) MAY be used.
A server identity will typically represent a host, not a user or a
resource. As a result, a subjectAltName of type dnsName SHOULD be
present in the server certificate. If a dnsName is not available
other field types (for example, a subjectAltName of type ipAddress or
uniformResourceIdentifier) MAY be used.
Conforming implementations generating new certificates with Network
Access Identifiers (NAIs) MUST use the rfc822Name in the subject
alternative name field to describe such identities. The use of the
subject name field to contain an emailAddress Relative Distinguished
Name (RDN) is deprecated, and MUST NOT be used. The subject name
field MAY contain other RDNs for representing the subject's identity.
Where it is non-empty, the subject name field MUST contain an X.500
distinguished name (DN). If subject naming information is present
only in the subject name field of a peer certificate and the peer
identity represents a host or device, the subject name field SHOULD
contain a CommonName (CN) RDN or serialNumber RDN. If subject naming
information is present only in the subject name field of a server
certificate, then the subject name field SHOULD contain a CN RDN or
serialNumber RDN.
Simon, et al. Standards Track [Page 25]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
It is possible for more than one subjectAltName field to be present
in a peer or server certificate in addition to an empty or non-empty
subject distinguished name. EAP-TLS implementations supporting
export of the Peer-Id and Server-Id SHOULD export all the
subjectAltName fields within Peer-Ids or Server-Ids, and SHOULD also
export a non-empty subject distinguished name field within the Peer-
Ids or Server-Ids. All of the exported Peer-Ids and Server-Ids are
considered valid.
EAP-TLS implementations supporting export of the Peer-Id and Server-
Id SHOULD export Peer-Ids and Server-Ids in the same order in which
they appear within the certificate. Such canonical ordering would
aid in comparison operations and would enable using those identifiers
for key derivation if that is deemed useful. However, the ordering
of fields within the certificate SHOULD NOT be used for access
control.
5.3. Certificate Validation
Since the EAP-TLS server is typically connected to the Internet, it
SHOULD support validating the peer certificate using RFC 3280
[RFC3280] compliant path validation, including the ability to
retrieve intermediate certificates that may be necessary to validate
the peer certificate. For details, see Section 4.2.2.1 of [RFC3280].
Where the EAP-TLS server is unable to retrieve intermediate
certificates, either it will need to be pre-configured with the
necessary intermediate certificates to complete path validation or it
will rely on the EAP-TLS peer to provide this information as part of
the TLS handshake (see Section 7.4.6 of [RFC4346]).
In contrast to the EAP-TLS server, the EAP-TLS peer may not have
Internet connectivity. Therefore, the EAP-TLS server SHOULD provide
its entire certificate chain minus the root to facilitate certificate
validation by the peer. The EAP-TLS peer SHOULD support validating
the server certificate using RFC 3280 [RFC3280] compliant path
validation.
Once a TLS session is established, EAP-TLS peer and server
implementations MUST validate that the identities represented in the
certificate are appropriate and authorized for use with EAP-TLS. The
authorization process makes use of the contents of the certificates
as well as other contextual information. While authorization
requirements will vary from deployment to deployment, it is
RECOMMENDED that implementations be able to authorize based on the
EAP-TLS Peer-Id and Server-Id determined as described in Section 5.2.
Simon, et al. Standards Track [Page 26]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
In the case of the EAP-TLS peer, this involves ensuring that the
certificate presented by the EAP-TLS server was intended to be used
as a server certificate. Implementations SHOULD use the Extended Key
Usage (see Section 4.2.1.13 of [RFC3280]) extension and ensure that
at least one of the following is true:
1) The certificate issuer included no Extended Key Usage identifiers
in the certificate.
2) The issuer included the anyExtendedKeyUsage identifier in the
certificate (see Section 4.2.1.13 of [RFC3280]).
3) The issuer included the id-kp-serverAuth identifier in the
certificate (see Section 4.2.1.13 [RFC3280]).
When performing this comparison, implementations MUST follow the
validation rules specified in Section 3.1 of [RFC2818]. In the case
of the server, this involves ensuring the certificate presented by
the EAP-TLS peer was intended to be used as a client certificate.
Implementations SHOULD use the Extended Key Usage (see Section
4.2.1.13 [RFC3280]) extension and ensure that at least one of the
following is true:
1) The certificate issuer included no Extended Key Usage identifiers
in the certificate.
2) The issuer included the anyExtendedKeyUsage identifier in the
certificate (see Section 4.2.1.13 of [RFC3280]).
3) The issuer included the id-kp-clientAuth identifier in the
certificate (see Section 4.2.1.13 of [RFC3280]).
5.4. Certificate Revocation
Certificates are long-lived assertions of identity. Therefore, it is
important for EAP-TLS implementations to be capable of checking
whether these assertions have been revoked.
EAP-TLS peer and server implementations MUST support the use of
Certificate Revocation Lists (CRLs); for details, see Section 3.3 of
[RFC3280]. EAP-TLS peer and server implementations SHOULD also
support the Online Certificate Status Protocol (OCSP), described in
"X.509 Internet Public Key Infrastructure Online Certificate Status
Protocol - OCSP" [RFC2560]. OCSP messages are typically much smaller
than CRLs, which can shorten connection times especially in
bandwidth-constrained environments. While EAP-TLS servers are
typically connected to the Internet during the EAP conversation, an
EAP-TLS peer may not have Internet connectivity until authentication
completes.
Simon, et al. Standards Track [Page 27]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
In the case where the peer is initiating a voluntary Layer 2 tunnel
using PPTP [RFC2637] or L2TP [RFC2661], the peer will typically
already have a PPP interface and Internet connectivity established at
the time of tunnel initiation.
However, in the case where the EAP-TLS peer is attempting to obtain
network access, it will not have network connectivity and is
therefore not capable of checking for certificate revocation until
after authentication completes and network connectivity is available.
For this reason, EAP-TLS peers and servers SHOULD implement
Certificate Status Request messages, as described in "Transport Layer
Security (TLS) Extensions", Section 3.6 of [RFC4366]. To enable
revocation checking in situations where servers do not support
Certificate Status Request messages and network connectivity is not
available prior to authentication completion, peer implementations
MUST also support checking for certificate revocation after
authentication completes and network connectivity is available, and
they SHOULD utilize this capability by default.
5.5. Packet Modification Attacks
The integrity protection of EAP-TLS packets does not extend to the
EAP header fields (Code, Identifier, Length) or the Type or Flags
fields. As a result, these fields can be modified by an attacker.
In most cases, modification of the Code or Identifier fields will
only result in a denial-of-service attack. However, an attacker can
add additional data to an EAP-TLS packet so as to cause it to be
longer than implied by the Length field. EAP peers, authenticators,
or servers that do not check for this could be vulnerable to a buffer
overrun.
It is also possible for an attacker to modify the Type or Flags
fields. By modifying the Type field, an attacker could cause one
TLS-based EAP method to be negotiated instead of another. For
example, the EAP-TLS Type field (13) could be changed to indicate
another TLS-based EAP method. Unless the alternative TLS-based EAP
method utilizes a different key derivation formula, it is possible
that an EAP method conversation altered by a man-in-the-middle could
run all the way to completion without detection. Unless the
ciphersuite selection policies are identical for all TLS-based EAP
methods utilizing the same key derivation formula, it may be possible
for an attacker to mount a successful downgrade attack, causing the
peer to utilize an inferior ciphersuite or TLS-based EAP method.
Simon, et al. Standards Track [Page 28]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
6. References
6.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2560] Myers, M., Ankney, R., Malpani, A., Galperin, S., and
C. Adams, "X.509 Internet Public Key Infrastructure
Online Certificate Status Protocol - OCSP", RFC 2560,
June 1999.
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
[RFC3268] Chown, P., "Advanced Encryption Standard (AES)
Ciphersuites for Transport Layer Security (TLS)", RFC
3268, June 2002.
[RFC3280] Housley, R., Polk, W., Ford, W., and D. Solo,
"Internet X.509 Public Key Infrastructure Certificate
and Certificate Revocation List (CRL) Profile", RFC
3280, April 2002.
[RFC3748] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and
H. Levkowetz, Ed., "Extensible Authentication Protocol
(EAP)", RFC 3748, June 2004.
[RFC4282] Aboba, B., Beadles, M., Arkko, J., and P. Eronen, "The
Network Access Identifier", RFC 4282, December 2005.
[RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer
Security (TLS) Protocol Version 1.1", RFC 4346, April
2006.
[RFC4366] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen,
J., and T. Wright, "Transport Layer Security (TLS)
Extensions", RFC 4366, April 2006.
6.2. Informative References
[IEEE-802.1X] Institute of Electrical and Electronics Engineers,
"Local and Metropolitan Area Networks: Port-Based
Network Access Control", IEEE Standard 802.1X-2004,
December 2004.
Simon, et al. Standards Track [Page 29]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
[IEEE-802.11] 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 Std.
802.11-2007, 2007.
[IEEE-802.16e] Institute of Electrical and Electronics Engineers,
"IEEE Standard for Local and Metropolitan Area
Networks: Part 16: Air Interface for Fixed and Mobile
Broadband Wireless Access Systems: Amendment for
Physical and Medium Access Control Layers for Combined
Fixed and Mobile Operations in Licensed Bands", IEEE
802.16e, August 2005.
[He] He, C., Sundararajan, M., Datta, A., Derek, A. and J.
Mitchell, "A Modular Correctness Proof of IEEE 802.11i
and TLS", CCS '05, November 7-11, 2005, Alexandria,
Virginia, USA
[KEYFRAME] Aboba, B., Simon, D. and P. Eronen, "Extensible
Authentication Protocol (EAP) Key Management
Framework", Work in Progress, November 2007.
[RFC1661] Simpson, W., Ed., "The Point-to-Point Protocol (PPP)",
STD 51, RFC 1661, July 1994.
[RFC2548] Zorn, G., "Microsoft Vendor-specific RADIUS
Attributes", RFC 2548, March 1999.
[RFC2637] Hamzeh, K., Pall, G., Verthein, W., Taarud, J.,
Little, W., and G. Zorn, "Point-to-Point Tunneling
Protocol (PPTP)", RFC 2637, July 1999.
[RFC2661] Townsley, W., Valencia, A., Rubens, A., Pall, G.,
Zorn, G., and B. Palter, "Layer Two Tunneling Protocol
"L2TP"", RFC 2661, August 1999.
[RFC2716] Aboba, B. and D. Simon, "PPP EAP TLS Authentication
Protocol", RFC 2716, October 1999.
[RFC3766] Orman, H. and P. Hoffman, "Determining Strengths For
Public Keys Used For Exchanging Symmetric Keys", BCP
86, RFC 3766, April 2004.
[RFC4017] Stanley, D., Walker, J., and B. Aboba, "Extensible
Authentication Protocol (EAP) Method Requirements for
Wireless LANs", RFC 4017, March 2005.
Simon, et al. Standards Track [Page 30]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
[RFC4284] Adrangi, F., Lortz, V., Bari, F., and P. Eronen,
"Identity Selection Hints for the Extensible
Authentication Protocol (EAP)", RFC 4284, January
2006.
[SP800-57] National Institute of Standards and Technology,
"Recommendation for Key Management", Special
Publication 800-57, May 2006.
[RFC4346bis] Dierks, T. and E. Rescorla, "The TLS Protocol Version
1.2", Work in Progress, February 2008.
[UNAUTH] Schulzrinne. H., McCann, S., Bajko, G. and H.
Tschofenig, "Extensions to the Emergency Services
Architecture for dealing with Unauthenticated and
Unauthorized Devices", Work in Progress, November
2007.
Acknowledgments
Thanks to Terence Spies, Mudit Goel, Anthony Leibovitz, and Narendra
Gidwani of Microsoft, Glen Zorn of NetCube, Joe Salowey of Cisco, and
Pasi Eronen of Nokia for useful discussions of this problem space.
Simon, et al. Standards Track [Page 31]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
Appendix A -- Changes from RFC 2716
This appendix lists the major changes between [RFC2716] and this
document. Minor changes, including style, grammar, spelling, and
editorial changes, are not mentioned here.
o As EAP is now in use with a variety of lower layers, not just PPP
for which it was first designed, mention of PPP is restricted to
situations relating to PPP-specific behavior and reference is made
to other lower layers such as IEEE 802.11, IEEE 802.16, etc.
o The document now cites TLS v1.1 as a normative reference (Sections
1 and 6.1).
o The terminology section has been updated to reflect definitions
from [RFC3748] (Section 1.2), and the EAP Key Management Framework
[KEYFRAME] (Section 1.2).
o Use for peer unauthenticated access is clarified (Section 2.1.1).
o Privacy is supported as an optional feature (Section 2.1.4).
o It is no longer recommended that the identity presented in the
EAP-Response/Identity be compared to the identity provided in the
peer certificate (Section 2.2).
o The EAP-TLS key hierarchy is defined, using terminology from
[RFC3748]. This includes formulas for the computation of TEKs as
well as the MSK, EMSK, IV, and Session-Id (Section 2.3).
o Mandatory and recommended TLS ciphersuites are provided. The use
of TLS ciphersuite negotiation for determining the lower layer
ciphersuite is prohibited (Section 2.4).
o The Start bit is not set within an EAP-Response packet (Section
3.2).
o A section on security claims has been added and advice on key
strength is provided (Section 5.1).
o The Peer-Id and Server-Id are defined (Section 5.2), and
requirements for certificate validation (Section 5.3) and
revocation (Section 5.4) are provided.
o Packet modification attacks are described (Section 5.5).
Simon, et al. Standards Track [Page 32]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
o The examples have been updated to reflect typical messages sent in
the described scenarios. For example, where mutual authentication
is performed, the EAP-TLS server is shown to request a client
certificate and the peer is shown to provide a certificate_verify
message. A privacy example is provided, and two faulty examples
of session resume failure were removed.
Authors' Addresses
Dan Simon
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052-6399
Phone: +1 425 882 8080
Fax: +1 425 936 7329
EMail: dansimon@microsoft.com
Bernard Aboba
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052-6399
Phone: +1 425 706 6605
Fax: +1 425 936 7329
EMail: bernarda@microsoft.com
Ryan Hurst
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052-6399
Phone: +1 425 882 8080
Fax: +1 425 936 7329
EMail: rmh@microsoft.com
Simon, et al. Standards Track [Page 33]
^L
RFC 5216 EAP-TLS Authentication Protocol March 2008
Full Copyright Statement
Copyright (C) The IETF Trust (2008).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, 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 BCP 78 and BCP 79.
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
http://www.ietf.org/ipr.
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.
Simon, et al. Standards Track [Page 34]
^L
|