Можно ли защитить соединения с помощью предварительного ключа с помощью ktor? - PullRequest
0 голосов
/ 13 апреля 2019

Я работаю на клиенте и сервере.Оба будут работать на моих устройствах (несколько клиентов и 1 сервер).Для сервера я планирую использовать ktor.Я хочу, чтобы соединения были зашифрованы, чтобы никто, кто каким-либо образом слушал соединение, не мог выступать в качестве клиента для Сервера.Никто не должен знать, что связывают Сервер и Клиент.Поскольку у меня есть Клиент и Сервер, обмен ключами не представляет проблем, ключ может быть жестко закодирован.Если это возможно с ktor, не могли бы вы дать пример кода о том, как использовать предварительный общий ключ для шифрования всего соединения?Чтобы быть более конкретным, скажем, у меня есть программа hello world:

import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*

fun main(args: Array<String>) {
    val server = embeddedServer(Netty, port = 8080) {
        routing {
            get("/") {
                call.respondText("Hello World!", ContentType.Text.Plain)
            }
            get("/demo") {
                call.respondText("HELLO WORLD!")
            }
        }
    }
    server.start(wait = true)
}

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

...