Как я могу проверить браузер, чтобы увидеть, поддерживает ли он 128-битное шифрование? - PullRequest
3 голосов
/ 01 февраля 2010

Мне дали задание найти замену куску старого кода. Я предполагаю, что это проверено, чтобы видеть, поддерживает ли браузер 128-битное шифрование. Вот старый код: (я специально разделил ссылку на 4 строки)

<a href="http://www.verisign.com/update-cgi/outPage.exe" rel="nofollow noreferrer">http://www.verisign.com/update-cgi/outPage.exe</a><br> ?good=../docs/html/good.html<br> &nsbad=../docs/html/upgradeNSonly.html<br> &ie2=../docs/html/upgradeIEonly.html<br>
Вы когда-нибудь видели этот код раньше?
Как я могу продублировать эту функцию на странице php?

Разъяснение
Старый веб-мастер нашел ссылку на Verisign, которую проверил браузер. С тех пор Verisign прекратил поддерживать эту ссылку. Лично я думаю, что мы должны просто попросить наших клиентов нажать на Справка> О внутри браузера и посмотреть на силу шифра. Если это не как минимум 128, тогда мы просто скажем им обновить браузер.

Ответы [ 4 ]

1 голос
/ 02 февраля 2010

В SSL клиент подключается и отправляет список поддерживаемых шифров; затем сервер выбирает один из поддерживаемых им шифров, и этот шифр используется для соединения. Только когда соединение установлено («рукопожатие» завершено), HTTP вступает в игру.

В вашей настройке это означает, что вы должны настроить свой SSL-сервер так, чтобы он принимал различные шифры, но отдавал предпочтение тем, которые имеют закрытый ключ 128 бит или более, по сравнению с другими. Таким образом, шифр с длиной менее 128 бит будет выбран только в том случае, если как клиент, так и сервер не поддерживают шифр с 128 или более битами. Затем страница, отправленная в этом соединении, будет изменена в зависимости от фактически согласованного шифра.

Для такой настройки вам необходимо выполнить следующие действия:

  • для настройки списка шифров, поддерживаемых сервером SSL;
  • для обеспечения предпочтения сервера по сравнению с предпочтением клиента в списке шифров, поддерживаемых и клиентом, и сервером;
  • для доступа к шифру, фактически используемому из вашего механизма генерации страниц, например, PHP.

В Apache mod_ssl представляется, что точка 1 проста (директива «SSLCipherSuite»), а раздел «Переменные среды» указывает на то, что сервер SSL желает предоставить некоторую информацию о том, какой шифр был выбран движок генерации страниц; в частности, переменная SSL_CIPHER_USEKEYSIZE выглядит довольно хорошо. Следовательно, пункт 3 тоже выглядит легко. Однако я не уверен, как это отразится на мире PHP.

Для пункта 2 это немного сложнее. Документация «SSLCipherSuite», по-видимому, говорит о том, что сервер по умолчанию использует свой собственный порядок предпочтений, поэтому пункт 2 также будет простым, но это потребует небольшого тестирования.

Теперь остается только второстепенная точка, которая является статусом 3DES. Номинально он использует 192-битный ключ. Любой приличный криптограф или программист указал бы, что из этих 192 бит используются только 168 бит (дополнительные биты должны были действовать как биты проверки на четность, но никто их не проверяет, их просто игнорируют). Теперь, некоторые ученые также показали, что фактическая сила алгоритма ниже, что в некоторой степени эквивалентно 112-битному ключу, по крайней мере, если смотреть в надлежащем академическом свете. Поэтому NIST (федеральное учреждение США, занимающееся такими стандартами) выпустило рекомендацию о том, что 3DES следует рассматривать как предлагающий «только 112 бит безопасности», а 112 ниже 128.

Конечно, 112 битов все еще довольно далеко в области технологически невозможного (и должны оставаться таковыми в течение по крайней мере 30 лет, даже если технический прогресс будет идти в лихорадочном темпе), так что это не является реальной проблемой для любого практическая ситуация, но если вы находитесь в стандартном маниакальном настроении и хотите использовать «настоящие» 128 битов, то это вопрос для рассмотрения.

1 голос
/ 02 февраля 2010

Материал, который вы вставили сюда, не является кодом - это URL.

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

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

Если вы используете mod_ssl на apache в сочетании с mod_php (вы не сказали, на какой ОС / веб-сервере работает PHP), то вы сможете увидеть все виды дополнительных переменных $ _SERVER, включая «SSL_CIPHER», "SSL_CIPHER_USEKEYSIZE", "SSL_CIPHER_ALGKEYSIZE" и "SSL_SERVER_A_KEY"

Смотри также

http://httpd.apache.org/docs/2.0/mod/mod_ssl.html#envvars

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

Чего вы ожидаете достичь, зная, поддерживает ли браузер 128-битное шифрование?

С

1 голос
/ 01 февраля 2010

Все современные браузеры поддерживают 128-битное шифрование из коробки. У вас есть необходимость поддерживать браузеры старше IE 5.5?

Вы можете либо проверить строку User-Agent браузера и сделать предположения, либо вы можете направить их на страницу, которая использует 128-битный SSL-сертификат, и если они продолжают через него ... ну, они должны его поддерживать. 1003 *

0 голосов
/ 01 февраля 2010

Все современные браузеры поддерживают 128 бит. Однако вы должны принудительно применять эту сторону сервера, так как кто-то может использовать более старый браузер или подделать запрос на использование более низкого уровня шифрования (например, 40 или 56).

Я предлагаю вам спросить, как настроить веб-сервер для обеспечения его работы в зависимости от вашей платформы:

http://serverfault.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...