Способ шифрования, в котором:
Для шифрования и расшифровывания применяется один и тот же криптографический ключ
Отправитель и получатель должны иметь pre-shared key
Для работы симметричного шифрования применяется один ключ:
Математический алгоритм шифрования берет текст и ключ
На выходе получается зашифрованный текст
При дешифровке, применяется тот же самый ключ с алгоритмом дешифрования
Если злоумышленник узнает наш ключ, безопасность сведется к нулю
Асимметричное шифрование
Способ шифрования, при которой:
Публичный ключ используется для шифрования информации или проверки электронной подписи
Приватный ключ используется для дешифровки полученной информации
У отправителя и получателя не имеется pre-shared key
Получатель имеет приватный и публичный ключ
При установке соединения получатель дает отправителю публичный ключ
Протокол SSL работает на данном принципе
Протокол HTTPS по сути проткол HTTP, вложенный в протокол TLS в TCP протоколе
Злоумышленник не имея приватного ключа не сможет расшифровать сообщение
Однако злоумышленник может представиться получателем и сделать подмену ключей
Дать отправителю свой публичный ключ
Отправитель зашифрует данные открытым ключом злоумышленника, отправит злоумышленнику
Злоумышленник расшифрует своим секретным ключом данные отправителя (например пароль)
Злоумышленник уже установит шифрованную сессию с настоящим получателем
И в установленной сессии использует расшифрованные данные (например пароль)
Чтоб защититься используют удостоверяющие центры (CA)
Получатель (например банк) делает запрос CA на подпись сертификата
CA получает метаданные от получателя:
Открытый ключ
Доменное имя
Алгоритм хэширования
Срок действия
Получив запрос, CA вычисляет хэш на основе этих данных
Шифрует открытый ключ получателя (например банка) уже своим закрытым ключом
Зашифрованный ключ является сертификатом и содержит метаданные из запроса
Теперь при установлении соединения Отправитель - Получатель (например банк)
Отправитель получает сертификат от получателя вместо обычного открытого ключа
На самом деле в современные браузеры импотртированы ключи из CA
При проверке получателя происходит процедура:
Отправитель получает открытый ключ самого CA
Т.к. сертификат был зашифрован закрытым ключом CA
Отправитель расшифровывает его открытым ключом CA
На основе метаданных вычисляем хэш
Вычисленный хэш сравнивается с расшифрованным
Если совпадают, то ключ действительно принадлежит получателю (например банку)
У злоумышленника не может быть закрытого ключа CA
Соответственно он не сможет подписать сертификат
Посмотреть, как это выглядит в консоли Linux
# openssl s_client -connect ya.ru:443 ...Вывод с обменом ключами...
GET / HTTP/1.1
Host: ya.ru ...Дальнейший вывод...
Комментарии пользователей
Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!