Прошлое и настоящее HTTPS

задняя часть HTTPS Безопасность Charles
Прошлое и настоящее HTTPS

1. Предыдущая встреча

Скоро наступит китайский Новый год, и бизнес-потребностей компании станет намного меньше.Нет, Ван Сяоэр и другие провели техническое совещание, чтобы подвести итоги того, что они могли сделать раньше.

Я видел, как Brother C составил список, одним из которых было обновление https на всем сайте.

Брат С сказал: https — это тенденция, но в настоящее время наш интерфейс по-прежнему остается http. Магазин приложений всегда требовал использования https.С точки зрения безопасности и аудита магазина приложений несколько лет назад нам пришлось перевести весь сайт на https. Кто-нибудь вызвался добровольцем?

Сяо Эр некоторое время думал об этом: позволь мне сделать это, брат С, как раз вовремя, чтобы понять https.

Брат С: Хорошо, Сяо Эр, тогда ты можешь изучить https, а затем поделиться им с нами, когда у тебя будет время.

Little Two: Хорошо, Брат С, это гарантированно будет сделано!

2. Тайно спрятать Чжан Санфа

Я слышал, что Сяо Эр хочет сделать https, и Чжан Саньпан по эксплуатации и обслуживанию подошел к Сяо Эр.

Чжан Саньпан: Маленький Эр, я слышал, ты хочешь использовать https?

Сяо Эр: Да, Сан-Толстяк, нам нужно перевести весь сайт на https. Вы знали это раньше?

Чжан Саньпан: Ха-ха, я действительно понимаю, что обновление https — хорошая идея.

Маленький Эр: Большой Брат Сан, это здорово. У тебя есть время рассказать мне об этом? Мне не нужно тратить время на поиск информации.

Чжан Саньпан: Хорошо, теперь у меня есть время рассказать вам об этом и просто просмотреть.

Сяо Эр: Спасибо, брат Сан-Толстяк, я приглашу вас сегодня на ужин.

3. Симметричного шифрования недостаточно

Сан Фат: Маленький Эр, предположим, вы отправляете личное сообщение своей девушке, используя протокол http. Есть ли риск утечки?

Сяо 2: Конечно, протокол http является передачей открытого текста, и любая третья сторона в процессе передачи данных может перехватить и изменить открытый текст.

Сан Фатти слегка улыбнулся: Да, мы нарисуем картинку, чтобы показать это, вы будете знать, как неловко информация была подделана, ха-ха.

image_1c53cjed6t3s3ji108819b81r4sa5.png-28.6kB

Маленький Два: А? Действительно, было бы обидно. Моя девушка меня не убивает...

Три жирных точки: на самом деле, вы можете избежать этого, используя https.

Сан Фат: Маленький Эр, ты понимаешь симметричное шифрование и асимметричное шифрование?

Маленький Два: Знай что-нибудь. Симметричное шифрование означает, что ключи шифрования и дешифрования совпадают. Асимметричное шифрование — это содержимое, зашифрованное открытым ключом, которое должно быть расшифровано закрытым ключом, и содержимое, зашифрованное закрытым ключом, которое должно быть расшифровано открытым ключом.

Сан Фат: Маленький Эр много знает, на самом деле https использует характеристики симметричного шифрования и асимметричного шифрования. Но вы должны отметить, что симметричное шифрование примерно в 100 раз быстрее, чем асимметричное шифрование.

Сяо Эр: Я понимаю трех толстых братьев, тогда вы можете рассказать мне принцип https на примере прямо сейчас.

Сан Фатти: Хорошо, давайте сейчас возьмем пример. Симметричное шифрование работает быстро, поэтому для передачи данных с девушкой лучше использовать симметричное шифрование.

Сяо Эр: Хорошо, тогда я и моя девушка сначала договоримся о секретном ключе?

Сан Фат: Да, давайте нарисуем еще один рисунок, чтобы показать ваш процесс передачи данных.

image_1c53d58gq1ri1tnotk91j071dcub2.png-46.8kB

Сяо Эр: Да, толстый брат, чтобы другие не могли перехватить мою информацию.

Три Толстяка: Да. А поскольку скорость симметричного шифрования и дешифрования очень высока, влияние на скорость передачи данных минимально. Но как вы общаетесь и договариваетесь о секретном ключе со своей девушкой?

Сяо Эр: Это непросто, я могу просто рассказать ему онлайн.

Сан Фатти: Ха-ха, нет. Что делать, если ваш секретный ключ, передаваемый в открытом виде по сети, был перехвачен?

Маленький Два: А? Действительно, другие могут подделать мою информацию после перехвата секретного ключа.

Сан Фат: В настоящее время нам необходимо использовать наше асимметричное шифрование для согласования вашего симметричного ключа шифрования.

4. Асимметричное шифрование решает проблемы

image_1c53dev3118a91btb1c26m6m1o3ibf.png-26.1kB

Сан Фат: Сяомей генерирует свой собственный открытый ключ и закрытый ключ. Перед общением она может сообщить вам свой открытый ключ. Поскольку этот открытый ключ является открытым, его можно свободно передавать по сети.

Сяо Эр: Итак, я понимаю брата С. После того, как я получу открытый ключ Xiaomei, я использую открытый ключ Xiaomei для асимметричного шифрования симметричного зашифрованного пароля и отправки его в Xiaomei. После того, как Сяомей расшифровала его с помощью своего закрытого ключа, она получила симметричный зашифрованный пароль, который я сгенерировал. Да или нет?

image_1c53fp98maga1s40okg1v098r9bs.png-27.6kB

Три Толстяка: Да, это так. Но головная боль все еще остается, как убедиться, что вы получаете открытый ключ Xiaomei? Предположим, что посредник перехватил и подделал его для вас?

Little Two: Хм... это действительно проблема. Посредник отправляет мне свой открытый ключ, так что я использую открытый ключ посредника для шифрования нашего симметрично зашифрованного пароля, а затем посредник использует свой закрытый ключ для расшифровки нашего симметрично зашифрованного пароля. В это время посредник перехватил открытый ключ Сяомея, а затем зашифровал наш симметричный зашифрованный пароль с помощью открытого ключа Сяомей и отправил его Сяомею... Это ужасно, наш симметричный ключ шифрования был украден вот так.

Санпанг: На самом деле причина, по которой инструмент захвата пакетов charles может перехватывать https-пакеты, заключается в использовании упомянутого вами принципа, о котором мы поговорим позже. Теперь возникает вопрос, как вы гарантируете, что открытый ключ, который вы получаете, принадлежит Сяомею.

Маленький Два: О, это действительно головная боль...

Сан Панг: Вы же знаете, что у нас обычно есть нотариальная контора? Эта нотариальная контора - заслуживающая доверия структура, и все нотариальное заверение у него вызывает доверие.

Сяо Эр: Я знаю, я читал новости несколько дней назад, что старушка нотариально заверила пакет недвижимости в имперской столице парню, который не был кровным родственником.

Саньпан: Тогда подумайте об этом, если открытый ключ Сяомея нотариально заверен, может ли это доказать, что этот открытый ключ принадлежит Сяомею?

Little Two: Конечно, я могу это доказать. Есть ли в сети такая нотариальная контора?

Сан Панг: Такая нотариальная контора действительно есть, назовем нотариальную контору в сети УЦ. Мы должны восхищаться предшественниками, они заранее сохранили несколько доверенных сертификатов ЦС на наших компьютерах, а сертификаты включают информацию ЦС и открытый ключ ЦС. Эти сертификаты устанавливаются до тех пор, пока система установлена ​​на вашем компьютере. Подойди, посмотри на сертификат, установленный по умолчанию в моем компьютере.

image_1c50cl34t71k13ke7651a2b84im.png-219kB

Сяо Эр: О, я понимаю, это означает, что эти сертификаты ЦС по умолчанию абсолютно заслуживают доверия.

Сан-Фатти: Да, это то, что это значит. Следовательно, до тех пор, пока ЦС также выдает сертификат Сяомей, чтобы доказать, что она является Сяомей. Сертификат, выданный CA для Xiaomei, содержит личную информацию Xiaomei и открытый ключ Xiaomei. В то же время ЦС также выдаст закрытый ключ Xiaomei.

Вы сначала представьте Xiaomei как Baidu, давайте сначала посмотрим на сертификат, выданный CA для Baidu.

image_1c53gega513991vgv64l14vfdv3c9.png-118.7kB

Сяо Эр: Другими словами, пока сертификат, выданный ЦС для Сяомей, может быть безопасно передан мне, все в порядке.

Сан Фатти: Да, теперь проблема изменилась. Как можно безопасно передать вам сертификат Xiaomei? На самом деле сертификат, выданный CA для Xiaomei, содержит [информацию Xiaomei + открытый ключ] и цифровую подпись. Содержание цифровой подписи: хеш-значение [информация Xiaomi + открытый ключ], зашифрованное с помощью закрытого ключа ЦС.

image_1c52jnccmf5g183hbdeo7782143.png-45.6kB

Маленький Два: О, я, кажется, понимаю. Сертификат ЦС содержит открытый ключ ЦС и некоторую информацию о ЦС, а сертификат ЦС по умолчанию хранится на моем компьютере, поэтому я могу использовать открытый ключ ЦС для операций расшифровки, чтобы проверить правильность сертификата Xiaomei.

Три Толстяка: Верно. Мы можем использовать открытый ключ ЦС на вашем компьютере для расшифровки цифровой подписи в сертификате Xiaomei, чтобы получить хеш-значение подписи. Затем вы используете тот же хеш-алгоритм для вычисления хеш-функции [информация Xiaomi + открытый ключ]. Если хеш-значение подписи в сертификате Сяомей соответствует хэш-значению, рассчитанному вами, это означает, что сертификат действительно принадлежит Сяомей, в противном случае это не сертификат Сяомей.

image_1c52ks5du47j1ogr1l5g2221kmv5j.png-79kB

Маленький Эр: Брат Сан, я понимаю. https действительно проблематичен, но он защищает нашу конфиденциальность.

Сан-Фатти: Да, если есть убыток, будет и выигрыш!

Маленькая Двойка: Мммм. Теперь я безопасно получаю открытый ключ Xiaomei через сертификат Xiaomei. Затем я случайным образом генерирую здесь симметричный ключ шифрования.После того, как этот симметричный ключ шифрования будет зашифрован открытым ключом Xiaomei, его можно безопасно передать в Xiaomei.

Саньпан: Да, Сяомей расшифровывает его своим закрытым ключом и получает пароль симметричного шифрования, о котором вы договорились. В будущем вы можете использовать симметричное шифрование для передачи данных и тайно отправлять их, ха-ха~

Сяо Эр: Брат Сан Фатти действительно потрясающий.С этого момента мне не нужно беспокоиться о том, что я буду болтать со своей девушкой и быть обманутым.

Три Толстяка: Ха-ха. Вы считаете себя браузером, а Xiaomei сервером. Это весь процесс передачи https.

Сяо Эр: Понятно, позвольте мне нарисовать запущенный процесс https между браузером и сервером.

image_1c53h99r81cpl2fp142b1ir5sc6d3.png-65.3kB

Сан Фатти: Да, да, Сяо Эр очень силен, в основном это процесс.

Сяо Эр: Нет, нет, я хотел бы поблагодарить трех толстых братьев за его совет, ха-ха.

5. Принцип захвата HTTPS-пакетов Чарльзом

image_1c53j78831ffh1q829cboukbeqdg.png-133.7kB
Санпанг: Малыш Эр, мы знаем, что инструмент захвата пакетов charles может перехватывать https-пакеты. Вы знаете, как это работает?

Сяо Эр: Я действительно не знаю. Само собой разумеется, https — абсолютно безопасный протокол, и charles не будет сканировать контент.

Три жирных: Вы помните, что при использовании charles для перехвата https-пакетов вам необходимо установить сертификат charles на свой телефон?и доверять сертификату?

Little Two: Да, да, есть этот этап операции.

Три толстяка: это шаг, чтобы заставить Чарльза захватить ваш https-пакет. Я покажу вам блок-схему, и вы поймете.

image_1c53apjmvi601p3hq7u5jb6t9o.png-82kB

Сяо Эр: Оказывается, дело обстоит именно так, разве это не проблема, о которой я только что упомянул. Значит, https не является безопасным протоколом?

Три Толстяка: Нет. Поскольку вы устанавливаете и доверяете сертификату charles, это ваша собственная активная операция, или можно сказать, что это результат вашей собственной активной утечки. Если вы не доверяете сертификату charles, то данные не будут переданы и соединение будет прервано напрямую. Таким образом, https по-прежнему является безопасным протоколом.

Сяо Эр: Понятно, это правда, спасибо Сан Фатти.

Happy Done

Принцип https понятен, и, естественно, последует следующее.

Сяо Эр перечислил, что делать дальше: 1. Обратиться в УЦ (нотариальную контору) за свидетельством собственного сайта; 2. Измените http-ссылки статических ресурсов в коде на https-ссылки; 3. Измените ссылку http в ajax на ссылку https; 4. Развернуть сертификат на nginx; 5. Самопроверка завершена.

Согласно этому списку, Сяо Эр успешно выполнил шаг за шагом.

В конце концов, запуск https завершен, наслаждайтесь послеполуденным солнцем, счастливо сделано~


image_1c5582vev1mql1lrpbm3198i1pkop.png-127.1kB