Я искал ЧАСЫ о том, как это работает, и я просто не могу понять, как это может быть. Единственные данные определения состоят в том, что зашифрованное сообщение с открытым ключом может быть расшифровано только с помощью закрытого ключа. Для меня это просто глупость, и я объясню.
Веб-сайт должен быть загружен вашим браузером, что также означает, что сценарии Javascript и все остальные материалы доступны любому, кто ловит ваш сайт, если он тоже этого захочет. Это также означает, что теперь этот человек знает, как вы вычисляете свои вещи с помощью вашего открытого ключа, делая возможным БЕЗ закрытого ключа для его расшифровки.
Я просто пытаюсь выяснить, как это работает, и для меня не имеет смысла, что вы НЕ МОЖЕТЕ дешифровать зашифрованный текст с открытого ключа, когда у вас есть доступ ко всем вычислениям, сделанным со стороны, которую он зашифровал.
Я имею в виду, когда вы отправляете пароль, например, сначала, на СВОЕМ конце, на стороне браузера, он шифрует данные, которые будут получены сервером. Зашифровывая данные со стороны браузера, любой, кто взглянул на ваш исходный код, может узнать, как вы его зашифровали, и теперь его можно использовать для расшифровки. Я создаю новую систему шифрования для нашего веб-сайта, где сервер случайным образом создает ключ сеанса, который может использоваться только пользователем с соответствующим сеансом. Таким образом, только 2 компьютера могут общаться друг с другом с помощью одного и того же ключа, поэтому, если вы используете один и тот же ключ на другом компьютере, он просто не будет работать, так как каждый ключ сохраняется для каждого сеанса, который ключ умирает через определенное время. С того, что я прочитал, эти швы можно назвать системой симметричного ключа. Я хочу попробовать и запрограммировать свою собственную систему ассиметричных ключей, но во всех случаях, когда я читаю, я могу только выяснить, что независимо от того, что происходит как шифрование на стороне клиента, если злоумышленник перехватывает непосредственно перед отправкой информации, он имеет доступ к тому, как шифрование работает и для этого, не нуждается в закрытом ключе на стороне сервера, поскольку ему просто нужно повернуть процесс вспять, зная, как это было сделано на стороне клиента.
Я начинаю считать себя глупым, думая таким образом.
Я добавлю немного больше информации, так как думаю, что мы не совсем поняли, что я имею в виду. При отправке пароля произнесите мое имя «Дэвид» и назовем нашего пользователя WebUser. Мы назовем нашего вредоносного пользователя BadGuy. Таким образом, BadGuy позволяет интегрироваться между WebUser и его браузером. BadGuy также получает ВСЕ javascript-коды веб-страницы, позволяющие ему видеть, как вычисления работают, прежде чем они будут отправлены. WebUser вводит свой пароль «David», который передается в систему шифрования javascript. С самого начала BadGuy не нужно ничего расшифровывать, так как он уже поймал пароль. НО, когда веб-сайт отвечает, BadGuy выполняет все расчеты и может использовать полученные зашифрованные данные и расшифровать их, используя расчеты дешифрования, которые он может видеть в полученном коде веб-страниц.
Итак, единственное, что я могу понять, это то, что ассиметричные ключи используются для шифрования, которое технически дешифруемо с использованием общеизвестных известных чисел. Но в случае RSA эти 2 числа настолько велики, что понадобятся годы, чтобы выяснить известный расшифровщик. Как я могу также недооценивать, это то, что намного проще создать 2 числа из частного номера. Но в любом случае процесс шифрования обычно заканчивается общим временным интимным ключом между двумя сторонами для более быстрой связи, и никто не может предотвратить BagGuy между пользователем и браузером, но с современными технологиями, настоящая угроза - это больше атак MiTM, где один будет нюхать сеть. Во всех случаях не существует определенного способа передачи 100% данных в незашифрованном виде, поскольку как минимум 50% из них являются дешифруемыми, т.е. данные, поступающие с одной стороны, или данные, отправляемые на другую сторону.