Ответы пользователя по тегу Паттерны проектирования
  • Зачем в public API используют public key и secret?

    be_a_dancer
    @be_a_dancer
    Backend/Fullstack Developer
    Для ответа на этот вопрос необходимо понять, что такое ассиметричное шифрование.

    Краткое объяснение. Ассиметричное шифрование используется для безопасной передачи данных в заведомо небезопасной среде. Используя именно алгоритмы симметричного шифрования, оба участника должны договориться заранее о том, какой ключ использовать, что является потенциально небезопасным, потому что этот ключ можно перехватить и осуществлять атаку типа MITM либо прослушивая, либо подделывая пакеты.

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

    Работает он примерно так.
    Алиса и Боб хотят обменяться сообщениями.
    1 шаг. Они публично договариваются об использовании определенной формулы, по которой будет вычисляться корректность их ключей. Для данного примера - a^x (mod b), где A публичный ключ применяющего формулу и b - публичные ключ оппонента, а x - секретный ключ.
    2 шаг. Каждый из них придумывает секретное число. Для Алисы, например, 3, а для Боба - 6. Это число не передается никуда, но вычисляется результат выполнения изначальной формулы. A^3(mod B), а результат (для Алисы - Z, для Боба - U).
    3 шаг. Они обмениваются получившимися результатами и вычисляют значение формулы, подставляя вместо своего числа получившееся значение оппонента. Для Алисы это будет Z^3(mod B). И получившийся в результате этого действия ключ (он будет одинаковым для обоих) будет являться ключом подписи для обмена дальнейшими сообщениями.
    Ответ написан
    Комментировать