https://libreswan.org/wiki/api.php?action=feedcontributions&user=Yulia+K&feedformat=atomLibreswan - User contributions [en]2024-03-28T23:45:18ZUser contributionsMediaWiki 1.35.14https://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21993Intermediate Exchange2020-09-15T08:24:19Z<p>Yulia K: </p>
<hr />
<div><br />
= Introduction =<br />
<br />
The Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the use of quantum computer (QC) resistant algorithms. It is expected that these algorithms require the transfer of large amounts of data before the peers can complete a quantum safe encryption and authentication. However, the IKE_SA_INIT exchange does not allow fragmentation and thus cannot carry this additional data. And the IKE_AUTH exchange already requires a working encryption algorithm. The IETF draft proposal is to add support for an unlimited number of INTERMEDIATE exchanges that take place between the IKE_SA_INIT and the IKE_AUTH exchange. These new INTERMEDIATE exchanges enable message fragmentation via the standard IKEv2 Fragmentation mechanism specified in RFC 7383. All data required to setup a quantum safe encryption algorithm can then be transferred before the IKE_AUTH exchange.<br />
<br />
While the Intermediate Exchange was originally designed to support new Quantum Safe algorithms, it can also be used for other large amounts of data that might need to be exchanged. Another such example is the data required for Remote Attestation of VPN clients before these are allowed to connect to VPN servers and the remote network.<br />
<br />
Both NIST and the IETF have not yet defined any quantum safe algorithms to use. So any implementation of the intermediate exchange cannot yet support any specific post-quantum algorithm.<br />
<br />
The Intermediate Exchange draft document is available at [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-05 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
= Implementation =<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following modifications were made:<br />
<br />
* The Early Code point allocations of the draft (value 43 for the new exchange type IKE_INTERMEDIATE, and the value 16438 for the new Notify payload INTERMEDIATE_EXCHANGE_SUPPORTED) were added.<br />
<br />
* Changes were made to the source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported.<br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support the Intermediate Exchange.<br />
<br />
* A new connection option '''intermediate=yes''' was added that allows or disallows the intermediate exchange. This option is mainly used for testing and might be removed later as the intermediate exchange has not exchanged any ID yet, it cannot be correctly mapped to one of many connections loaded. And thus, the intermediate exchange cannot be enabled or disabled as a per-connection option.<br />
<br />
* Test suite changes.<br />
<br />
The current implementation successfully interoperated with Elvis Plus.<br />
<br />
= Issues encountered =<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems. As new state transitions were added, it caused some difficulties to ensure that the program flow is correct and the correct packets are used for the authentication.<br />
<br />
* The authentication of the intermediate exchange packets is very complicated. All packets must be hashed into a PRF for authenticating. Fragmented packets are encrypted separately. Thus, the PRF outcome would be different if one peer accepted the unfragmented or fragmented packet. Therefore, the current draft requires pulling only certain payloads from the packet to add to the PRF. To create an AUTH payload, and to verify the peer's AUTH payload, all these payloads have to used separately even after the packet has been sent (and received). This is very complicated to do with the libreswan code base.<br />
<br />
= Future work =<br />
<br />
* Keep track of changes of the current draft and keep the code up to date with the latest draft (and finally with the RFC).<br />
<br />
= Source code =<br />
<br />
This code was merged into libreswan 4.0<br />
<br />
Code commit: https://github.com/libreswan/libreswan/commit/6b3b669ef08793ef7ea1a6b4e483d78bd5e97bfc<br />
<br />
Testing commit: https://github.com/libreswan/libreswan/commit/d609e4aaeabdb59d5df1c608cb45da565f380e4a<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21991Intermediate Exchange2020-09-12T15:24:27Z<p>Yulia K: </p>
<hr />
<div><br />
= Introduction =<br />
<br />
The Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the use of quantum computer (QC) resistant algorithms. It is expected that these algorithms require the transfer of large amounts of data before the peers can complete a quantum safe encryption and authentication. However, the IKE_SA_INIT exchange does not allow fragmentation and thus cannot carry this additional data. And the IKE_AUTH exchange already requires a working encryption algorithm. The IETF draft proposal is to add support for an unlimited number of INTERMEDIATE exchanges that take place between the IKE_SA_INIT and the IKE_AUTH exchange. These new INTERMEDIATE exchanges enable message fragmentation via the standard IKEv2 Fragmentation mechanism specified in RFC 7383. All data required to setup a quantum safe encryption algorithm can then be transferred before the IKE_AUTH exchange.<br />
<br />
While the Intermediate Exchange was originally designed to support new Quantum Safe algorithms, it can also be used for other large amounts of data that might need to be exchanged. Another such example is the data required for Remote Attestation of VPN clients before these are allowed to connect to VPN servers and the remote network.<br />
<br />
Both NIST and the IETF have not yet defined any quantum safe algorithms to use. So any implementation of the intermediate exchange cannot yet support any specific post-quantum algorithm.<br />
<br />
The Intermediate Exchange draft document is available at [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
= Implementation =<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following modifications were made:<br />
<br />
* The Early Code point allocations of the draft (value 43 for the new exchange type IKE_INTERMEDIATE, and the value 16438 for the new Notify payload INTERMEDIATE_EXCHANGE_SUPPORTED) were added.<br />
<br />
* Changes were made to the source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported.<br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support the Intermediate Exchange.<br />
<br />
* A new connection option '''intermediate=yes''' was added that allows or disallows the intermediate exchange. This option is mainly used for testing and might be removed later as the intermediate exchange has not exchanged any ID yet, it cannot be correctly mapped to one of many connections loaded. And thus, the intermediate exchange cannot be enabled or disabled as a per-connection option.<br />
<br />
* Test suite changes.<br />
<br />
The current implementation successfully interoperated with Elvis Plus.<br />
<br />
= Issues encountered =<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems. As new state transitions were added, it caused some difficulties to ensure that the program flow is correct and the correct packets are used for the authentication.<br />
<br />
* The authentication of the intermediate exchange packets is very complicated. All packets must be hashed into a PRF for authenticating. Fragmented packets are encrypted separately. Thus, the PRF outcome would be different if one peer accepted the unfragmented or fragmented packet. Therefore, the current draft requires pulling only certain payloads from the packet to add to the PRF. To create an AUTH payload, and to verify the peer's AUTH payload, all these payloads have to used separately even after the packet has been sent (and received). This is very complicated to do with the libreswan code base.<br />
<br />
= Future work =<br />
<br />
* Keep track of changes of the current draft and keep the code up to date with the latest draft (and finally with the RFC).<br />
<br />
= Source code =<br />
<br />
Code commit: https://github.com/libreswan/libreswan/commit/6b3b669ef08793ef7ea1a6b4e483d78bd5e97bfc<br />
<br />
Testing commit: https://github.com/libreswan/libreswan/commit/d609e4aaeabdb59d5df1c608cb45da565f380e4a<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code will be merged in libreswan version 4.0.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21987Intermediate Exchange2020-09-03T09:39:05Z<p>Yulia K: </p>
<hr />
<div><br />
= Introduction =<br />
<br />
The Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the use of quantum computer (QC) resistant algorithms. It is expected that these algorithms require the transfer of large amounts of data before the peers can complete a quantum safe encryption and authentication. However, the IKE_SA_INIT exchange does not allow fragmentation and thus cannot carry this additional data. And the IKE_AUTH exchange already requires a working encryption algorithm. The IETF draft proposal is to add support for an unlimited number of INTERMEDIATE exchanges that take place between the IKE_SA_INIT and the IKE_AUTH exchange. These new INTERMEDIATE exchanges enable message fragmentation via the standard IKEv2 Fragmentation mechanism specified in RFC 7383. All data required to setup a quantum safe encryption algorithm can then be transferred before the IKE_AUTH exchange.<br />
<br />
While the Intermediate Exchange was originally designed to support new Quantum Safe algorithms, it can also be used for other large amounts of data that might need to be exchanged. Another such example is the data required for Remote Attestation of VPN clients before these are allowed to connect to VPN servers and the remote network.<br />
<br />
Both NIST and the IETF have not yet defined any quantum safe algorithms to use. So any implementation of the intermediate exchange cannot yet support any specific post-quantum algorithm.<br />
<br />
The Intermediate Exchange draft document is available at [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
= Implementation =<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following modifications were made:<br />
<br />
* The Early Code point allocations of the draft (value 43 for the new exchange type IKE_INTERMEDIATE, and the value 16438 for the new Notify payload INTERMEDIATE_EXCHANGE_SUPPORTED) were added.<br />
<br />
* Changes were made to the source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported.<br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support the Intermediate Exchange.<br />
<br />
* A new connection option '''intermediate=yes''' was added that allows or disallows the intermediate exchange. This option is mainly used for testing and might be removed later as the intermediate exchange has not exchanged any ID yet, it cannot be correctly mapped to one of many connections loaded. And thus, the intermediate exchange cannot be enabled or disabled as a per-connection option.<br />
<br />
* Test suite changes.<br />
<br />
The current implementation successfully interoperated with Elvis Plus.<br />
<br />
= Issues encountered =<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems. As new state transitions were added, it caused some difficulties to ensure that the program flow is correct and the correct packets are used for the authentication.<br />
<br />
* The authentication of the intermediate exchange packets is very complicated. All packets must be hashed into a PRF for authenticating. Fragmented packets are encrypted separately. Thus, the PRF outcome would be different if one peer accepted the unfragmented or fragmented packet. Therefore, the current draft requires pulling only certain payloads from the packet to add to the PRF. To create an AUTH payload, and to verify the peer's AUTH payload, all these payloads have to used separately even after the packet has been sent (and received). This is very complicated to do with the libreswan code base.<br />
<br />
= Future work =<br />
<br />
* Keep track of changes of the current draft and keep the code up to date with the latest draft (and finally with the RFC).<br />
<br />
= Source code =<br />
<br />
Code commit: https://github.com/yulia-kuz/libreswan/commit/db53cc9352fa58e9525b84f7641a8db95c3420da<br />
<br />
Testing commit: https://github.com/yulia-kuz/libreswan/commit/b54297280b4edad39fd734c5bf6fc7f5dc72ecbc<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code is not yet merged as it is a POC (proof of concept). The code will be reviewed and merged after some issues are fixed and interoperability tests work. This is tentatively scheduled for libreswan version 4.1.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21986Intermediate Exchange2020-09-01T19:24:10Z<p>Yulia K: </p>
<hr />
<div><br />
= Introduction =<br />
<br />
The Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the use of quantum computer (QC) resistant algorithms. It is expected that these algorithms require the transfer of large amounts of data before the peers can complete a quantum safe encryption and authentication. However, the IKE_SA_INIT exchange does not allow fragmentation and thus cannot carry this additional data. And the IKE_AUTH exchange already requires a working encryption algorithm. The IETF draft proposal is to add support for an unlimited number of INTERMEDIATE exchanges that take place between the IKE_SA_INIT and the IKE_AUTH exchange. These new INTERMEDIATE exchanges enable message fragmentation via the standard IKEv2 Fragmentation mechanism specified in RFC 7383. All data required to setup a quantum safe encryption algorithm can then be transferred before the IKE_AUTH exchange.<br />
<br />
While the Intermediate Exchange was originally designed to support new Quantum Safe algorithms, it can also be used for other large amounts of data that might need to be exchanged. Another such example is the data required for Remote Attestation of VPN clients before these are allowed to connect to VPN servers and the remote network.<br />
<br />
Both NIST and the IETF have not yet defined any quantum safe algorithms to use. So any implementation of the intermediate exchange cannot yet support any specific post-quantum algorithm.<br />
<br />
The Intermediate Exchange draft document is available at [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
= Implementation =<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following modifications were made:<br />
<br />
* The Early Code point allocations of the draft (value 43 for the new exchange type IKE_INTERMEDIATE, and the value 16438 for the new Notify payload INTERMEDIATE_EXCHANGE_SUPPORTED) were added.<br />
<br />
* Changes were made to the source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported.<br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support the Intermediate Exchange.<br />
<br />
* A new connection option '''intermediate=yes''' was added that allows or disallows the intermediate exchange. This option is mainly used for testing and might be removed later as the intermediate exchange has not exchanged any ID yet, it cannot be correctly mapped to one of many connections loaded. And thus, the intermediate exchange cannot be enabled or disabled as a per-connection option.<br />
<br />
* Test suite changes.<br />
<br />
= Issues encountered =<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems. As new state transitions were added, it caused some difficulties to ensure that the program flow is correct and the correct packets are used for the authentication.<br />
<br />
* The authentication of the intermediate exchange packets is very complicated. All packets must be hashed into a PRF for authenticating. Fragmented packets are encrypted separately. Thus, the PRF outcome would be different if one peer accepted the unfragmented or fragmented packet. Therefore, the current draft requires pulling only certain payloads from the packet to add to the PRF. To create an AUTH payload, and to verify the peer's AUTH payload, all these payloads have to used separately even after the packet has been sent (and received). This is very complicated to do with the libreswan code base.<br />
<br />
= Future work =<br />
<br />
* Keep track of changes of the current draft and keep the code up to date with the latest draft (and finally with the RFC)<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
= Source code =<br />
<br />
Code commit: https://github.com/yulia-kuz/libreswan/commit/db53cc9352fa58e9525b84f7641a8db95c3420da<br />
<br />
Testing commit: https://github.com/yulia-kuz/libreswan/commit/b54297280b4edad39fd734c5bf6fc7f5dc72ecbc<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code is not yet merged as it is a POC (proof of concept). The code will be reviewed and merged after some issues are fixed and interoperability tests work. This is tentatively scheduled for libreswan version 4.1.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21983Intermediate Exchange2020-08-31T11:12:44Z<p>Yulia K: </p>
<hr />
<div><br />
= Introduction =<br />
<br />
The Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the use of quantum computer (QC) resistant algorithms. It is expected that these algorithms require the transfer of large amounts of data before the peers can complete a quantum safe encryption and authentication. However, the IKE_SA_INIT exchange does not allow fragmentation and thus cannot carry this additional data. And the IKE_AUTH exchange already requires a working encryption algorithm. The IETF draft proposal is to add support for an unlimited number of INTERMEDIATE exchanges that take place between the IKE_SA_INIT and the IKE_AUTH exchange. These new INTERMEDIATE exchanges enable message fragmentation via the standard IKEv2 Fragmentation mechanism specified in RFC 7383. All data required to setup a quantum safe encryption algorithm can then be transferred before the IKE_AUTH exchange.<br />
<br />
While the Intermediate Exchange was originally designed to support new Quantum Safe algorithms, it can also be used for other large amounts of data that might need to be exchanged. Another such example is the data required for Remote Attestation of VPN clients before these are allowed to connect to VPN servers and the remote network.<br />
<br />
Both NIST and the IETF have not yet defined any quantum safe algorithms to use. So any implementation of the intermediate exchange cannot yet support any specific post-quantum algorithm.<br />
<br />
The Intermediate Exchange draft document is available at [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
= Implementation =<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following modifications were made:<br />
<br />
* The Early Code point allocations of the draft (value 43 for the new exchange type IKE_INTERMEDIATE, and the value 16438 for the new Notify payload INTERMEDIATE_EXCHANGE_SUPPORTED) were added.<br />
<br />
* Changes were made to the source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported.<br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support the Intermediate Exchange.<br />
<br />
* A new connection option '''intermediate=yes''' was added that allows or disallows the intermediate exchange. This option is mainly used for testing and might be removed later as the intermediate exchange has not exchanged any ID yet, it cannot be correctly mapped to one of many connections loaded. And thus, the intermediate exchange cannot be enabled or disabled as a per-connection option.<br />
<br />
* Test suite changes.<br />
<br />
= Issues encountered =<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems. As new state transitions were added, it caused some difficulties to ensure that the program flow is correct and the correct packets are used for the authentication.<br />
<br />
* The authentication of the intermediate exchange packets is very complicated. All packets must be hashed into a PRF for authenticating. Fragmented packets are encrypted separately. Thus, the PRF outcome would be different if one peer accepted the unfragmented or fragmented packet. Therefore, the current draft requires pulling only certain payloads from the packet to add to the PRF. To create an AUTH payload, and to verify the peer's AUTH payload, all these payloads have to used separately even after the packet has been sent (and received). This is very complicated to do with the libreswan code base.<br />
<br />
= Current issues =<br />
<br />
* IDr payload is currently NOT always sent: This is an error for RSA/ECDSA at the Initiator. This error has to be debugged further.<br />
<br />
* Initiator/Responder does not yet reach STATE_V2_ESTABLISHED_CHILD_SA. This is an error for PSK and has to be debugged further.<br />
<br />
* Test suite errors have to be debugged further.<br />
<br />
= Future work =<br />
<br />
* Keep track of changes of the current draft and keep the code up to date with the latest draft (and finally with the RFC)<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* IDr payload and authentication issues should be fixed.<br />
<br />
* Test suite errors have to be debugged further.<br />
<br />
= Source code =<br />
<br />
Code commit: https://github.com/yulia-kuz/libreswan/commit/db53cc9352fa58e9525b84f7641a8db95c3420da<br />
<br />
Testing commit: https://github.com/yulia-kuz/libreswan/commit/b54297280b4edad39fd734c5bf6fc7f5dc72ecbc<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code is not yet merged as it is a POC (proof of concept). The code will be reviewed and merged after some issues are fixed and interoperability tests work. This is tentatively scheduled for libreswan version 4.1.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21982Intermediate Exchange2020-08-31T10:35:20Z<p>Yulia K: </p>
<hr />
<div><br />
= Introduction =<br />
<br />
The Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the use of quantum computer (QC) resistant algorithms. It is expected that these algorithms require the transfer of large amounts of data before the peers can complete a quantum safe encryption and authentication. However, the IKE_SA_INIT exchange does not allow fragmentation and thus cannot carry this additional data. And the IKE_AUTH exchange already requires a working encryption algorithm. The IETF draft proposal is to add support for an unlimited number of INTERMEDIATE exchanges that take place between the IKE_SA_INIT and the IKE_AUTH exchange. These new INTERMEDIATE exchanges enable message fragmentation via the standard IKEv2 Fragmentation mechanism specified in RFC 7383. All data required to setup a quantum safe encryption algorithm can then be transferred before the IKE_AUTH exchange.<br />
<br />
While the Intermediate Exchange was originally designed to support new Quantum Safe algorithms, it can also be used for other large amounts of data that might need to be exchanged. Another such example is the data required for Remote Attestation of VPN clients before these are allowed to connect to VPN servers and the remote network.<br />
<br />
Both NIST and the IETF have not yet defined any quantum safe algorithms to use. So any implementation of the intermediate exchange cannot yet support any specific post-quantum algorithm.<br />
<br />
The Intermediate Exchange draft document is available at [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
= Implementation =<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following modifications were made:<br />
<br />
* The Early Code point allocations of the draft (value 43 for the new exchange type IKE_INTERMEDIATE, and the value 16438 for the new Notify payload INTERMEDIATE_EXCHANGE_SUPPORTED) were added.<br />
<br />
* Changes were made to the source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported.<br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support the Intermediate Exchange.<br />
<br />
* A new connection option '''intermediate=yes''' was added that allows or disallows the intermediate exchange. This option is mainly used for testing and might be removed later as the intermediate exchange has not exchanged any ID yet, it cannot be correctly mapped to one of many connections loaded. And thus, the intermediate exchange cannot be enabled or disabled as a per-connection option.<br />
<br />
* Test suite changes.<br />
<br />
== Issues encountered ==<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems (Paul: please detail a few of the big issues you encountered and resolved) <br />
<br />
* The authentication of the intermediate exchange packets is very complicated. All packets must be hashed into a PRF for authenticating. Fragmented packets are encrypted separately. Thus, the PRF outcome would be different if one peer accepted the unfragmented or fragmented packet. Therefore, the current draft requires pulling only certain payloads from the packet to add to the PRF. To create an AUTH payload, and to verify the peer's AUTH payload, all these payloads have to used separately even after the packet has been sent (and received). This is very complicated to do with the libreswan code base.<br />
<br />
= Current issues =<br />
<br />
* IDr payload is currently NOT always sent: This is an error for RSA/ECDSA at the Initiator. This error has to be debugged further.<br />
<br />
* Test suite errors have to be debugged further.<br />
<br />
= Future work =<br />
<br />
* Keep track of changes of the current draft and keep the code up to date with the latest draft (and finally with the RFC)<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* IDr payload and authentication issues should be fixed.<br />
<br />
= Source code =<br />
<br />
Code commit: https://github.com/yulia-kuz/libreswan/commit/db53cc9352fa58e9525b84f7641a8db95c3420da<br />
<br />
Testing commit: https://github.com/yulia-kuz/libreswan/commit/b54297280b4edad39fd734c5bf6fc7f5dc72ecbc<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code is not yet merged as it is a POC (proof of concept). The code will be reviewed and merged after some issues are fixed and interoperability tests work. This is tentatively scheduled for libreswan version 4.1.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21981Intermediate Exchange2020-08-31T09:39:18Z<p>Yulia K: </p>
<hr />
<div><br />
= Introduction =<br />
<br />
The Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the use of quantum computer (QC) resistant algorithms. It is expected that these algorithms require the transfer of large amounts of data before the peer's can complete a quantum safe encryption and authentication. However, the IKE_SA_INIT exchange does not allow fragmentation and thus cannot carry this additional data. And the IKE_AUTH exchange already requires a working encryption algorithm. The IETF draft proposal is to add support for an unlimited number of INTERMEDIATE exchanges that take place between the IKE_SA_INIT and the IKE_AUTH exchange. These new INTERMEDIATE exchanges enable message fragmentation via the standaerd IKEv2 Fragmentation mechanism specified in RFC 7383. All data required to setup a quantum safe encryption algorithm can then be transferred before the IKE_AUTH exchange.<br />
<br />
While the Intermediate Exchange was originally designed to support new Quantum Safe algorithms, it can also be used for other large amounts of data that might need to be exchanged. Another such example is the data required for Remote Attestation of VPN clients before these are allowed to connect to VPN servers and the remote network.<br />
<br />
Both NIST and the IETF have not yet defined any quantum safe algorithms to use. So any implementation of the intermediate exchange cannot yet support any specific post-quantum algorithm.<br />
<br />
The Intermediate Exchange draft document is available at [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
= Implementation =<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following modifications were made:<br />
<br />
* The Early Code point allocations of the draft (value 43 for the new exchange type IKE_INTERMEDIATE, and the value 16438 for the new Notify payoad INTERMEDIATE_EXCHANGE_SUPPORTED were added.<br />
<br />
* Changes were made to the source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported, <br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support the Intermediate Exchange.<br />
<br />
* A new connection option '''intermediate=yes''' was added that allows or disallows the intermediate exchange. This option is mainly used for testing and might be removed later as the intermediate exchange has not exchanged any ID yet, it cannot be correctly mapped to one of many connections loaded. And thus, the intermediate exchange cannot be enabled or disabled as a per-connection option.<br />
<br />
* Test suite changes.<br />
<br />
== Issues encountered ==<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems (Paul: please detail a few of the big issues you encountered and resolved) <br />
<br />
* The authentication of the intermediate exchange packets is very complicated. All packets must be hashed into a PRF for authenticating. Fragmented packets are encrypted separately. Thus, the PRF outcome would be different if one peer accepted the unfragmented or fragmented packet. Therefore, the current draft requires pulling only certain payloads from the packet to add to the PRF. To create an AUTH payload, and to verify the peer's AUTH payload, all these payloads have to used separately even after the packet has been sent (and received). This is very complicated to do with the libreswan code base.<br />
<br />
<br />
<br />
<br />
<br />
= Current issues =<br />
<br />
* IDr payload is currently NOT always sent: This is an error for RSA/ECDSA at the Initiator. This error has to be debugged further.<br />
<br />
* Test suite errors have to be debugged further.<br />
<br />
= Future work =<br />
<br />
* Keep track of changes of the current draft and keep the code up to date with the latest draft (and finally with the RFC)<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* IDr payload and authentication issues should be fixed.<br />
<br />
= Source code =<br />
<br />
Code commit: https://github.com/yulia-kuz/libreswan/commit/db53cc9352fa58e9525b84f7641a8db95c3420da<br />
<br />
Testing commit: https://github.com/yulia-kuz/libreswan/commit/b54297280b4edad39fd734c5bf6fc7f5dc72ecbc<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code is not yet merged as it is a POC (proof of concept). The code will be reviewed and merged after some issues are fixed and interoperability tests work. This is tentatively scheduled for libreswan version 4.1.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21973Intermediate Exchange2020-08-31T00:18:04Z<p>Yulia K: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the usage of quantum computer (QC) resistant algorithms which require transfer of large public keys. A series of these exchanges take place between IKE_SA_INIT and IKE_AUTH phases and enable message fragmentation via IKE Fragmentation mechanism. Hence large keys can be transferred without causing IP fragmentation.<br />
<br />
The Intermediate Exchange is specified in [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
== Implementation ==<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following options were added:<br />
<br />
* The value 43 was picked to define a new exchange type, IKE_INTERMEDIATE. The value 16438 defines INTERMEDIATE_EXCHANGE_SUPPORTED Notify messages. The numbers were assigned by IANA.<br />
<br />
* Changes were made in source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported, since the post-quantum cryptographic algorithms are not yet a part of NSS API. <br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support Intermediate Exchange.<br />
<br />
* New connection option was added which can be configured with '''intermediate=yes'''.<br />
<br />
* Test suite changes.<br />
<br />
== Issues encountered ==<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems.<br />
<br />
* IDr payload will NOT be sent: error for RSA/ECDSA at Initiator. This error has to be debugged further.<br />
<br />
* Test suite errors have to be debugged further.<br />
<br />
== Future work ==<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* IDr payload and authentication issues should be fixed.<br />
<br />
== Source code ==<br />
<br />
Code commit RSA/ECDSA: https://github.com/yulia-kuz/libreswan/commit/3af9f006f3f3150d66e8144cb243c00ae9ff3eb0<br />
<br />
Code commit PSK: https://github.com/yulia-kuz/libreswan/commit/615a94316d0acd164b1bae3f23df6ad3ff8f7749<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code is not yet merged as it is a POC (proof of concept). The code will be reviewed and merged after some issues are fixed and interoperability tests work.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21972Intermediate Exchange2020-08-31T00:06:09Z<p>Yulia K: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the usage of quantum computer (QC) resistant algorithms which require transfer of large public keys. A series of these exchanges take place between IKE_SA_INIT and IKE_AUTH phases and enable message fragmentation via IKE Fragmentation mechanism. Hence large keys can be transferred without causing IP fragmentation.<br />
<br />
The Intermediate Exchange is specified in [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
== Implementation ==<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following options were added:<br />
<br />
* The value 43 was picked to define a new exchange type, IKE_INTERMEDIATE. The value 16438 defines INTERMEDIATE_EXCHANGE_SUPPORTED Notify messages. The numbers were assigned by IANA.<br />
<br />
* Changes were made in source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported, since the post-quantum cryptographic algorithms are not yet a part of NSS API. <br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support Intermediate Exchange.<br />
<br />
* New connection option was added which can be configured with '''intermediate=yes'''.<br />
<br />
* Test suite changes.<br />
<br />
== Issues encountered ==<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems.<br />
<br />
* IDr payload will NOT be sent: error at Initiator. This error has to be debugged further.<br />
<br />
* Fix test cases.<br />
<br />
== Future work ==<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* IDr payload and authentication issues should be fixed.<br />
<br />
== Source code ==<br />
<br />
Code commit RSA/ECDSA: https://github.com/yulia-kuz/libreswan/commit/3af9f006f3f3150d66e8144cb243c00ae9ff3eb0<br />
<br />
Code commit PSK: https://github.com/yulia-kuz/libreswan/commit/615a94316d0acd164b1bae3f23df6ad3ff8f7749<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code is not yet merged as it is a POC (proof of concept). The code will be reviewed and merged after some issues are fixed and interoperability tests work.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21971Intermediate Exchange2020-08-31T00:05:35Z<p>Yulia K: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the usage of quantum computer (QC) resistant algorithms which require transfer of large public keys. A series of these exchanges take place between IKE_SA_INIT and IKE_AUTH phases and enable message fragmentation via IKE Fragmentation mechanism. Hence large keys can be transferred without causing IP fragmentation.<br />
<br />
The Intermediate Exchange is specified in [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
== Implementation ==<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following options were added:<br />
<br />
* The value 43 was picked to define a new exchange type, IKE_INTERMEDIATE. The value 16438 defines INTERMEDIATE_EXCHANGE_SUPPORTED Notify messages. The numbers were assigned by IANA.<br />
<br />
* Changes were made in source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported, since the post-quantum cryptographic algorithms are not yet a part of NSS API. <br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support Intermediate Exchange.<br />
<br />
* New connection option was added which can be configured with '''intermediate=yes'''.<br />
<br />
* Test suite changes.<br />
<br />
== Issues encountered ==<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems.<br />
<br />
* IDr payload will NOT be sent: error at Initiator. This error has to be debugged further.<br />
<br />
* Fix test cases.<br />
<br />
== Future work ==<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* IDr payload and authentication issues should be fixed.<br />
<br />
== Source code ==<br />
<br />
Code commit RSA/ECDSA: https://github.com/yulia-kuz/libreswan/commit/3af9f006f3f3150d66e8144cb243c00ae9ff3eb0<br />
<br />
Code commit PSK: https://github.com/libreswan/libreswan/commit/615a94316d0acd164b1bae3f23df6ad3ff8f7749<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code is not yet merged as it is a POC (proof of concept). The code will be reviewed and merged after some issues are fixed and interoperability tests work.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21970Intermediate Exchange2020-08-31T00:05:16Z<p>Yulia K: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the usage of quantum computer (QC) resistant algorithms which require transfer of large public keys. A series of these exchanges take place between IKE_SA_INIT and IKE_AUTH phases and enable message fragmentation via IKE Fragmentation mechanism. Hence large keys can be transferred without causing IP fragmentation.<br />
<br />
The Intermediate Exchange is specified in [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
== Implementation ==<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following options were added:<br />
<br />
* The value 43 was picked to define a new exchange type, IKE_INTERMEDIATE. The value 16438 defines INTERMEDIATE_EXCHANGE_SUPPORTED Notify messages. The numbers were assigned by IANA.<br />
<br />
* Changes were made in source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported, since the post-quantum cryptographic algorithms are not yet a part of NSS API. <br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support Intermediate Exchange.<br />
<br />
* New connection option was added which can be configured with '''intermediate=yes'''.<br />
<br />
* Test suite changes.<br />
<br />
== Issues encountered ==<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems.<br />
<br />
* IDr payload will NOT be sent: error at Initiator. This error has to be debugged further.<br />
<br />
* Fix test cases.<br />
<br />
== Future work ==<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* IDr payload and authentication issues should be fixed.<br />
<br />
== Source code ==<br />
<br />
Code commit RSA/ECDSA: https://github.com/yulia-kuz/libreswan/commit/3af9f006f3f3150d66e8144cb243c00ae9ff3eb0<br />
Code commit PSK: https://github.com/libreswan/libreswan/commit/615a94316d0acd164b1bae3f23df6ad3ff8f7749<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code is not yet merged as it is a POC (proof of concept). The code will be reviewed and merged after some issues are fixed and interoperability tests work.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21969Intermediate Exchange2020-08-30T13:55:18Z<p>Yulia K: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the usage of quantum computer (QC) resistant algorithms which require transfer of large public keys. A series of these exchanges take place between IKE_SA_INIT and IKE_AUTH phases and enable message fragmentation via IKE Fragmentation mechanism. Hence large keys can be transferred without causing IP fragmentation.<br />
<br />
The Intermediate Exchange is specified in [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
== Implementation ==<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following options were added:<br />
<br />
* The value 43 was picked to define a new exchange type, IKE_INTERMEDIATE. The value 16438 defines INTERMEDIATE_EXCHANGE_SUPPORTED Notify messages. The numbers were assigned by IANA.<br />
<br />
* Changes were made in source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported, since the post-quantum cryptographic algorithms are not yet a part of NSS API. <br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support Intermediate Exchange.<br />
<br />
* New connection option was added which can be configured with '''intermediate=yes'''.<br />
<br />
* Test suite changes.<br />
<br />
== Issues encountered ==<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems.<br />
<br />
* IDr payload will NOT be sent: error at Initiator. This error has to be debugged further.<br />
<br />
== Future work ==<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* IDr payload issue should be fixed.<br />
<br />
* PSK support.<br />
<br />
== Source code ==<br />
<br />
Code commit : https://github.com/yulia-kuz/libreswan/commit/3af9f006f3f3150d66e8144cb243c00ae9ff3eb0<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code is not yet merged as it is a POC (proof of concept). The code will be reviewed and merged after some issues are fixed and interoperability tests work.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21968Intermediate Exchange2020-08-30T13:51:50Z<p>Yulia K: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the usage of quantum computer (QC) resistant algorithms which require transfer of large public keys. A series of these exchanges take place between IKE_SA_INIT and IKE_AUTH phases and enable message fragmentation via IKE Fragmentation mechanism. Hence large keys can be transferred without causing IP fragmentation.<br />
<br />
The Intermediate Exchange is specified in [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
== Implementation ==<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following options were added:<br />
<br />
* The value 43 was picked to define a new exchange type, IKE_INTERMEDIATE. The value 16438 defines INTERMEDIATE_EXCHANGE_SUPPORTED Notify messages. The numbers were assigned by IANA.<br />
<br />
* Changes were made in source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported, since the post-quantum cryptographic algorithms are not yet a part of NSS API. <br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support Intermediate Exchange.<br />
<br />
* New connection option was added which can be configured with '''intermediate=yes'''.<br />
<br />
* Test suite changes.<br />
<br />
== Issues encountered ==<br />
<br />
* Incorporating new exchange into existing implementation caused significant problems.<br />
<br />
* IDr payload will NOT be sent: error at Initiator. This error has to be debugged further.<br />
<br />
== Future work ==<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* PSK support.<br />
<br />
== Source code ==<br />
<br />
Code commit : https://github.com/yulia-kuz/libreswan/commit/3af9f006f3f3150d66e8144cb243c00ae9ff3eb0<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code is not yet merged as it is a POC (proof of concept). The code will be reviewed and merged after some issues are fixed and interoperability tests work.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21967Intermediate Exchange2020-08-30T13:16:06Z<p>Yulia K: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the usage of quantum computer (QC) resistant algorithms which require transfer of large public keys. A series of these exchanges take place between IKE_SA_INIT and IKE_AUTH phases and enable message fragmentation via IKE Fragmentation mechanism. Hence large keys can be transferred without causing IP fragmentation.<br />
<br />
The Intermediate Exchange is specified in [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
== Implementation ==<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following options were added:<br />
<br />
* The value 43 was picked to define a new exchange type, IKE_INTERMEDIATE. The value 16438 defines INTERMEDIATE_EXCHANGE_SUPPORTED Notify messages. The numbers were assigned by IANA.<br />
<br />
* Changes were made in source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported, since the post-quantum cryptographic algorithms are not yet a part of NSS API. <br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support Intermediate Exchange.<br />
<br />
* New connection option was added which can be configured with '''intermediate=yes'''.<br />
<br />
* Test suite changes.<br />
<br />
== Future work ==<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* Support of pre-shared keys.<br />
<br />
== Source code ==<br />
<br />
Code commit : https://github.com/yulia-kuz/libreswan/commit/3af9f006f3f3150d66e8144cb243c00ae9ff3eb0<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.<br />
<br />
The code is not yet merged as it is a POC (proof of concept). The code will be reviewed and merged after some issues are fixed and interoperability tests work.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21966Intermediate Exchange2020-08-30T12:42:17Z<p>Yulia K: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the usage of quantum computer (QC) resistant algorithms which require transfer of large public keys. A series of these exchanges take place between IKE_SA_INIT and IKE_AUTH phases and enable message fragmentation via IKE Fragmentation mechanism. Hence large keys can be transferred without causing IP fragmentation.<br />
<br />
The Intermediate Exchange is specified in [https://tools.ietf.org/html/draft-ietf-ipsecme-ikev2-intermediate-04 draft-ietf-ipsecme-ikev2-intermediate].<br />
<br />
== Implementation ==<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following options were added:<br />
<br />
* The value 43 was picked to define a new exchange type, IKE_INTERMEDIATE. The value 16438 defines INTERMEDIATE_EXCHANGE_SUPPORTED Notify messages. The numbers were assigned by IANA.<br />
<br />
* Changes were made in source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported, since the post-quantum cryptographic algorithms are not yet a part of NSS API. <br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support Intermediate Exchange.<br />
<br />
* New connection option was added which can be configured with '''intermediate=yes'''.<br />
<br />
* Test suite changes.<br />
<br />
== Future work ==<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* Support of pre-shared keys.<br />
<br />
== Source code ==<br />
<br />
Code commit : https://github.com/yulia-kuz/libreswan/commit/3af9f006f3f3150d66e8144cb243c00ae9ff3eb0<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21965Intermediate Exchange2020-08-30T12:39:57Z<p>Yulia K: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the usage of quantum computer (QC) resistant algorithms which require transfer of large public keys. A series of these exchanges take place between IKE_SA_INIT and IKE_AUTH phases and enable message fragmentation via IKE Fragmentation mechanism. Hence large keys can be transferred without causing IP fragmentation.<br />
<br />
The Intermediate Exchange is specified in draft-ietf-ipsecme-ikev2-intermediate-04.<br />
<br />
== Implementation ==<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following options were added:<br />
<br />
* The value 43 was picked to define a new exchange type, IKE_INTERMEDIATE. The value 16438 defines INTERMEDIATE_EXCHANGE_SUPPORTED Notify messages. The numbers were assigned by IANA.<br />
<br />
* Changes were made in source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported, since the post-quantum cryptographic algorithms are not yet a part of NSS API. <br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support Intermediate Exchange.<br />
<br />
* New connection option was added which can be configured with '''intermediate=yes'''.<br />
<br />
* Test suite changes.<br />
<br />
== Future work ==<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* Support of pre-shared keys.<br />
<br />
== Source code ==<br />
<br />
Code commit : https://github.com/yulia-kuz/libreswan/commit/3af9f006f3f3150d66e8144cb243c00ae9ff3eb0<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21964Intermediate Exchange2020-08-30T12:37:43Z<p>Yulia K: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
Intermediate Exchange, or IKE_INTERMEDIATE, is an addition to the IKEv2 protocol to enable the usage of quantum computer (QC) resistant algorithms which require transfer of large public keys. A series of these exchanges take place between IKE_SA_INIT and IKE_AUTH phases and enable message fragmentation via IKE Fragmentation mechanism. Hence large keys can be transferred without causing IP fragmentation.<br />
<br />
== Implementation ==<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following options were added:<br />
<br />
* The value 43 was picked to define a new exchange type, IKE_INTERMEDIATE. The value 16438 defines INTERMEDIATE_EXCHANGE_SUPPORTED Notify messages. The numbers were assigned by IANA.<br />
<br />
* Changes were made in source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported, since the post-quantum cryptographic algorithms are not yet a part of NSS API. <br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support Intermediate Exchange.<br />
<br />
* New connection option was added which can be configured with '''intermediate=yes'''.<br />
<br />
* Test suite changes.<br />
<br />
== Future work ==<br />
<br />
* Interoperability test with Elvis Plus.<br />
<br />
* Support of pre-shared keys.<br />
<br />
== Source code ==<br />
<br />
Code commit : https://github.com/yulia-kuz/libreswan/commit/3af9f006f3f3150d66e8144cb243c00ae9ff3eb0<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21963Intermediate Exchange2020-08-30T12:12:53Z<p>Yulia K: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
<br />
<br />
== Implementation ==<br />
<br />
To allow the use of Intermediate Exchange in libreswan, the following options were added:<br />
<br />
* The value 43 was picked to define a new exchange type, IKE_INTERMEDIATE. The value 16438 defines INTERMEDIATE_EXCHANGE_SUPPORTED Notify messages. The numbers were assigned by IANA.<br />
<br />
* Changes were made in source files (programs/pluto/''ikev2_*.c'') where IKEv2 is implemented. For now, only a single round of Intermediate Exchanges is supported, since the post-quantum cryptographic algorithms are not yet a part of NSS API. <br />
<br />
* New state transitions were added in programs/pluto/''ikev2.c'' to support Intermediate Exchange.<br />
<br />
* New connection option was added which can be configured with '''intermediate=yes'''.<br />
<br />
* Test suite changes.<br />
<br />
== Future work ==<br />
<br />
* Interoperability test with Elvis Plus<br />
<br />
== Source code ==<br />
<br />
Code commit : https://github.com/yulia-kuz/libreswan/commit/3af9f006f3f3150d66e8144cb243c00ae9ff3eb0<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21961Intermediate Exchange2020-08-29T13:21:21Z<p>Yulia K: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
<br />
<br />
== Implementation ==<br />
<br />
<br />
<br />
== Future work ==<br />
<br />
<br />
== Source code ==<br />
<br />
Code commit : https://github.com/yulia-kuz/libreswan/commit/3af9f006f3f3150d66e8144cb243c00ae9ff3eb0<br />
<br />
The implementation for this project is done by Yulia Kuzovkova (ukuzovkova@gmail.com) under the mentorship of Sahana Prasad and Paul Wouters and sponsored by Google as part of Google Summer of Code 2020 Program.</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Intermediate_Exchange&diff=21954Intermediate Exchange2020-08-26T17:29:54Z<p>Yulia K: Created page with " == Introduction == == Implementation == == Future work == == Source code =="</p>
<hr />
<div><br />
== Introduction ==<br />
<br />
<br />
<br />
== Implementation ==<br />
<br />
<br />
<br />
== Future work ==<br />
<br />
<br />
== Source code ==</div>Yulia Khttps://libreswan.org/wiki/index.php?title=Student_projects&diff=21953Student projects2020-08-26T13:27:55Z<p>Yulia K: </p>
<hr />
<div>= Introduction =<br />
<br />
The Libreswan Project invites students to work on the libreswan code base. It offers to mentor the students. Please contact Paul Wouters if you are a student or school that is interested. For ideas of items to work on, please see [[GSoC]].<br />
<br />
Below is a list of completed student projects. If you are interested in participating as a student, please contact us.<br />
<br />
= draft-ietf-ipsecme-ikev2-intermediate-04 Intermediate Exchange for IKEv2 =<br />
<br />
* Student: Yulia Kuzovkova - sponsored by Google Summer of Code 2020<br />
* Project Page: [[ Intermediate Exchange ]]<br />
<br />
= Libreswan Opportunistic IPsec using LetsEncrypt =<br />
<br />
* Student: Rishabh - sponsored by Google Summer of Code 2019<br />
* Project Page: [[ Libreswan Opportunistic IPsec using LetsEncrypt ]]<br />
* Documentation page: [[ Documentation: Libreswan Opportunistic IPsec using LetsEncrypt ]]<br />
* Status: Development Complete, Merged in [https://libreswan.org/wiki/Libreswan_Opportunistic_IPsec_using_LetsEncrypt#Source_code master branch]. Released in Libreswan [https://github.com/libreswan/libreswan/releases/tag/v3.30 v3.30].<br />
<br />
= RSA-PSS Support in compliance with RFC 7427 and RFC 8247 =<br />
<br />
* Student: Sahana Prasad - sponsored by Google summer of code 2018<br />
* Project page: [[ RSA-PSS Support in compliance with RFC 7427 and RFC 8247]]<br />
* Status: Merged and released in Libreswan 3.25<br />
<br />
= Extend RFC 7427 Signature Authentication support to IKEv2 with ECDSA =<br />
<br />
* Student: Sahana Prasad - sponsored by Google Summer of Code 2018<br />
* Project page: [[ Extend RFC-7427 Signature Authentication support to IKEv2 with ECDSA]]<br />
* Status: Merged and released in libreswan 3.27<br />
<br />
= RFC 5685 IKEv2 Redirect Mechanism =<br />
<br />
* Student: Vukasin Karadzic - sponsored by Google Summer of Code 2018<br />
* Project Page: [[ RFC 5685 - Redirect Mechanism ]]<br />
* Status: Merged and released in libreswan 3.28<br />
<br />
= Libreswan Managing Interface =<br />
<br />
* Student: Rishabh - sponsored by Google Summer of Code 2018<br />
* Project Page: [[ Libreswan Managing Interface ]]<br />
* Status: Development complete, waiting for the release.<br />
<br />
= RFC 7427 Signature Authentication in the Internet Key Exchange Version 2 (IKEv2) =<br />
<br />
* Student: Sahana Prasad - sponsored by Google Summer of Code 2017<br />
* Project page: [[ Compliance of RFC 7427 - Signature Authentication in IKEv2 ]]<br />
* Status: Initial framework implemented to support RSA v1.5 with SHA-1 signatures and RSA-PKK with SHA-2 signatures<br />
* Code: Merged and released in libreswan 3.22, extended for authby=rsa-sha2 and RSA-PKK in 3.23<br />
<br />
= RFC 8229 TCP Encapsulation of IKE and IPsec Packets =<br />
<br />
* Student: Mayank Totale - sponsored by Google Summer of Code 2017<br />
* Project Page: [[ GSOC 2017: Implementing RFC 8229 "TCP Encapsulation of IKE and IPsec Packets" for Libreswan ]]<br />
* Status: Waiting on Linux kernel support for ESPinTCP. IKEinTCP code has been implemented in libreswan<br />
<br />
= draft-ietf-ipsecme-qr-ikev2 Postquantum Preshared Keys for IKEv2 =<br />
<br />
* Student: Vukasin Karadzic - sponsored by The Libreswan Project in 2017<br />
* Project Page: [[ Postquantum Preshared Keys ]]<br />
* Status: Passed vendor interop testing<br />
* Code: Merged and released in libreswan 3.23</div>Yulia K