Resumo

  • Version Negotiation carrega uma lista sem proteção criptográfica das versões que o emissor declara aceitar.
  • O eco dos identificadores dá alguma segurança de que o Initial foi observado, mas não autentica o servidor nem sua política de produção.
  • Um recibo útil liga o pacote bruto à próxima escolha e às informações de versão autenticadas no handshake.

Um painel de compatibilidade mostra três versões QUIC para um endereço de borda. A fonte é uma captura: o cliente tentou uma versão, recebeu Version Negotiation e viu três alternativas. Transformar isso em inventário de capacidade é pedir mais à captura do que ela pode entregar.

A seção 6.1 da RFC 9000 prevê a resposta quando a versão escolhida pelo cliente não é aceitável. O pacote lista versões que o servidor aceitaria e pode ser gerado sem manter estado. O servidor também pode limitar quantas respostas envia. Logo, silêncio não equivale a uma relação completa do que não é suportado.

O formato cria um vínculo estreito. Pela seção 17.2.1, Version vale zero; o DCID da resposta copia o SCID do cliente e o SCID copia o DCID do Initial. Isso oferece alguma segurança de que o emissor viu o Initial. O restante contém valores de versão de 32 bits.

Ver o Initial não é autenticar-se como o serviço. A seção 12.1 afirma que Version Negotiation não tem proteção criptográfica. Um equipamento no caminho enxerga os IDs necessários. O pacote não traz certificado TLS, verificação Finished ou parâmetros autenticados que vinculem a lista ao endpoint autenticado pelo TLS.

As regras do cliente removem ambiguidades simples sem elevar a prova. A seção 6.2 determina que um cliente compatível apenas com QUIC v1 abandone a tentativa ao receber um pacote aplicável. Há duas exceções: descartar Version Negotiation depois de processar outro pacote com sucesso e descartar uma lista que contenha a versão originalmente escolhida. Isso ajuda contra injeções óbvias e respostas antigas; não assina uma política de produção.

A camada mais forte aparece no handshake. A RFC 9368 §3 define informações de versão com Chosen Version e Available Versions, trocadas por um mecanismo autenticado. No QUIC v1, elas usam o parâmetro version_information. A seção 9 diz expressamente que a segurança depende dessa autenticidade, fornecida pelos parâmetros de transporte autenticados do QUIC v1.

O resultado é uma escada de evidências. O Initial registra a tentativa do cliente. O pacote desprotegido registra o que um emissor anunciou naquele contexto. O Initial seguinte mostra a nova escolha. O handshake autenticado fixa a versão escolhida e, quando aplicável, as disponíveis autenticadas. A conexão terminada mostra o que de fato funcionou.

Essa escada explica uma nova tentativa com outra versão ou um abandono específico. Não prova que toda borda anycast oferece a mesma lista, que as opções continuam ativas, que todas completam uma transação de aplicação ou que o serviço nomeado enviou a resposta inicial. Um inventário exige sondas autorizadas em várias bordas, identidade do par confirmada pelo TLS, informações de versão autenticadas, identidade do software e da configuração e teste de aplicação concluído.

O recibo operacional deve manter versão oferecida, horário e quíntupla, DCID e SCID do Initial, bytes exatos, IDs repetidos, lista na ordem original, resultado das regras de descarte, próxima versão, versão negociada, version_information, identidade TLS, borda ou release e desfecho. Observar uma versão posterior mais baixa também não atribui downgrade; isso requer transcript autenticado, conjuntos disponíveis e regra de seleção.

O pacote é útil justamente em sua escala correta: marca uma bifurcação de compatibilidade. Não é certificado de servidor, manifesto de implantação nem promessa para toda a frota.