<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Dear OpenSSL users</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);"><br class=""></div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Thanks for thinking about it.</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">(Especially grateful to Mr./Ms. Mattl, Michael and Kris. )</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);"><br class=""></div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">I took a little time to clarify our questions.</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">The attached document is a diagram of our idea </div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">of how the original protocol and TLS should work together.</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);"><br class=""></div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Objective:</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">We want to implement QUIC-TLS, which is lightweight and secure.</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Specifically, we would like to implement a handshake protocol by incorporating non-standard protocols.</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">For example, we are considering a post-quantum key exchange protocol.</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">This is just a part of our research, and we are not considering a new standardization proposal for TLS handshaking that includes the above protocols at this stage.</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);"><br class=""></div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">What we would like to hear:</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">1. what exactly is the structure that stores ephemeral keys in ECDHE/DHE?</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">2. What is the function that calculates the ephemeral public key of ECDHE/DHE and stores the value in the above structure?</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">3. After receiving a client hello or server hello message, where is the part that extracts the ephemeral public key of the communication partner from the received message? Also, where is the place to calculate the session key from ECDHE/DHE?</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);"><br class=""></div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Additional two information.</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Current situation:</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">I'm trying to implement it using "msquic".</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">The handshake in "msquic" uses "quictls" forked from OpenSSL, but I think the implementation of the TLS handshake is based on OpenSSL.</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);"><br class=""></div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Problem:</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">I would like to be able to use the TLS handshake part of OpenSSL (ClientHello, ServerHello) with protocol messages on behalf of ECDHE and DHE to perform key exchange and pass the generated session key to the TLS record protocol.</div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);"><br class=""></div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Nobuo Aoki (master 1st student, Japan).</div><div class=""><div class=""><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class=""><br class=""></span></font></div><div class=""><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class="">(It seems that the file could not be attached because of the large sending byte size. Instead, I'll share it from my university's storage. Here is the link for sharing)</span></font></div><div class=""><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class=""><a href="https://hunet-my.sharepoint.com/:i:/g/personal/mg66001_e_hiroshima-cu_ac_jp/Ecmdv1CofjZCniQ9vWFSLu4Bjfm7bYuShGcdG1J0IRZzjQ?e=p5s3uV" class="">https://hunet-my.sharepoint.com/:i:/g/personal/mg66001_e_hiroshima-cu_ac_jp/Ecmdv1CofjZCniQ9vWFSLu4Bjfm7bYuShGcdG1J0IRZzjQ?e=p5s3uV</a></span></font></div><div class="" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);"><br class=""></div></div><div><blockquote type="cite" class=""><div class="">2021/08/30 16:57、Matt Caswell <<a href="mailto:matt@openssl.org" class="">matt@openssl.org</a>>のメール:</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class=""><br class="">On 29/08/2021 20:41, Nobuo Aoki wrote:<br class=""><blockquote type="cite" class="">I am trying to identify the implementation<br class="">where “ephemeral public key” and “ephemeral private key” can be added,<br class=""></blockquote><br class="">I am unclear from your question whether you are asking how to add a new public/private key scheme for integration into TLS. Or whether you are simply asking for the location in the code where the key_share is generated. If the latter then you might look here for the client side:<br class=""><br class=""><a href="https://github.com/openssl/openssl/blob/e8e1f6d1a9e599d575431f559200018b8f822e0f/ssl/statem/extensions_clnt.c#L649-L705" class="">https://github.com/openssl/openssl/blob/e8e1f6d1a9e599d575431f559200018b8f822e0f/ssl/statem/extensions_clnt.c#L649-L705</a><br class=""><br class="">And here for the server side:<br class=""><br class="">https://github.com/openssl/openssl/blob/e8e1f6d1a9e599d575431f559200018b8f822e0f/ssl/statem/extensions_srvr.c#L1577-L1707<br class=""><br class=""><br class="">Matt<br class=""><br class=""></div></div></blockquote></div><br class=""></body></html>