- Does it mean that both the server and the client produce the same session key in the same session.?
Sim, como é visível na imagem na questão recente.
If yes, why does it also say that "This is an asymmetrical key"?
Não faço ideia. É melhor você perguntar a um autor do artigo. A criptografia assimétrica é usada para criar um segredo compartilhado, mas não tenho idéia do que significa esta sentença.
Does "This is an asymmetrical key" mean that the session keys generated on the server and client are not the same?
Certamente não. O segredo compartilhado é o mesmo (é chamado de compartilhado).
- Do bullets 6 and 7 mean that on either the client or the server, the inputs to the algorithm that generates a session key are its own private key, and the other one's public key?
If yes, how are the session keys on the server and client identical, given their inputs are different?
Este é o ponto da "equação matemática" mencionada. Se as cores não forem suficientemente explicativas, também é uma explicação com números em Wikipedia :
- Alice e Bob concordam em usar um módulo p = 23 e base g = 5 (que é um módulo de raiz primitiva 23).
- Alice escolhe um inteiro secreto a = 6, depois envia Bob A = ga mod p
- A = 5 6 mod 23 = 8
- Bob escolhe um inteiro secreto b = 15, então envia Alice B = gb mod p
- B = 5 15 mod 23 = 19
- Alice calcula s = B a mod p
- s = 19 6 mod 23 = 2
- Bob calcula s = A b mod p
- s = 8 15 mod 23 = 2
- Alice e Bob agora compartilham um segredo (o número 2).
O princípio matemático por trás disso é "grupo multiplicativo de inteiros modulo p", mas mecanismos semelhantes estão por trás da RSA ou curvas elipticas cryptograpy.
How are the session keys different for different sessions? Are there inputs that are session-specific?
Diferentes chaves de sessão são criadas por diferentes trocas de chaves, que geram basicamente pares de chaves assimétricas aleatórias no cliente e no servidor. Nunca deveria acontecer a você que você iria gerar os mesmos dados aleatórios aleatórios duas vezes, caso contrário, não seria aleatório. Fazer isso no cliente e no servidor elimina o ponto único de falha (gerador aleatório quebrado), porque forçar tanto o servidor quanto o cliente a gerar os mesmos dados é ... bastante impossível.
A entrada para a troca de chaves também varia com base no algoritmo, mas basicamente também há módulo escolhido aleatoriamente (no exemplo acima, o número 23). Estas são três partes de entrada aleatórias para a troca de chaves, o que garante que você obterá um segredo compartilhado diferente para sessões diferentes.