summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc6631.txt
blob: 31ece75eb0254a1b1e85e2e0faa1157d2128f41f (plain) (blame)
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
Internet Engineering Task Force (IETF)                        D. Kuegler
Request for Comments: 6631                                           BSI
Category: Experimental                                        Y. Sheffer
ISSN: 2070-1721                                                 Porticor
                                                               June 2012


            Password Authenticated Connection Establishment
       with the Internet Key Exchange Protocol version 2 (IKEv2)

Abstract

   The Internet Key Exchange protocol version 2 (IKEv2) does not allow
   secure peer authentication when using short credential strings, i.e.,
   passwords.  Several proposals have been made to integrate password-
   authentication protocols into IKE.  This document provides an
   adaptation of Password Authenticated Connection Establishment (PACE)
   to the setting of IKEv2 and demonstrates the advantages of this
   integration.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for examination, experimental implementation, and
   evaluation.

   This document defines an Experimental Protocol for the Internet
   community.  This document is a product of the Internet Engineering
   Task Force (IETF).  It represents the consensus of the IETF
   community.  It has received public review and has been approved for
   publication by the Internet Engineering Steering Group (IESG).  Not
   all documents approved by the IESG are a candidate for any level of
   Internet Standard; see Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc6631.














Kuegler & Sheffer             Experimental                      [Page 1]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


Copyright Notice

   Copyright (c) 2012 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1. Introduction ....................................................3
      1.1. Terminology ................................................4
   2. Overview ........................................................5
   3. Protocol Sequence ...............................................6
      3.1. The IKE_SA_INIT Exchange ...................................6
      3.2. The IKE_AUTH Exchange, Round #1 ............................7
      3.3. The IKE_AUTH Exchange, Round #2 ............................7
      3.4. Public Key Validation ......................................8
      3.5. Creating a Long-Term Shared Secret .........................9
      3.6. Using the Long-Term Shared Secret .........................11
   4. Encrypting and Mapping the Nonce ...............................11
      4.1. Encrypting the Nonce ......................................11
      4.2. Mapping the Nonce .........................................12
           4.2.1. Modular Diffie-Hellman .............................13
           4.2.2. Elliptic Curve Diffie-Hellman ......................13
   5. Protocol Details ...............................................13
      5.1. Password Processing .......................................13
      5.2. The SECURE_PASSWORD_METHODS Notification ..................14
      5.3. The PSK_PERSIST Notification ..............................15
      5.4. The PSK_CONFIRM Notification ..............................15
      5.5. The GSPM(ENONCE) Payload ..................................15
      5.6. The KE (KEi2/KEr2) Payloads in PACE .......................16
      5.7. PACE and Session Resumption ...............................16
   6. Security Considerations ........................................16
      6.1. Credential Security Assumptions ...........................16
      6.2. Vulnerability to Passive and Active Attacks ...............16
      6.3. Perfect Forward Secrecy ...................................17
      6.4. Randomness ................................................17
      6.5. Identity Protection .......................................17
      6.6. Denial of Service .........................................17




Kuegler & Sheffer             Experimental                      [Page 2]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


      6.7. Choice of Encryption Algorithms ...........................17
      6.8. Security Model and Security Proof .........................18
      6.9. Long-Term Credential Storage ..............................18
   7. IANA Considerations ............................................19
   8. Acknowledgments ................................................19
   9. References .....................................................19
      9.1. Normative References ......................................19
      9.2. Informative References ....................................20
   Appendix A. Protocol Selection Criteria ...........................22
     A.1. Security Criteria ..........................................22
     A.2. Intellectual Property Criteria .............................22
     A.3. Miscellaneous Criteria .....................................22
   Appendix B. Password Salting ......................................23
     B.1. Solving the Asymmetric Case with Symmetric Cryptography ....24
     B.2. Solving the Fully Symmetric Case with Asymmetric
          Cryptography ...............................................25
     B.3. Generation of a Strong, Long-Term, Shared Secret ...........26

1.  Introduction

   PACE [TR03110] is a security protocol that establishes a mutually
   authenticated (and encrypted) channel between two parties based on
   weak (short) passwords.  PACE provides strong session keys that are
   independent of the strength of the password.  PACE belongs to a
   family of protocols often referred to as Zero-Knowledge Password
   Proof (ZKPP) protocols, all of which amplify weak passwords into
   strong session keys.  This document describes the integration of PACE
   into IKEv2 [RFC5996] as a new authentication mode, analogous to the
   existing certificate and Pre-Shared Key (PSK) authentication modes.

   Some of the advantages of our approach, compared to the existing
   IKEv2, include the following:

   o  The current best practice to implement password authentication in
      IKE involves certificate-based authentication of the server plus
      some Extensible Authentication Protocol (EAP) method to
      authenticate the client.  This involves two non-trivial
      infrastructure components (PKI and EAP/AAA).  Moreover,
      certificate authentication is hard to get right and often depends
      on unreliable user behavior for its security.

   o  Alternatively, native IKEv2 shared secret authentication can be
      used with passwords.  However, this usage is insecure;
      specifically, it is vulnerable to active attackers.







Kuegler & Sheffer             Experimental                      [Page 3]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


   o  Some newer EAP methods can be used for mutual authentication and,
      combined with [RFC5998], can be well integrated into IKEv2.  This
      is certainly an option in some cases, but the current proposal may
      be simpler to implement.

   Compared to other protocols aiming at similar goals, PACE has several
   advantages.  PACE was designed to allow for a high level of
   flexibility with respect to cryptographic algorithms; e.g., it can be
   implemented based on Modular Diffie-Hellman as well as Elliptic Curve
   Diffie-Hellman without any restrictions on the mathematical group to
   be used, other than the requirement that the group be
   cryptographically secure.  The protocol itself is also proven to be
   cryptographically secure [PACEsec].  The PACE protocol is currently
   used in an international standard for digital travel documents
   [ICAO].

   The integration aims at keeping IKEv2 unchanged as much as possible;
   e.g., the mechanisms used to establish Child security associations
   (SAs) as provided by IKEv2 would be maintained with no change.

   The Password-Authenticated Key Exchange (PAKE) framework document
   [RFC6467] defines a set of payloads for different types of PAKE
   methods within IKEv2.  This document reuses this framework.  Note
   that the current document is self-contained; i.e., all relevant
   payloads and semantics are redefined here.

1.1.  Terminology

   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].

   The following notation is used in this document:

      E()      Symmetric encryption
      D()      Symmetric decryption
      KA()     Key agreement
      Map()    Mapping function
      Pwd      Shared password
      SPwd     Stored password
      KPwd     Symmetric key derived from a password Pwd
      G        Static group generator
      GE       Ephemeral group generator
      ENONCE   Encrypted nonce
      PKEi     Ephemeral public key of the initiator
      SKEi     Ephemeral secret key of the initiator





Kuegler & Sheffer             Experimental                      [Page 4]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


      PKEr     Ephemeral public key of the responder
      SKEr     Ephemeral secret key of the responder
      AUTH     Authentication payload

   Any other notation used here is defined in [RFC5996].

2.  Overview

   At a high level, the following steps are performed by the initiator
   and the responder.  They result in a two-round IKE_AUTH exchange,
   described in Section 3 below.

   1.  The initiator randomly and uniformly chooses a nonce s, encrypts
       the nonce using the password, and sends the ciphertext

          ENONCE = E(KPwd, s)

       to the responder.  The responder recovers the plaintext nonce s
       with the help of the shared password Pwd.

   2.  The nonce s is mapped to an ephemeral generator

          GE = G^s * SASharedSecret,

       where G is the generator of the selected Modular Exponential
       (MODP) group and SASharedSecret is a shared secret that has been
       generated in the IKE_SA_INIT step.

   3.  Both the initiator and the responder each calculate an ephemeral
       key pair

          (SKEi, PKEi = GE^SKEi) and (SKEr, PKEr=GE^SKEr),

       respectively, based on the ephemeral generator GE, and exchange
       the public keys.

   4.  Finally, they compute the shared secret

          PACESharedSecret = PKEi^SKEr = PKEr^SKEi

       and generate, exchange, and verify the IKE authentication token
       AUTH using the shared secret PACESharedSecret.

   The encryption function E() must be carefully chosen to prevent
   dictionary attacks that would otherwise allow an attacker to recover
   the password.  Those restrictions are described in Section 4.1.
   Details on the mapping function, including the elliptic curve
   variant, can be found in Section 4.2.



Kuegler & Sheffer             Experimental                      [Page 5]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


   To avoid the risks inherent in storing a short password (e.g., the
   fact that passwords are often reused for different applications),
   this protocol allows the peers to jointly convert the password into a
   cryptographically stronger shared secret.  This shared secret can
   then be stored by both peers, in lieu of the original password or its
   salted variants.

3.  Protocol Sequence

   The protocol consists of three round trips -- an IKE_SA_INIT exchange
   and a 2-round IKE_AUTH exchange -- as shown in the next figure.  An
   optional Informational exchange may follow (see Section 3.5).

     Initiator                      Responder
     ---------                      ---------

     IKE_SA_INIT:

     HDR, SAi1, KEi, Ni, N(SECURE_PASSWORD_METHODS)  ->

                      <- HDR, SAr1, KEr, Nr, N(SECURE_PASSWORD_METHODS)

     IKE_AUTH round #1:

     HDR, SK{IDi, [IDr,], SAi2,
             TSi, TSr, GSPM(ENONCE), KEi2} ->

                                                  <- HDR, SK{IDr, KEr2}

     IKE_AUTH round #2:

     HDR, SK{AUTH [, N(PSK_PERSIST)] } ->

                   <- HDR, SK{AUTH, SAr2, TSi, TSr [, N(PSK_PERSIST)] }

                     Figure 1: IKE SA Setup with PACE

3.1.  The IKE_SA_INIT Exchange

   The initiator sends a SECURE_PASSWORD_METHODS notification that
   indicates its support of this extension and its wish to authenticate
   using a password.  The following text assumes that the responder sent
   back a SECURE_PASSWORD_METHODS notification that indicates its
   preference for PACE.







Kuegler & Sheffer             Experimental                      [Page 6]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


   If PACE was chosen, the algorithms negotiated in SAi1 and SAr1 are
   also used for the execution of PACE, i.e., the key agreement protocol
   (Modular Diffie-Hellman or Elliptic Curve Diffie-Hellman), the group
   to be used, and the encryption algorithm.

3.2.  The IKE_AUTH Exchange, Round #1

   This is the first part of the PACE authentication of the peers.  This
   exchange MUST NOT be used unless both peers indicated support of this
   protocol.

   The initiator selects a random nonce s and encrypts it to form ENONCE
   using the password Pwd, as described in Section 4.1.  Then, the
   initiator maps the nonce to an ephemeral generator GE of the group as
   described in Section 4.2, chooses randomly and uniformly an ephemeral
   key pair (SKEi,PKEi) based on the ephemeral generator, and finally
   generates the payloads GSPM(ENONCE) containing the encrypted nonce
   and KEi2 containing the ephemeral public key.

   The responder decrypts the received encrypted nonce s = D(KPwd,
   ENONCE), performs the mapping, and randomly and uniformly chooses an
   ephemeral key pair (SKEr,PKEr) based on the ephemeral generator GE.
   The responder generates the KEr2 payload containing the ephemeral
   public key.

   The request is equivalent to the IKE_AUTH request in a normal IKEv2
   exchange; i.e., any payload that is valid in an IKE_AUTH request is
   valid (with the same semantics) in this round's request.  In
   particular, certificate-related payloads are allowed, even though
   their use may not be practical within this mode.

3.3.  The IKE_AUTH Exchange, Round #2

   This is the second part of the PACE authentication of the peers.

   The initiator and the responder calculate the shared secret
   PACESharedSecret

      PACESharedSecret = KA(SKEi, PKEr, GE) = KA(SKEr, PKEi, GE),

   where KA denotes the Diffie-Hellman key agreement, e.g., (for MODP
   groups), modular exponentiation.  Then, they calculate the
   authentication tokens AUTHi and AUTHr.

   The initiator calculates

      AUTHi = prf(prf+(Ni | Nr, PACESharedSecret),
      <InitiatorSignedOctets> | PKEr)



Kuegler & Sheffer             Experimental                      [Page 7]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


   See Section 2.15 of [RFC5996] for the definition of signed octets.

   The responder calculates

      AUTHr = prf(prf+(Ni | Nr, PACESharedSecret),
      <ResponderSignedOctets> | PKEi)

   Both AUTH payloads MUST indicate as their authentication method the
   Generic Secure Password Authentication Method [RFC6467], whose value
   is 12.  The authentication tokens are exchanged, and each of them
   MUST be verified by the other party.  The behavior when this
   verification fails is unchanged from [RFC5996].

   Each of the peers MAY generate a long-term credential at this point,
   after it has verified the opposite peer's identity.  The shared
   secret is

      LongTermSecret = prf(Ni | Nr, "PACE Generated PSK" |
      PACESharedSecret),

   where the literal string is ASCII-encoded, with no zero terminator.
   The generated secret MUST be persisted to stable memory before
   sending the response.  See Section 3.5 for more details about this
   facility.

   This round's response is equivalent to the IKE_AUTH response in a
   normal IKEv2 exchange; i.e., any payload that is valid in an IKE_AUTH
   response is valid (with the same semantics) in the second round's
   response.

   Following authentication, all temporary values MUST be deleted by the
   peers, including in particular s, the ephemeral generator, the
   ephemeral key pairs, and PACESharedSecret.

3.4.  Public Key Validation

   The security of the protocol relies on the entanglement of a weak
   password with cryptographically strong shared secrets, SASharedSecret
   and PACESharedSecret, mutually and randomly generated by the
   initiator and the responder.  If an attacker can influence the
   randomness of those shared secrets, the confidentiality of the
   password may be directly affected.

   Implementations MUST therefore verify that the shared secrets
   SASharedSecret and PACESharedSecret are random elements of the group
   generated by G to prevent small subgroup attacks.  This can be
   achieved by a validation of the public keys (i.e., KEi, PKEi, and
   KEr, PKEr).



Kuegler & Sheffer             Experimental                      [Page 8]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


   First of all, each party MUST check that the public keys PKEi, PKEr,
   KEi, and KEr differ.  Otherwise, it MUST abort the protocol.

   For each received public key PK, the following tests SHOULD be
   performed.  Any failure in the validation MUST be interpreted as an
   attack, and the protocol SHALL be aborted.

   o  Verify that PK is an element of the Diffie-Hellman Group.

      *  For Modular Diffie-Hellman, check that PK lies within the
         interval [2,p-2].

      *  For Elliptic Curve Diffie-Hellman, check that PK is a point on
         the Elliptic Curve and not the point at infinity.

   o  Verify that PK is an element of the cryptographic subgroup of
      order q.

      *  For Modular Diffie-Hellman, check that PK^q = 1 (mod p).

      *  For Elliptic Curve Diffie-Hellman, check that q * PK = 0.

   Note that for most of the MODP groups, the order q = (p-1)/2.  This
   applies in particular to the standard groups #2, #5, and #14,
   commonly used in IKE.  For ECP and MODP groups not based on safe
   primes, the order q is explictly stated in the parameters.

   As an alternative to the public key validation, the compatible
   cofactor exponentiation/multiplication may be used, which is often
   more efficient but requires changes to the implementation of the key
   agreement.  Details on the implementation can be found in [RFC2785]
   and in [TR03111] for Modular Diffie-Hellman and Elliptic Curve
   Diffie-Hellman, respectively.

3.5.  Creating a Long-Term Shared Secret

   To reduce the time that the peers store a hashed password, it is
   RECOMMENDED that the password be replaced by a dedicated shared
   secret, according to the method described in this section.  See
   Appendix B for more discussion of the security threats involved.

   Both peers generate the value LongTermSecret during round #2 of
   IKE_AUTH, as shown above.  Later on, they exchange a PERSIST_PSK
   notification.  Assume that both peers support this mechanism (e.g.,
   the IKE implementation is able to modify its own credential store).
   Then, each of the peers, when receiving the notification, permanently





Kuegler & Sheffer             Experimental                      [Page 9]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


   deletes the stored password and replaces it with LongTermSecret.
   These credentials are stored in the Peer Authorization Database (PAD)
   [RFC4301] and are associated with the identity of the opposite peer.

   This solution is designed as a two-phase commitment, so that failure
   at any time cannot result in the peers not having any shared secret.

     Initiator                      Responder
     ---------                      ---------

     IKE_AUTH round #2:

     HDR, SK{..., N(PSK_PERSIST)} ---------->
                                 Responder computes and stores PSK

                           <------- HDR, SK{..., N(PSK_PERSIST)}

     Initiator computes and stores PSK

     HDR, SK{N(PSK_CONFIRM)} -------------->

                                 Responder deletes the short password

                           <-------------- HDR, SK{N(PSK_CONFIRM)}

     Initiator deletes the short password

            Figure 2: IKE SA Setup with PACE and PSK Generation

   In the second round of IKE_AUTH, the initiator MAY send a PSK_PERSIST
   notification if it wishes to use this mechanism.  If the responder
   agrees, and only after it has authenticated the initiator, it MUST
   generate a new PSK, save it to stable storage (e.g., to disk), and
   MUST respond with a PSK_PERSIST notification.  Otherwise, it simply
   does not include the notification in its reply.  When receiving the
   reply, and after authenticating the responder, the initiator MUST
   also generate the PSK and save it in stable storage.

   If the peers have negotiated this mechanism, the initiator MUST send
   the PSK_CONFIRM notification in an Informational exchange shortly
   after the IKE SA has been set up.  When the responder receives it, it
   MUST delete the stored short password from its credential database
   and respond with a PSK_CONFIRM notification.  Upon receiving this
   notification, the initiator deletes its copy of the short password.

   If not saved to persistent storage, the LongTermSecret MUST be
   deleted when the IKE SA is rekeyed or when it is torn down.  It
   SHOULD be deleted 1 hour after the initial IKE SA has been set up.



Kuegler & Sheffer             Experimental                     [Page 10]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


3.6.  Using the Long-Term Shared Secret

   The LongTermSecret MUST be used as a regular IKE Pre-Shared Key
   (PSK), rather than with PACE or any other password-based
   authentication method.

   Normally, at the completion of this protocol, both peers will have
   either a shared password or a shared PSK.  The protocol is designed
   so that the peers will have a shared credential, regardless of any
   protocol failures.  However, in some failure cases, the initiator may
   find itself with both a short password and a PSK for a particular
   peer.  In that case, it MUST first try to authenticate with a
   password and, upon success, MUST attempt to convert it to a PSK.  If
   password authentication fails, it MUST use the PSK and upon
   successful setup of the IKE SA MUST permanently delete the password.

4.  Encrypting and Mapping the Nonce

4.1.  Encrypting the Nonce

   The shared password is not used as is.  Instead, it SHOULD be
   converted into a "stored password" SPwd, so that the plaintext
   password does not need to be stored for long periods.  SPwd is
   defined as

      SPwd = prf("IKE with PACE", Pwd),

   where the literal string consists of ASCII characters with no zero
   terminator.  If the negotiated pseudorandom function (prf) requires a
   fixed-size key, the literal string is either truncated or padded with
   zero octets on the right, as needed.  Multiple copies of SPwd MAY be
   stored, if the prf function is not known in advance.

      KPwd = prf+(Ni | Nr, SPwd),

   where Ni and Nr are the regular IKE nonces, stripped of any headers.
   If the negotiated prf takes a fixed-length key and the lengths of Ni
   and Nr do not add up to that length, half the bits must come from Ni
   and half from Nr, taking the first bits of each.  "prf+" is defined
   in Section 2.13 of [RFC5996].  The length of KPwd is determined by
   the key length of the negotiated encryption algorithm.

   A nonce s is randomly selected by the initiator (see Section 6.4 for
   additional considerations).  The length of s MUST be exactly
   32 octets.






Kuegler & Sheffer             Experimental                     [Page 11]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


   KPwd is now used with the encryption transform to encrypt the nonce:

      ENONCE = E(KPwd, s)

   If an Initialization Vector (IV) is required by the cipher, it MUST
   be included in the GSPM(ENONCE) payload.  It is RECOMMENDED that the
   IV be chosen both randomly and uniformly distributed, even though
   this condition is not necessary for the cryptographic security of the
   protocol.

   Note: Padding MUST NOT be used when encrypting the nonce.  The size
   of the nonce has been chosen such that it can be encrypted with block
   ciphers having block sizes of 32, 64, and 128 bits without any
   padding.

   If an authenticated encryption cipher [RFC5282] has been negotiated
   for the IKE SA, it MUST NOT be used as is because such use would be
   vulnerable to dictionary attacks.  Instead, the corresponding
   unauthenticated mode MUST be used.  All Galois/Counter Mode (GCM) and
   all Counter with CBC-MAC (CCM) encryption algorithms are mapped to
   the corresponding counter-mode algorithm.  For example, if the
   negotiated encryption algorithm (Transform Type 1) is "AES-GCM with
   an 8-octet Integrity Check Value (ICV)", then ENCR_AES_CTR (with the
   same key length) is used to encrypt the nonce.  If such a mapping
   does not exist for a particular cipher, then it MUST NOT be used
   within the current protocol.

4.2.  Mapping the Nonce

   The mapping is based on a second anonymous Diffie-Hellman key
   agreement protocol to create a shared secret that is used together
   with the exchanged nonce to calculate a common secret generator of
   the group.

   While in [TR03110] the generation of the shared secret is part of the
   mapping, in the setting of IKEv2, a shared secret SASharedSecret has
   already been generated as part of the IKE_SA_INIT step.  Using the
   notation of [RFC5996],

      SASharedSecret = g^ir

   Let G and GE be the generator of the negotiated Diffie-Hellman group,
   and the calculated ephemeral generator, respectively.  The following
   subsections describe the mapping for different Diffie-Hellman
   variants.






Kuegler & Sheffer             Experimental                     [Page 12]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


4.2.1.  Modular Diffie-Hellman

   The function Map:G->GE is defined as GE = G^s * SASharedSecret.

   Note that the protocol will fail if G^s = 1/SASharedSecret.  If s is
   chosen randomly, this event occurs with negligible probability.  In
   implementations that detect such a failure, the initiator SHOULD
   choose s again.

4.2.2.  Elliptic Curve Diffie-Hellman

   The function Map:G->GE is defined as GE = s*G + SASharedSecret.

   Note that the protocol will fail if s*G = -SharedSecret.  If s is
   chosen randomly, this event occurs with negligible probability.  In
   implementations that detect such a failure, the initiator SHOULD
   choose s again.

5.  Protocol Details

5.1.  Password Processing

   The input password string SHOULD be processed according to the rules
   of the [RFC4013] profile of [RFC3454].  A password SHOULD be
   considered a "stored string" per [RFC3454]; therefore, unassigned
   code points are prohibited.  The output is the binary representation
   of the processed UTF-8 character string.  Prohibited output and
   unassigned codepoints encountered in SASLprep preprocessing SHOULD
   cause a preprocessing failure, and the output SHOULD NOT be used.  A
   compliant implementation MUST NOT apply any other form of processing
   to the input password, other than as described in this section.

   See Section 3 of [RFC4013] for examples of SASLprep processing.


















Kuegler & Sheffer             Experimental                     [Page 13]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


5.2.  The SECURE_PASSWORD_METHODS Notification

   [RFC6467] defines a new type of Notify payload to indicate support
   for Secure Password Methods (SPMs) in the IKE_SA_INIT exchange.  The
   SPM Notify payload is defined as follows:

                          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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Next Payload  |C|  RESERVED   |         Payload Length        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  Protocol ID  |   SPI Size    |      Notify Message Type      |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                Security Parameter Index (SPI)                 ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                       Notification Data                       ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Figure 3: SECURE_PASSWORD_METHODS Payload Structure

   The Protocol ID is zero, and the SPI Size is also zero, indicating
   that the SPI field is empty.  The Notify Message Type is
   SECURE_PASSWORD_METHODS (value 16424).

   The Notification Data contains the list of the 16-bit secure password
   method numbers:

                          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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Secure Password Method #1     | Secure Password Method #2     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Secure Password Method #3     | ...                           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

              Figure 4: SECURE_PASSWORD_METHODS Payload Data

   For the current method, the list of proposed methods MUST include the
   value PACE (1).








Kuegler & Sheffer             Experimental                     [Page 14]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


5.3.  The PSK_PERSIST Notification

   This document defines the PSK_PERSIST notification type, whose value
   is 16425.  This notification MUST be sent with no data.  However, for
   future extensibility, the receiver MUST ignore any notification data
   if such data is present.

5.4.  The PSK_CONFIRM Notification

   This document defines the PSK_CONFIRM notification type, whose value
   is 16426.  This notification MUST be sent with no data.  However, for
   future extensibility, the receiver MUST ignore any notification data
   if such data is present.

5.5.  The GSPM(ENONCE) Payload

   This protocol defines the ENONCE (encrypted nonce) payload, which
   reuses the Generic SPM (GSPM) payload type [RFC6467] (value 49).  Its
   format is as follows:

      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Next Payload  |C|  RESERVED   |         Payload Length        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | PACE-RESERVED |     Initialization Vector                     |
     +-+-+-+-+-+-+-+-+                                               +
     |     (optional, length depends on the encryption algorithm)    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Encrypted Nonce                        ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Figure 5: ENONCE Payload Structure

   See Section 4.1 for further details about the encrypted nonce.  Note
   that the protocol -- and in particular this payload's format -- does
   not support any padding of the encrypted data.

   The PACE-RESERVED field must be sent as zero, and it must be rejected
   by the receiver if it is not 0.









Kuegler & Sheffer             Experimental                     [Page 15]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


5.6.  The KE (KEi2/KEr2) Payloads in PACE

   PACE reuses the Key Exchange (KE) payload for its Diffie-Hellman
   exchange, with the new payloads being sent within the IKE_AUTH
   exchange.  Since only one Diffie-Hellman group is negotiated, the
   group denoted by these payloads MUST be identical to the one used in
   the "regular" KE payloads in IKE_SA_INIT.

5.7.  PACE and Session Resumption

   A session resumption [RFC5723] ticket may be requested during the
   IKE_AUTH exchange.  The request MUST be sent in the request of the
   first round, and any response MUST be sent in the response of the
   second one.

   PACE should be considered an "authentication method", in the sense of
   Section 5 of [RFC5723], which means that its use MUST be noted in the
   protected ticket.  The format of the ticket is not standardized;
   however, it is RECOMMENDED that this indication distinguish between
   the different secure password authentication methods defined for IKE.

   Note that even if the initial authentication used PACE and its
   extended IKE_AUTH, session resumption will still include the normal
   IKE_AUTH exchange.

6.  Security Considerations

   A major goal of this protocol has been to maintain the level of
   security provided by IKEv2.  What follows is an analysis of this
   protocol.  The reader is referred to [RFC5996] for the generic IKEv2
   security considerations.

6.1.  Credential Security Assumptions

   This protocol makes no assumption on the strength of the shared
   credential.  Best common practices regarding minimal password length,
   use of multiple character classes, etc. SHOULD be followed.

6.2.  Vulnerability to Passive and Active Attacks

   The protocol is secure against both passive and active attackers.
   See Section 6.8 for a security proof.

   While not attacking the cryptography, an attacker can still perform a
   standard password-guessing attack.  To mitigate such attacks, an
   implementation MUST include standard protections, such as rate-
   limiting the number of allowed password-guessing attempts, possibly




Kuegler & Sheffer             Experimental                     [Page 16]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


   locking identities out after a certain number of failed attempts,
   etc.  Note that the protocol is symmetric; therefore, this guidance
   applies to client-side implementations as well.

6.3.  Perfect Forward Secrecy

   The key derivation for the IKE SA and any Child SAs is performed as
   part of IKEv2 and remains unchanged.  It directly follows that
   perfect forward security is provided independent of the
   authentication additionally performed by PACE.

6.4.  Randomness

   The security of this protocol depends on the quality generation of
   random quantities; see Section 5 of [RFC5996] for more details.
   Specifically, any deviation from randomness of the nonce s might
   compromise the password.  Therefore, it is strongly RECOMMENDED that
   the initiator pass the raw random material through a strong prf to
   ensure the statistical qualities of the nonce.

6.5.  Identity Protection

   This protocol is identical to IKEv2 in the quality of identity
   protection it provides.  Both peers' identities are secure from
   passive attackers, and both peers' identities are exposed to active,
   man-in-the-middle attackers.

6.6.  Denial of Service

   We are not aware of any new denial-of-service attack vector enabled
   by this protocol.

6.7.  Choice of Encryption Algorithms

   Any transforms negotiated for IKEv2 may be used by this protocol.
   Please refer to Section 4.1 for the considerations regarding
   authenticated encryption ("combined mode") algorithms.














Kuegler & Sheffer             Experimental                     [Page 17]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


6.8.  Security Model and Security Proof

   PACE is cryptographically proven secure in [PACEsec] in the model of
   Bellare, Pointcheval, and Rogaway [BPRmodel].  The setting in which
   PACE is proven secure is, however, slightly different from the
   setting used in IKEv2.  The differences are described in the
   following:

   o  Part of the mapping is already performed within IKEv2 before PACE
      is started.  This rearrangement does not affect the proof, as the
      resulting PACESharedSecret remains close to uniformly distributed
      in the group generated by G.

   o  The keys for the IKE SA and any Child SAs are already generated
      within IKEv2 before PACE is started.  While those session keys
      could also be derived in PACE, only the keys for the
      authentication token are considered in the proof, which explicitly
      recommends a separate key for this purpose.

   o  IKEv2 allows the negotiation of a stream cipher for PACE, while
      the proven variant always uses a block cipher.  The ideal cipher
      is replaced in the proof by a lazy-sampling technique that is
      similarly applicable to the stream-cipher-based construction.

   The differences in the setting therefore have no impact on the
   validity of the proof.

6.9.  Long-Term Credential Storage

   This protocol does not require that peers store the plaintext
   password.  Instead, the value SPwd SHOULD be stored by both peers.

   In addition, the protocol allows both peers to replace the password
   by a crypto-strength shared secret.  This solution improves the
   system's security (since passwords are often used for multiple
   applications), but at the cost of implementation complexity.  In
   particular, if this optional mechanism is to be used, the credential
   database would need to be writable by the key management subsystem.

   See Appendix B for alternatives to this approach.











Kuegler & Sheffer             Experimental                     [Page 18]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


7.  IANA Considerations

   IANA has allocated the following values:

   o  A PACE value of 1 from the "IKEv2 Secure Password Methods"
      registry [RFC6467].

   o  A PSK_PERSIST value of 16425 and a PSK_CONFIRM value of 16426 from
      the "IKEv2 Notify Message Types - Status Types" registry.  We note
      that these notification types are generic and that other password
      authentication methods may also choose to use them.

8.  Acknowledgments

   We would like to thank Dan Harkins for pointing out a security issue
   with our use of combined-mode algorithms in a previous version of the
   protocol.  We thank Tero Kivinen for his generic framework document,
   and for a thorough and fruitful review.  Hugo Krawczyk proposed that
   the password be amplified into a persistent shared secret.

9.  References

9.1.  Normative References

   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
                 Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2785]     Zuccherato, R., "Methods for Avoiding the "Small-
                 Subgroup" Attacks on the Diffie-Hellman Key Agreement
                 Method for S/MIME", RFC 2785, March 2000.

   [RFC3454]     Hoffman, P. and M. Blanchet, "Preparation of
                 Internationalized Strings ("stringprep")", RFC 3454,
                 December 2002.

   [RFC4013]     Zeilenga, K., "SASLprep: Stringprep Profile for User
                 Names and Passwords", RFC 4013, February 2005.

   [RFC4301]     Kent, S. and K. Seo, "Security Architecture for the
                 Internet Protocol", RFC 4301, December 2005.

   [RFC5996]     Kaufman, C., Hoffman, P., Nir, Y., and P. Eronen,
                 "Internet Key Exchange Protocol Version 2 (IKEv2)",
                 RFC 5996, September 2010.







Kuegler & Sheffer             Experimental                     [Page 19]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


9.2.  Informative References

   [BPRmodel]    Bellare, M., Pointcheval, D., and P. Rogaway,
                 "Authenticated Key Exchange Secure against Dictionary
                 Attacks", EUROCRYPT 2000, LNCS 1807, pp. 139-155,
                 Springer-Verlag, 2000, <http://www.iacr.org/cryptodb/
                 archive/2000/EUROCRYPT/18070139.pdf>.

   [ICAO]        ISO/IEC JTC1 SC17 WG3/TF5 for the International Civil
                 Aviation Organization (ICAO), "Supplemental Access
                 Control for Machine Readable Travel Documents",
                 Version 1.01, November 2010.

   [IKEv2-CONS]  Harkins, D., "Password-Based Authentication in IKEv2:
                 Selection Criteria and Considerations", Work
                 in Progress, October 2010.

   [PACEsec]     Bender, J., Fischlin, M., and D. Kuegler, "Security
                 Analysis of the PACE Key-Agreement Protocol",
                 LNCS 5735, pp. 33-48, Springer-Verlag (the extended
                 abstract appeared in Information Security Conference
                 (ISC) 2009), December 2009,
                 <http://eprint.iacr.org/2009/624>.

   [RFC5282]     Black, D. and D. McGrew, "Using Authenticated
                 Encryption Algorithms with the Encrypted Payload of the
                 Internet Key Exchange version 2 (IKEv2) Protocol",
                 RFC 5282, August 2008.

   [RFC5723]     Sheffer, Y. and H. Tschofenig, "Internet Key Exchange
                 Protocol Version 2 (IKEv2) Session Resumption",
                 RFC 5723, January 2010.

   [RFC5998]     Eronen, P., Tschofenig, H., and Y. Sheffer, "An
                 Extension for EAP-Only Authentication in IKEv2",
                 RFC 5998, September 2010.

   [RFC6467]     Kivinen, T., "Secure Password Framework for Internet
                 Key Exchange Version 2 (IKEv2)", RFC 6467,
                 December 2011.











Kuegler & Sheffer             Experimental                     [Page 20]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


   [TR03110]     BSI, "TR-03110, Advanced Security Mechanisms for
                 Machine Readable Travel Documents, Part 2 - Extended
                 Access Control Version 2 (EACv2), Password
                 Authenticated Connection Establishment (PACE), and
                 Restricted Identification (RI)", Version 2.10,
                 March 2012.

   [TR03111]     BSI, "TR-03111, Elliptic Curve Cryptography",
                 Version 1.11, April 2009.










































Kuegler & Sheffer             Experimental                     [Page 21]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


Appendix A.  Protocol Selection Criteria

   To support the selection of a password-based protocol for inclusion
   in IKEv2, a number of criteria are provided in [IKEv2-CONS].  In the
   following sections, those criteria are applied to the PACE protocol.

A.1.  Security Criteria

   SEC1:  PACE is a zero-knowledge protocol.

   SEC2:  The protocol supports perfect forward secrecy and is resistant
          to replay attacks.

   SEC3:  The identity protection provided by IKEv2 remains unchanged.

   SEC4:  Any cryptographically secure Diffie-Hellman group can be used.

   SEC5:  The protocol is proven secure in the Bellare-Pointcheval-
          Rogaway model.

   SEC6:  Strong session keys are generated.

   SEC7:  A transform of the password can be used instead of the
          password itself.

A.2.  Intellectual Property Criteria

   IPR1:  The first version of [TR03110] was published on May 21, 2007.

   IPR2:  BSI has developed PACE aiming to be free of patents.  BSI has
          not applied for a patent on PACE.

   IPR3:  The protocol itself is believed to be free of IPR.

A.3.  Miscellaneous Criteria

   MISC1:   One additional exchange is required.

   MISC2:   The protocol requires the following operations per entity:

            *  one key derivation from the password,

            *  one symmetric encryption or decryption,

            *  one multi-exponentiation for the mapping,






Kuegler & Sheffer             Experimental                     [Page 22]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


            *  one exponentiation for the key pair generation,

            *  one exponentiation for the shared secret calculation, and

            *  two symmetric authentications (generation and
               verification).

   MISC3:   The performance is independent of the type/size of password.

   MISC4:   Internationalization of character-based passwords is
            supported.

   MISC5:   The protocol uses the same group as that negotiated for
            IKEv2.

   MISC6:   The protocol fits into the request/response nature of IKE.

   MISC7:   The password-based symmetric encryption must be additionally
            negotiated.

   MISC8:   Neither trusted third parties nor clock synchronization are
            required.

   MISC9:   Only general cryptographic primitives are required.

   MISC10:  Any secure variant of Diffie-Hellman (e.g., Modular or
            Elliptic Curve) can be used.

   MISC11:  The protocol can be implemented easily based on existing
            cryptographic primitives.

Appendix B.  Password Salting

   This protocol requires that passwords not be stored in plaintext.
   Instead, we store a hash of the password with a fixed hash.  This
   value is then used in the ZKPP protocol, replacing the original
   password and acting as a "password equivalent".  The main benefit of
   this solution is that a system administrator or an undetermined
   attacker does not get immediate access to the passwords.  We believe
   this is sufficiently secure for the main usage scenario of the
   protocol.










Kuegler & Sheffer             Experimental                     [Page 23]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


   However, the common practice of password salting is clearly more
   powerful, and this appendix presents a few ideas on how password
   salting can be applied and/or adapted to fit into a symmetric
   protocol such as IKE.  First, let us list the threats that we expect
   salting to handle, as well as the non-threats:

   o  The plain password should not be visible to a casual onlooker, as
      noted above.  It is assumed that very often the same password is
      used for multiple applications, and so a password exposed allows
      an attacker a starting point for further attacks.

   o  An attacker must not be able to construct lookup tables (such as
      the famous "rainbow tables") that enable her to discover the plain
      password.

   o  IKE is a symmetric protocol, in the sense that any of the peers
      might initiate an IKE exchange to another peer.  As a result, all
      peers must have stored credentials (passwords or password
      equivalents) that would enable them to set up an IKE exchange.
      So, an attacker that reaches the credential store would in fact be
      able to impersonate IKE to another peer.  We believe that this
      reduces, but does not invalidate, the importance of salting,
      because of the other threats that remain.

   Below we present different scenarios and solutions that support
   password salting in this setting.

   We assume that each credential is used to authenticate exactly two
   peers to one another; i.e., (as per the best practice), group
   credentials are not allowed.

B.1.  Solving the Asymmetric Case with Symmetric Cryptography

   Despite the protocol's symmetry, there are use cases that are
   somewhat asymmetric.  Consider the case of an organization that
   consists of a headquarters and branches, using a hub-and-spoke
   architecture.  Communication sessions can be initiated by the center
   or by any of the branches, but only the center holds a large
   credential database.

   Here it would be possible to use traditional password salting,

      stored password = hash(salt, password),

   where the hash function is a symmetric hash (e.g., HMAC-SHA-256,
   using the salt as its key), and the salt is picked at random for each
   password.  The salt would need to be sent in the first exchange of
   the protocol, regardless of which side initiates the session.  Unlike



Kuegler & Sheffer             Experimental                     [Page 24]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


   the normal use of salted passwords, here it is the stored password,
   rather than the original password, that is used by the follow-on ZKPP
   protocol.

B.2.  Solving the Fully Symmetric Case with Asymmetric Cryptography

   For the fully symmetric case, we propose a salting method based on a
   commutative one-way function.  This is essentially a novel variant of
   the RSA protocol.  Using this solution, all protocol peers can store
   the password in a salted form.

   The implementation proposed here requires a composite number n that
   is common to all peers.  The composite number n can be generated by a
   trusted (third) party as n = p * q, where p and q are strong primes
   (i.e., p = 2 * p' + 1 and q = 2 * q' + 1, where p' and q' are also
   primes), and the trusted party promises not to retain a copy of the
   primes.  Alternatively, n can be chosen randomly and tested for
   "small" prime factors.  In the latter case, it is certainly not
   guaranteed that n is composed of only two primes.  While this has the
   advantage that no one knows the factorization of n, the disadvantage
   is that n is likely to be significantly easier to factor.

   Each peer then chooses a public encryption key "e".  In a simple
   implementation, the encryption key is generated randomly by each
   peer, picking a different value for each of the passwords that it
   stores.

   Note that although the pair (n,e) is similar to an RSA public key,
   the usual rules for generating "e" for the RSA protocol do not apply
   here, and a random "e" is sufficient.  The password is hashed by a
   symmetric hash function H (e.g., SHA-256).  Each peer i stores the
   two values

      e_i, H(P)^e_i (mod n),

   where P is the original password.  The values e_i are exchanged by
   the peers before the ZKPP protocol commences (in IKEv2-PACE, this
   would be in IKE_SA_INIT), and the following value is used in the ZKPP
   protocol run that follows, in lieu of the original password:

      H(P) ^ (e_i * e_j) (mod n).

   This transformation is used as a salting mechanism only, and the
   salted values themselves are never sent on the wire.







Kuegler & Sheffer             Experimental                     [Page 25]
^L
RFC 6631                     IKEv2 with PACE                   June 2012


   This scheme can be enhanced by basing the value "e" on each peer's
   identity (IDi, IDr), e.g., making it a simple hash of the identity.
   This eliminates the need to send "e" explicitly and additionally
   binds the identity of the peer with its secret.

B.3.  Generation of a Strong, Long-Term, Shared Secret

   An alternative to salting is to store the plain passwords, but only
   for a short while.  As soon as the first IKE SA is set up between two
   peers, the peers exchange nonces and generate a strong shared secret,
   based on IKE's SK_d.  They now destroy the short password and replace
   it with the new secret.

   This method has been added to the current protocol as an optional
   mechanism.

Authors' Addresses

   Dennis Kuegler
   Bundesamt fuer Sicherheit in der Informationstechnik (BSI)
   Postfach 200363
   Bonn  53133
   Germany

   EMail: dennis.kuegler@bsi.bund.de


   Yaron Sheffer
   Porticor

   EMail: yaronf.ietf@gmail.com




















Kuegler & Sheffer             Experimental                     [Page 26]
^L