Детальный разбор частей рукопожатия в HTTPS запросе

Гобелен - кликните для возврата на главную

Представляете себе лес? Так вот есть ещё Чёрный лес и находится он в Германии.

Начал разбираться с информацией которая находится в HTTPS клиентском запросе рукопожатия.

Обратите внимание! Объект изображённый на гобилене может отличаться от общепринятого вида описанного объекта. Тут дело в том что художник видит именно так!

104 549 руб.

Описание товара

Рукопожатие представленное ниже получено путём сканирования трафика от реального запроса браузера Firefox Nightly 137.0a1.

Исходное рукопожатие имеет вид(информация представлена в HEX): 1603[1]0107[2]5d010007[3]5903038e14f9a1948f79fc5979a8936[4]9a1e43eb203d83a173b3de8176e6e308f[5]65c33c 20e8fcf5962ab9322e8700a83ba4452967191cf42e4580bda5bc2a98c857bc7fbb001e130113031302c02bc02fcca9cca8c02cc030c013c014009c009d002f0035
010006f200000012001000000d626c6f672e697672752e6e657400170000ff01000100000a0010000e11ec001d00170018001901000101000b00020100002300000010000e000c02683208687474702f312e31000500050100000000002200080006040305030603001200000033052f052d11ec04c051f686451c7768f6c6479b96cd58842fc87cf439ade7da42049b908062be3706c0a227a47f1179f217aa7eb8ccbc5c8bca5b3afebc3982106c865413c1b008eff5bc6d61c83c28600d9b686e1260abe990f536a4e0ca3c9be62382b5c39b7a615f2ac5c2ccca4a79c9a9943b00d03a82c3aa6c6263b89b03797c0cc4a0103c754370acb9ea2725f6d215f4cc019efb4a3845780d1bbb95289df3c2042733cc6cc87c108c4a0941bd0fc99c62054d033b4b5c3a83f743a49b1ac737138bb6ca857fb74372870dbdd4ca90b365e4e1b220907077ba4d84436d6d953f1ca17cb918c3a3b95d12668638a886bf914ce596098fc11c6547c2bd80520692778d60adb9bc27257076811890f788bdfca9bbea45c38175a0e4cccc06a0883c5c193ed9187cc2b282acb243719126b967d7334117010d448a7babcc4842db00f17c641e445b0871a9d6b2217b326d65a70e3b5039b942b674200083a439d9ac1431d821aee23375e74a75ccc384a0a7c919c0ec487c923438461423cd7b084b4592e5451640339c0d1700f855a4c2f1cfa95889fb69c7d1c8408d592c4fc49144502bd7766d2c856e5b1b345a4a47c5716a52b686662211512b3b10199d7c09bbe4dc6acc779005b2421992769da21e9b1a21b65971b8a034f611546f9a55eedaa37e4972021654b2d3b6214c899dac92c8f6c7d287b8526baba6f28e75a9b8b143862e06848ac58d2a13a9c2f9b3c4b255efaa4874e6974b22098550723e6a0e89e623f7acbc3d759a0b0610199462525c8df0847e1961a8109b7187fc0242b0afe47b54a703631bdb2d06a5177aa7b46b6a2556788484075a74d55d20ca7057a6ccaf93140a8a80b27086619b8132f30af0c57d0e0849ae66078b1040f97b33273baf69d68897787f76973c8481a381d586c3072d3bfbbe482647feb0699593a2a843b17eb6249eb627b721bea0a2061655b7dd45b7c3423881b945d5f01fdf657dc93a6e5c21bd8f58c7a0993db1387b5d78a2989688d98ba761557181354139586e7ecc8b1475ac7a63c075291325bbaf99c7afb284901e438b0ff562e6956470dabd3b64544a7b7190a87cb637b3554376e9e6659520c359e4a8855bcf1d46882f68a4c939b7b5c37ef7e37ff7f9310fca9211904433656628d5369c3374b77b38ca951569cba1b1745ecbe3399b8c762d4a9666d817fda8a9a2d7b590514342c41dd8c21bb472322e48adaab9a37d9168c233550af7a1f28b3d699802ce018ac9f6c7ae57ba444b84f627a7f30595c656c6799304b8bcbda5569b06b7985a50456fa995ac55469c026b660335c6b304f99c1f0e025edca6b5c6353988672c4dec429e170335051a5d755d259909040a865e010abfd55ce4a87f02f0663a4c847c92959ba4033b9096d261c8fad06c58a3278e5b067527479c4b2db0234485e0675a9442ee41bffe9879955983f47937995c8d32a8b2f7d59129cb93b59ab074e01ae355171f7746d3aa7ca7ec3d99d623c6c361e4185c0749cf70a12b58689e81303265f0240845c7c062b554bac1959c95f6a01d451cb76a935c79b37d8907343237439b3172073a55b35358000c4d1999020725ccf5393893728153f784b7b744c8d6fa138664f0f67e35a49eb3b04e379df62b11f81307ec2ae618ad54204b723011cd7e7c72dffd4d06a419062deab3f9c8e740eb93c259cf6716119e320067001d00203011cd7e7c72dffd4d06a419062deab3f9c8e740eb93c259cf6716119e320067001700410492fa80be54c1a7ed1b0784ae3eb73b1261a6d790912eebdfd5635e9cd0ea498b08befa4bba07098dc0793d700e7762d2ff27e5a7da2524e737ab1f36c661021d002b00050403040303000d001600140403050306030804080508060401050106010201002d00020101001c00024001001b000706000100020003fe0d01190000010001c20020fa5f215a7308344ded80c1d3353fea2c10fd43441f7a05f10a8df672d0f312e400ef5802aa794845576027624bd1dfde2829ee04e571769c658133379bfa936a7ec2c9bfee7d4d071666dc88586d38cc2bcaec95d9af9e72d0116d29c73feb2c6c97e228090f1c35d10334678ee8408833d8a1a19f69d09d4d7e202b1ab1325ec97e9a0f2767230d2bc9ead99e172e67839985a454e556524ef59964a88b03e2c992f6b5322f5262653fefc069466150b2e2a9fdc820e681c85ecbd4cd05523ff694a1632ce31260db382dcfe1beb276cf0e1a2839426b955bc6481bc442df5313969e860ed93a00aba7b6123d6b41a1d31aa0c08ce7bb40f96f9e4785af645f33a1de15ef1b7d7c7a8f173f1ab5fefea5

  • 16 означает что запрос является рукопожатием Handshake
  • 0301 минимально поддерживаемая версия протокола TLS 1.0
  • 075d Длина полезной нагрузки, в рассматриваемом случаи соответствует 1885 байт
  • 1. 1603 Тип рукопожатия (Handshake), версия протокола TLS (Transport Layer Security).
  • 2. 0107 Размер сообщения рукопожатия (поля длины).
  • 01 Handshake Type. В рассматриваемом случаи означает ClientHello — то-есть тип сообщения, в котором клиент инициализирует рукопожатие, отправляя информацию о возможных криптографических параметрах.
  • 000759 Длина Handshake(всего рукопожатия), в рассматриваемом случаи соответствует 1897 байтам.
  • 0303 Желаемая версия протокола(не минимальная) в рассматриваемом случаи соответствует TLS 1.2
  • 8e14f9a1948f79fc5979a8936[4]9a1e43eb203d83a173b3de8176e6e308f65c33c - Client Random всегда имеет фиксированную длину 32 символа и следует сразу после версии протокола в ClientHello. Считается что Client Random состоит из временной метки 8e14f9a1 и оставшихся 28 случайных символов, при этом часть временной метки может быть так же случайной, как это видимо случайная указанная последовательность в рассматриваемом случаи, поскольку 8e14f9a1 соответствует 15 июля 2045 года, 13:48:17 (UTC)(по крайней мере искусственный интеллект сообщил что значение соответствует такой временной метке, а сам я не проверял).
  • 20e8fcf5962ab9322e8700a83ba4452967191cf42e4580bda5bc2a98c857bc7fbb - в начале 20 - это длина ClientId(то есть 32 символа), начиная с e8 и до конца приведённой строки это сам ClientId
  • 57bc7fbb001e130113031302c02bc02fcca9cca8c02cc030c013c014009c009d002f0035 Согласование шифров Эти байты указывают на шифры и алгоритмы, которые могут быть использованы в сессии, например, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256. В приведённой последовательности 001e означает длину данных отведённую для набора шифров, а данном случаи значение равно 30, что соответствует 15 наборам(ВРОДЕ БЫ именно наборов) шифров, поскольку на каждый шифр отведено 2 байта
    1301TLS_AES_128_GCM_SHA256 (TLS 1.3)
    1303TLS_CHACHA20_POLY1305_SHA256 (TLS 1.3)
    1302TLS_AES_256_GCM_SHA384 (TLS 1.3)
    c02bTLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (TLS 1.2)
    c02fTLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (TLS 1.2)
    cca9TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (TLS 1.2)
    cca8TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (TLS 1.2)
    c02cTLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (TLS 1.2)
    c030TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (TLS 1.2)
    c013TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (TLS 1.2, но устаревший)
    c014TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (TLS 1.2, но устаревший)
    009cTLS_RSA_WITH_AES_128_GCM_SHA256 (TLS 1.2, но без PFS)
    009dTLS_RSA_WITH_AES_256_GCM_SHA384 (TLS 1.2, но без PFS)
    002fTLS_RSA_WITH_AES_128_CBC_SHA (TLS 1.0/1.1, небезопасный)
    0035TLS_RSA_WITH_AES_256_CBC_SHA (TLS 1.0/1.1, небезопасный)
  • 01 Тип расширения. В данном случае 01 обозначает расширение Server Name Indication (SNI), которое используется для указания имени хоста, к которому клиент хочет подключиться. Это расширение позволяет серверу поддерживать несколько виртуальных хостов (например(ВОЗМОЖНО в данном случаи слово например не требуется), на одном IP-адресе).
  • 0006 Длина расширения в байтах(исключая тип расширения). В данном случае длина равна 6-ти байтам.
  • f2 Тип расширения ALPN(позже искусственный интеллект сообщил что f2 как раз указывает что имеется ввиду домен а не что то другое, ссылаясь на RFC 6066 для SNI)
  • 0000(возможно последовательность всё же 000000 а не 0000) Длина расширения равна 0. Таким образом в данном расширении не передаются дополнительные данные(то есть длина списка протоколов равна нулю) То-есть предпочтения по протоколам не указаны. Расширение ALPN используется в протоколах как HTTP/2, HTTP/3 и других, чтобы клиент и сервер могли договориться о наиболее подходящем приложении для дальнейшего общения.
  • 12 — Тип расширения. В рассматриваемом случаи 12 - расширение SNI(Server Name Indication).(ВОЗМОЖНО 12 это всё же не конкретный тип расширения а длина расширения, то-есть получается - 18 и кстати далее действительно следуют 18 байт связанные с этим расширением)
  • 0010 Длина расширения. В рассматриваемом случаи 16 байт
  • 0000 Дополнительные байты, которые могут использоваться для флага или других данных(вот тут вопрос они прямо тут передаются или тут указывается их длина - искусственный интеллект пишет что тут именно длина, хотя вопрос доверять ли этой информации остаётся).
  • 0d - Длина строки домена. В рассматриваемом случаи 13 байт.
  • 626c6f672e697672752e6e6574 Указан домен blog.ivru.net
  • 0017 - это тип расширения ALPN(Application-Layer Protocol Negotiation). При описании этого расширения ИИ2 сообщил что тип любого расширения(видимо для HTTPS, не уточнено только ли для запроса рукопожатия или ещё для чего то) занимает 2 байта. Само же расширение ALPN используется для согласования протокола прикладного уровня между клиентом и сервером. Например клиент может предложить протоколы: h2 (HTTP/2), http/1.1, сервер выбирает один из предложенных протоколов и сообщает о своем выборе.
  • 0000 - это длина для описания рассмотренного выше расширения, то-есть поскольку длина нулевая далее должно начинаться следующее расширение(так же ИИ сообщил что длина так же записывается двумя байтами для расширений).
  • ff01 - расширение Renegotiation Info (для защиты от атак, связанных с повторным согласованием параметров).
  • 0001 - длина расширения 1 байт.
  • 00 — данные расширения. В данном случае это пустое значение, указывающее на то, что клиент не поддерживает повторное согласование.
  • 000a - расширение типа Supported Groups (группы для обмена ключами).
  • 0010 - длина расширения 16 байт.
  • 000e - длина списка групп 14 байт.
  • 11ec - нестандартная группа.
  • 001d — x25519.
  • 0017 — secp256r1.
  • 0018 — secp384r1.
  • 0019 — x448.
  • Тут видимо идут ещё 2 группы, хотя ИИ думает что это уже начинается расширение, при этом тогда у текущего расширения неверная длина, с другой стороны если ещё 4 байта идёт это же расширение, то следующее вроде бы корректное. То-есть пока предполагаю что следующее расширение начинается 000b
  • 000b — тип расширения (EC Point Formats).
  • 0002 — длина расширения (2 байта).
  • 01 — длина списка форматов (1 байт).
  • 00 — список форматов (несжатый формат)
  • 0023 — расширение тип Session Ticket.
  • 0000 — длина расширения (0 байт)

Другие товары

Вы так же можете прочитать следующие статьи: