<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3853911</guid>
        <pubDate>Fri, 05 Nov 2021 18:51:31 +0000</pubDate>
        <title>TLS своими руками (без тяжёлых библиотек).</title>
        <link>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3853911</link>
        <description><![CDATA[Gonarh: Выкладывай на гитхаб, если не проприентарщина и прочая nda  :D]]></description>
        <author>Gonarh</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3853284</guid>
        <pubDate>Thu, 21 Oct 2021 15:37:05 +0000</pubDate>
        <title>TLS своими руками (без тяжёлых библиотек).</title>
        <link>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3853284</link>
        <description><![CDATA[jcxz: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422279&view=findpost&p=3850452'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Oleg2004 &#064; <time class="tag-quote__quoted-time" datetime="2021-08-06T14:45:33+00:00">06.08.21, 14:45</time></span><div class='quote '><strong class='tag-b'>jcxz</strong> В свое время я часто находил нужную информацию в области сетевого программирования в группах гугла</div></div><br>
Спасибо, но там ничего не было.<br>
<br>
Вобщем вопрос решён - уже всё работает.   :) <br>
Поддерживаются только 2 метода:<br>
<strong class='tag-b'>ECDHE_RSA_WITH_AES_128_GCM_SHA256  <br>
ECDHE_ECDSA_WITH_AES_128_GCM_SHA256</strong><br>
этого хватает для подавляющего большинства серверов.<br>
И объём исходников == немного больше 100кБ. Всего.  :)]]></description>
        <author>jcxz</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3850452</guid>
        <pubDate>Fri, 06 Aug 2021 14:45:33 +0000</pubDate>
        <title>TLS своими руками (без тяжёлых библиотек).</title>
        <link>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3850452</link>
        <description><![CDATA[Oleg2004: <strong class='tag-b'>jcxz</strong><br>
В свое время я часто находил нужную информацию в области сетевого программирования в группах гугла <a class='tag-url' href='https://groups.google.com/' target='_blank'>https://groups.google.com/</a>]]></description>
        <author>Oleg2004</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3850437</guid>
        <pubDate>Thu, 05 Aug 2021 22:02:05 +0000</pubDate>
        <title>TLS своими руками (без тяжёлых библиотек).</title>
        <link>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3850437</link>
        <description><![CDATA[jcxz: Гуглом пользоваться умею. И это:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422279&view=findpost&p=3850436'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2021-08-05T21:51:09+00:00">05.08.21, 21:51</time></span><div class='quote '><a class='tag-url' href='https://tls.dxdt.ru/tls.html' target='_blank'>Интересная статья</a></div></div>я тоже читал. Вы сами это почитайте: там более-менее подробно описано только начало хэндшейка, а про его завершение - только общие слова сказаны.]]></description>
        <author>jcxz</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3850436</guid>
        <pubDate>Thu, 05 Aug 2021 21:51:09 +0000</pubDate>
        <title>TLS своими руками (без тяжёлых библиотек).</title>
        <link>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3850436</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422279&view=findpost&p=3850435'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>jcxz &#064; <time class="tag-quote__quoted-time" datetime="2021-08-05T21:17:41+00:00">05.08.21, 21:17</time></span><div class='quote '>Если знаете где там описано как построить это сообщение...</div></div><br>
Вряд ли писатели известных библиотек использовали<br>
мистику и волшебство. Они наверняка пользовались RFC.<br>
Ещё можно использовать поиск:<br>
<a class='tag-url' href='https://en.wikipedia.org/wiki/Transport_Layer_Security#Algorithm' target='_blank'>Отсюда можно начать изучение</a><br>
<a class='tag-url' href='https://tls.dxdt.ru/tls.html' target='_blank'>Интересная статья</a>]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3850435</guid>
        <pubDate>Thu, 05 Aug 2021 21:17:41 +0000</pubDate>
        <title>TLS своими руками (без тяжёлых библиотек).</title>
        <link>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3850435</link>
        <description><![CDATA[jcxz: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422279&view=findpost&p=3850432'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Gonarh &#064; <time class="tag-quote__quoted-time" datetime="2021-08-05T17:08:43+00:00">05.08.21, 17:08</time></span><div class='quote '>Если уж в рфц не нашёл описания, хотя это нонсенс</div></div>Если знаете где там описано как построить это сообщение (&quot;Client handshake finished&quot;) <strong class='tag-b'>побайтно</strong> - просто дайте конкретную ссылку.<br>
Чтобы там было написано типа: &quot;этот байт кладём сюда, это туда, применяем к данным от смещения X0 до X1 такое-то преобразование, результат его, такого-то размера, кладём в сообщение начиная с байта Y&quot;.]]></description>
        <author>jcxz</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3850432</guid>
        <pubDate>Thu, 05 Aug 2021 17:08:43 +0000</pubDate>
        <title>TLS своими руками (без тяжёлых библиотек).</title>
        <link>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3850432</link>
        <description><![CDATA[Gonarh: Если уж в рфц не нашёл описания, хотя это нонсенс, остаётся только лить сырцы какой-нить опенссл, и собирать с собственным дебагом, ну и пошагово смотреть: кто что как куда и почему. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-08-05T17:09:48+00:00">05.08.21, 17:09</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422279&view=findpost&p=3850408'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>jcxz &#064; <time class="tag-quote__quoted-time" datetime="2021-08-05T13:46:00+00:00">05.08.21, 13:46</time></span><div class='quote '>Можно конечно расковырять исходники вышеуказанных библиотек, но это дело очень небыстрое в силу их объёма и запутанности.</div></div><br>
Другого варианта не вижу.]]></description>
        <author>Gonarh</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3850408</guid>
        <pubDate>Thu, 05 Aug 2021 13:46:00 +0000</pubDate>
        <title>TLS своими руками (без тяжёлых библиотек).</title>
        <link>https://forum.sources.ru/index.php?showtopic=422279&amp;view=findpost&amp;p=3850408</link>
        <description><![CDATA[jcxz: Пытаюсь написать клиента (си), открывающего соединение с каким-либо HTTPS-сервером без использования SSL-библиотек (типа OpenSSL или MbedTLS).<br>
Столкнулся с почти полным отсутствием мануалов по этой теме (в деталях, а не на уровне &quot;вызови функцию такой-то либы, она всё сделает&quot;).<br>
Единственное более-менее вменяемое описание, которое удалось найти: <a class='tag-url' href='https://tls.ulfheim.net' target='_blank'>The Illustrated TLS Connection</a><br>
Сделал, руководствуясь им, работает, но: только до шага &quot;Client handshake finished&quot;. Здесь наступил затык. В этом месте описано очень поверхностно. К тому же автор использует <strong class='tag-b'>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</strong>, который в настоящее время объявлен нерекомендуемым. А я бы хотел что-то умеющее работать с публичными HTTPS-серверами сейчас, а по-возможности - как можно дольше в будущем без переделок.<br>
Поэтому я решил использовать <strong class='tag-b'>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</strong> (ну или может быть TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - его все опробованные сайты выбирают при соединении с текущей версией браузера). Они рекомендуемые сейчас и на будущее.<br>
Вобщем - все шаги до &quot;Client handshake finished&quot; проходят нормально (тестовые данные совпадают с теми которые в &quot;The Illustrated TLS Connection&quot;). Но на этом шаге на формируемый мной кадр к серверу, сервер отвечает Alert-ом &quot;Bad record MAC&quot;. Подозреваю, что я или неправильно понял описание (которого с гулькин нос), или для <strong class='tag-b'>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</strong> кадр нужно формировать как-то иначе, чем для <strong class='tag-b'>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</strong>.<br>
<br>
RFC всякие по этому делу тоже пытался читать, но там тем более всё описано очень туманно. Без конкретики. Ну или надо перерыть гору материала. А мне нужно всего-лишь как я понимаю - правильно сформировать finished-кадр (расположить нужные данные в нужном порядке до и после шифрования AES128-GCM-SHA256).<br>
Можно конечно расковырять исходники вышеуказанных библиотек, но это дело очень небыстрое в силу их объёма и запутанности.<br>
<br>
Цель у меня:<br>
Версия: TLSv1.2<br>
Соединение с HTTPS-сервером с минимальными требованиями. <br>
Только один способ шифрования: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256<br>
И один или два алгоритма эллиптических кривых: &quot;secp256r1&quot;, &quot;curve25519&quot;.<br>
Проверил множество публичных HTTPS-серверов - все они приняли эти соглашения от моего <s class='tag-s'>недо</s>клиента. Значит их вполне достаточно для настоящего времени.<br>
<br>
Собственно - вопрос: Может кто посоветует вменяемый мануал (описание, пошаговое руководство) по TLS-хэндшейку? По шагам, с примерами и не на базе допотопных методов и алгоритмов? А на актуальных сейчас: с эфемерными ключами, на эллиптических кривых или secp256r1, GCM и т.д.?]]></description>
        <author>jcxz</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	