HTTPS шифрование понять

HTTPS (SSL / TLS) Механизмы шифрования, в то время как основные вопросы, такие как передний конец серверных КСН Эндрюс должны знать, но многие статьи в Интернете по протоколу HTTPS всегда будут игнорировать некоторые из содержания.

Симметричное шифрование, асимметричное шифрование, цифровая подпись, цифровые сертификаты и т.д., в процессе обучения, в дополнении знать « что это такое,» если вы когда - нибудь думали, «Почему»?

1. Зачем вам шифрование?
  Httpтак как содержание передается в открытом, простых текстовых данных будет проходить через несколько физических узлов промежуточного проксисервер, маршрутизатор, WiFi точка доступа, операторы телекоммуникационных услуг и т.д., если информация была угнана во время передачи, передача контента полностью разоблачены, он Вы также можете искажать информациюпередаваемая не знает о двух сторон, это люди в центре нападения. Такнам нужно для шифрования информации. Самый простой и легкий для понимания является симметричное шифрование.

2. Что такое симметричное шифрование?
  Существует ключ, он может быть частью шифрования содержимого, шифрование может использовать его только для расшифровки увидеть оригинальное содержание, и наша повседневная жизнь с ключевой ролью одноготем же.

3, симметричное шифрование возможно?
  Если связьобеих сторон каждый держать тот же ключ, и никто не знает, безопасность связи, конечно, обе стороны могут быть гарантированы (если ключ не будет нарушена).

  Но самая большая проблема заключается в том, что ключ, как сделать обе стороны знают о передаче, в то время как другие не известны. Если ключ генерируется сервером и передаются в браузер, и что ключевой процесс передачи был угнан получить в свои руки на кого-то, как это сделать? Он сможет открыть любую информацию, передаваемую с обеих сторон с помощью ключа, так что, конечно, нет.

  Положите другую идею? Представьте себе, если внутренний браузер хранится ключ сайта A, и обеспечить, чтобы в дополнение к браузеру и сайт A, не будет никаких посторонних не знает ключа, теоретически это возможно с использованием симметричного шифрования, так долго, как браузер сохраненные хорошие все ключевые сайты HTTPS в мире на линии! Для этого явно нереально. (То, что в своих собственных ИОС или Android приложение, владеющим ключом заранее свои собственные серверы, путем симметричного шифрования для связи с сервером можно сделать? Комментарии область было указано, что это не линия на практике, никоим образом не делать хорошую работу ключей защита)

  Как это сделать? Так что нам нужно волшебство асимметричного шифрования

4, что асимметричное шифрование?
  Есть два ключа,правилоодин называется открытым ключом, называется частной,шифруются с общественностью должно быть содержание с закрытым ключомчтобы разблокировать то же самое, только закрытый ключ для шифрования содержимого открытого ключа можно разблокировать.

5, с помощью асимметричного шифрования работы?
  Учитывая асимметричные механизмы шифрования, мы можем иметь эту идею: первый сервероткрытым ключом непосредственно переданным в незашифрованном виде в браузер, то браузер на сервер до передачи данных сначала с хорошей повторной передачей шифрованияоткрытым ключом, эти данными безопасностипохоже, гарантировано! Потому что только сервер имеет соответствующий секретный ключ может разблокировать эти данные.

  Тем не менее, как браузер сервера, чтобы обеспечить безопасность этой дороги? Если сервер использует свой секретный ключ для шифрования данных в браузере, то браузер с открытым ключом может расшифровать его, и это с открытым ключом запуска в браузере, которого угнали общественности, а затем передается в виде открытого текста, он также использовать открытый ключ для расшифровки информации, поступающей с сервера. Так что теперь мы можем только гарантировать безопасность (на самом деле есть еще лазейки, позже сказать), когда передача данных на сервер в браузере, то воспользоваться, что вы можете думать о любом решении?

Улучшенные асимметричные схемы шифрования, это кажется?
  Мы должны понять , группой государственного и частного ключа, уже может гарантировать безопасность в одном направлении передачи, она использует два набора открытых и закрытых ключей, не в состоянии гарантировать безопасность двухсторонней передачи обоих? Рассмотрим следующий процесс:

  1- Открытый ключ имеет место для асимметричной криптографии, закрытый ключ A «B браузер имеет открытый ключ для асимметричного шифрования, секретный ключ B».

  2- запрос браузера на веб-сервер, сервер с открытым ключом открытый текст в браузере передачи.

  3-браузер открытого ключа сервера Б, передаваемого в открытом виде.

  После того, как все 4 браузера на сервер передаются в зашифрованном виде с ключом общественности, сервер получает секретный ключ A «расшифровку. Так как только сервер имеет секретный ключ A «может быть расшифрован, он способен обеспечить безопасность этих данных.

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

  Действительно! Несмотря на это есть еще лазейки в стороне ( в дальнейшем говорить), HTTPS шифрование не использовать эту программу, и почему? Алгоритм основной причиной асимметричное шифрование отнимает очень много времени, особенно некоторые крупные шифрования данных и дешифрования когда это раздутый и симметричного шифрования гораздо быстрее , по- видимому , придется использовать симметричное шифрование, то мы не можем использовать асимметричные адреса функций шифрования симметричное шифрование вышеуказанных проблем?

6, асимметричное шифрование + симметричное шифрование?
  Такасимметричное шифрование времени, асимметричное шифрование + симметричное шифрование может объединить его? Также доступнычтобы минимизировать количество асимметричного шифрования. Это, конечновозможно, и асимметричное шифрование, дешифрование используется только один раз.
  Посмотрите на этот процесс:

  1- Открытый ключ имеет место для асимметричной криптографии, закрытого ключа A».

  2-браузер в качестве запроса веб-сервера, сервера открытого ключа открытого текста передачи в браузер.

  3- браузер генерирует случайный симметричный ключ шифрования для X, зашифрованный с помощью ключа публичных к серверу.

  4- получить сервер с закрытым ключом A «, полученный ключ дешифрования X.

  Так что обе стороны будут иметь ключ X, и другие не могут знать это. После того, как все данные расшифровываются с ключевыми сторонами X шифрования.

  Отлично! HTTPS в основном является использование таких программ. Совершенная? Есть еще лазейки.

Средний атаки
  Посредник не получил браузер генерироваться ключ B, сам ключ шифруется открытым ключом, и только сервер закрытого ключа A « , чтобы получить его , чтобы открыть его! Однако посредник , чтобы получить все это без ключа A « , чтобы остановить плохо. Посмотрите:

  Сайт А имеет открытый ключ для асимметричного шифрования, секретный ключ A».

  Браузер запрашивает сервер, сервер с открытым ключом открытый текст передачи в браузер.

  Открытый ключ к посреднику угон, сохраняется пакет данных замены в свой собственный открытый ключ кованой открытого ключа B (который, конечно, обладает секретным ключом открытого ключа B, соответствующий B «).

  Браузер генерирует случайный симметричный ключ шифрования для X, с помощью открытого ключа В (браузер не знает открытый ключ заменяется) шифруется на сервер.

  После того, как угон посредник с закрытым ключом B «, полученного ключа дешифрования X, A и шифрование с открытым ключом передается на сервер.

  С закрытым ключом A «, полученного с помощью ключа дешифрования, чтобы получить сервера X.

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

Как доказать общественности браузер должен быть получен открытым ключом сайта?
  В реальной жизни, если вы хотитечтобы доказатьчто определенный идентификационный номер должен быть Сяомин, как делать? См идентификатор. Здесь государственные органы играют «общественное доверие»удостоверение личностивыданное им, власть может сделать свое собственное доказательство информацииличности человека. Интернет не может участвовать в таком доверительном учреждении общественного это? На сайте выдается «личность»?

7, цифровой сертификат
  сайт перед использованием HTTPS, необходимо «CA механизм» для выдачи цифрового сертификата, цифровой сертификат, есть владелец сертификата, открытый ключ владельца сертификата и другая информация, сертификат сервера передаются в браузер, браузер из сертификата открытого ключа в принятии на линии, так же как и сертификаткак удостоверения личности, вы можете доказать « что общественность должна быть на месте.» Здесь, однако, есть еще один очевидный вопрос, передача самого сертификата, как предотвратить подделку? То естькак доказать подлинность самого сертификата? Некоторые анти-подделки технологии ID карточки, сертификаты цифровой безопасностикак это? Мы будем решать эту проблему была близка к победе!

Как поставить предотвратить цифровой сертификат был подделан?
  Мы генерируем содержимое сертификата «подпись», если содержимое сертификата и подписи , чем то же самое будет в состоянии обнаружить или не был подделан. Эта техника называется цифровой подписи:

Цифровая подпись
  Этот раздел рекомендует увидеть рисунок позади текста в сочетании с пониманием, фигура слева представляет собой цифровую подпись производственного процесса, право процесс проверки (не может найти оригинал, вы можете увидеть этот график был перепечатан бесчисленное множество раз ...)

Здесь Insert Picture Описание
Цифровой процесс производства подписи:

  CA имеет асимметричное шифрование закрытых и открытых ключей.

  CA сертификат явно информация хэш.

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

  Очистить текст и цифровые подписи вместе образуют цифровой сертификат, такой цифровой сертификат может быть выдан на сайт.
После этого браузера , чтобы получить цифровой сертификат сервера приходит, как проверить , что это не так? (Он не был подделан, замещение)

Процесс проверки Браузер:

  1- получить сертификат, и прямо T, цифровая подпись S.

  2-用CA机构的公钥对S解密(由于是浏览器信任的机构,所以浏览器保有它的公钥。详情见下文),得到S’。

  3-用证书里说明的hash算法对明文T进行hash得到T’。

  4-比较S’是否等于T’,等于则表明证书可信。

为什么这样可以证明证书可信呢?我们来仔细想一下。

中间人有可能篡改该证书吗?
  假设中间人篡改了证书的原文,由于他没有CA机构的私钥,所以无法得到此时加密后签名,无法相应地篡改签名。浏览器收到该证书后会发现原文和签名解密后的值不一致,则说明证书已被篡改,证书不可信,从而终止向服务器传输信息,防止信息泄露给中间人。
既然不可能篡改,那整个证书被掉包呢?

中间人有可能把证书掉包吗?
  假设有另一个网站B也拿到了CA机构认证的证书,它想搞垮网站A,想劫持网站A的信息。于是它成为中间人拦截到了A传给浏览器的证书,然后替换成自己的证书,传给浏览器,之后浏览器就会错误地拿到B的证书里的公钥了,会导致上文提到的漏洞。

  其实这并不会发生,因为证书里包含了网站A的信息,包括域名,浏览器把证书里的域名与自己请求的域名比对一下就知道有没有被掉包了。

为什么制作数字签名时需要hash一次?
  我初学HTTPS的时候就有这个问题,似乎以上过程中hash有点多余,把hash过程去掉也能保证证书没有被篡改。
  最显然的是性能问题,前面我们已经说了非对称加密效率较差,证书信息一般较长,比较耗时。而hash后得到的是固定长度的信息(比如用md5算法hash后可以得到固定的128位的值),这样加密解密就会快很多。
  当然还有安全上的原因,这部分内容相对深一些,感兴趣的可以看这篇解答:crypto.stackexchange.com/a/12780

怎么证明CA机构的公钥是可信的?
  你们可能会发现上文中说到CA机构的公钥,我几乎一笔带过,“浏览器保有它的公钥”,这是个什么保有法?怎么证明这个公钥是否可信?

  让我们回想一下数字证书到底是干啥的?没错,为了证明某公钥是可信的,即“该公钥是否对应该网站/机构等”,那这个CA机构的公钥是不是也可以用数字证书来证明?没错,操作系统、浏览器本身会预装一些它们信任的根证书,如果其中有该CA机构的根证书,那就可以拿到它对应的可信公钥了。

  实际上证书之间的认证也可以不止一层,可以A信任B,B信任C,以此类推,我们把它叫做信任链或数字证书链,也就是一连串的数字证书,由根证书为起点,透过层层信任,使终端实体证书的持有者可以获得转授的信任,以证明身份。

  另外,不知你们是否遇到过网站访问不了、提示要安装证书的情况?这里安装的就是跟证书。说明浏览器不认给这个网站颁发证书的机构,那么没有该机构的根证书,你就得手动下载安装(风险自己承担XD)。安装该机构的根证书后,你就有了它的公钥,就可以用它验证服务器发来的证书是否可信了。

HTTPS必须在每次请求中都要先在SSL/TLS层进行握手传输密钥吗?
  这也是我当时的困惑之一,显然每次请求都经历一次密钥传输过程非常耗时,那怎么达到只传输一次呢?用session就行。

  服务器会为每个浏览器(或客户端软件)维护一个session ID,在TSL握手阶段传给浏览器,浏览器生成好密钥传给服务器后,服务器会把该密钥存到相应的session ID下,之后浏览器每次请求都会携带session ID,服务器会根据session ID找到相应的密钥并进行解密加密操作,这样就不必要每次重新制作、传输密钥了!

Резюме
можно посмотреть на этой картине, прочесать весь процесс (SSL, TSL рукопожатия есть некоторые различия, существует различие между разными версиями, но общий процесс это):
Здесь Insert Picture Описание
(Источник: .extremetech.com)

До сих пор мы открыли контекст всей снизу вверх и основные знания шифрования HTTPS, интересно , если вы действительно получите знать HTTPS это?
Время , чтобы найти несколько больше, больше, думаю , более четко понимать , что раз будет больше!
Таким образом, если у вас есть следующие вопросы могут ответить?

Зачем использовать симметричное шифрование + асимметричное шифрование?

Почему бы просто не использовать асимметричное шифрование?

Зачем нам нужен цифровой сертификат?

Зачем вам нужна цифровая подпись?

рекомендация

отwww.cnblogs.com/bufufan/p/10961071.html