Sanket.Chat
Segurança: cifragem

Cifragem de ponta a ponta com Signal Protocol e AES-256 em todo o sistema

O Sanket (Sanket.Chat) da Tosh Defence cifra de ponta a ponta todas as mensagens, reações e difusões cifradas com o Signal Protocol, através da implementação oficial libsignal do Signal, auditada de forma independente, utilizando o estabelecimento de chaves PQXDH e o Double Ratchet com SPQR. Os ficheiros, os fotogramas das chamadas, o transporte das chamadas, o armazenamento local e todas as sessões TLS terminadas pela instalação utilizam AES-256, sem recurso a AES-128 e sem modo de compatibilidade.

AES-256 ou a operação é recusada: esta é a política de engenharia do Sanket, aplicada no código. Se a encriptação não puder ser efetuada exatamente como previsto, a operação é recusada em vez de se enfraquecer a proteção.

Mensagens: o Signal Protocol, sem modificações

A Sanket utiliza a biblioteca oficial libsignal do Signal para cifrar todas as mensagens, com a mesma versão em iOS, Android, computadores e servidores. Não contém nenhuma reimplementação do Signal Protocol nem nenhuma cifra alternativa para mensagens.

As sessões são estabelecidas com PQXDH, a extensão pós-quântica de X3DH, que combina acordos de chave X25519 com um encapsulamento Kyber. As mensagens são depois cifradas com Double Ratchet: cada chave de mensagem é expandida numa chave AES-256, numa chave HMAC-SHA256 e num vetor de inicialização; a mensagem é cifrada com AES-256 e autenticada com HMAC-SHA256; e a chave é eliminada após a utilização. O mecanismo de catraca pós-quântica esparsa do Signal funciona em paralelo em todas as sessões.

Sem mecanismo alternativo, por conceção

Um cliente recusa enviar uma mensagem se a cifragem com libsignal não puder ser efetuada. Os dispositivos que não publicam uma chave de identidade libsignal são ignorados, em vez de receberem texto não cifrado; os marcadores antigos de texto não cifrado são rejeitados; e o servidor recusa conjuntos de chaves que não sigam o formato libsignal. Não existe nenhuma via para enviar o conteúdo das mensagens em texto não cifrado ou com uma cifra alternativa.

Grupos sem chave compartilhada

As mensagens de grupo são cifradas por distribuição individual: o dispositivo remetente cifra a mensagem separadamente para cada dispositivo fidedigno de cada membro, através da respetiva sessão libsignal. As alterações na composição do grupo não exigem a renovação das chaves e um membro removido deixa simplesmente de constar da lista de distribuição.

Antes de encriptar, o remetente verifica a lista de dispositivos de cada conta destinatária, assinada pela chave da própria conta, e não envia nada para dispositivos que não constem dessa lista.

Ficheiros e chamadas

O conteúdo, os nomes e os tipos dos anexos são cifrados no dispositivo com AES-256-GCM, usando uma chave aleatória de 256 bits por ficheiro, e essa chave é transmitida na mensagem libsignal.

As chamadas de voz e vídeo têm dupla proteção. Os fluxos de cada participante são cifrados de ponta a ponta com AES-256-GCM, mediante uma chave individual por emissor que é renovada a cada 200 milissegundos, gerando cinco novas chaves por segundo para cada emissor, e uma nova chave aleatória sempre que alguém entra ou sai. Entre cada dispositivo e o servidor de multimédia, o SRTP aceita apenas AEAD_AES_256_GCM. O servidor de multimédia encaminha os fluxos cifrados sem os poder decifrar, e a arquitetura exclui a gravação de chamadas no servidor.

  • AES-256-GCM por ficheiro
  • Chaves de chamada por remetente, nunca uma chave partilhada pela sala
  • Cinco chaves de fotograma por segundo por emissor
  • Apenas SRTP AES-256-GCM

Transporte e armazenamento

Cada ligação de um cliente utiliza TLS 1.3 com TLS_AES_256_GCM_SHA384, ou TLS 1.2 com ECDHE e AES-256-GCM para as implementações de rede das plataformas que o exigem. AES-128, ChaCha20, conjuntos de cifras em modo CBC e RSA estático estão excluídos, e o grupo híbrido pós-quântico X25519MLKEM768 é proposto como primeira opção. Cada dispositivo aprovado também pode autenticar-se com o seu próprio certificado de cliente através de TLS mútuo.

Nos dispositivos, as bases de dados locais são cifradas com AES-256 e autenticadas com HMAC-SHA256. Nos telemóveis, o armazenamento do protocolo e os segredos do dispositivo são cifrados com uma chave protegida por hardware no enclave seguro, no StrongBox ou no ambiente de execução fidedigno.

Comprovação técnica

Veja os detalhes no documento técnico da Sanket

Todas as afirmações desta página são apresentadas integralmente no documento técnico público da SANKET sobre segurança e arquitetura, disponível para leitura gratuita sem registo.

Perguntas frequentes

Perguntas frequentes

Faça uma pergunta à nossa equipa

O SANKET utiliza o Signal Protocol?

Sim. O Sanket encripta todas as mensagens com a biblioteca oficial libsignal do Signal em todas as plataformas, utilizando o acordo de chaves PQXDH e o Double Ratchet com SPQR. Não contém qualquer reimplementação do protocolo.

A aplicação SANKET oferece mensagens cifradas com AES-256?

Sim. As mensagens utilizam AES-256-CBC com HMAC-SHA256 no âmbito da libsignal; os ficheiros, os fotogramas das chamadas, o transporte das chamadas, o armazenamento local e as ligações TLS utilizam AES-256-GCM. Não existe recurso alternativo a AES-128.

As chamadas de voz e vídeo são cifradas de ponta a ponta?

Sim. Os quadros das chamadas são cifrados de ponta a ponta com AES-256-GCM, mediante chaves individuais por emissor entregues através de libsignal, com 5 novas chaves de quadro por segundo para cada emissor, dentro de SRTP que aceita apenas AES-256-GCM.

As reações e as mensagens de difusão são encriptadas?

Sim. As reações e as difusões encriptadas são mensagens da libsignal, encriptadas de ponta a ponta como todas as outras mensagens. A prioridade, o prazo e a expiração de uma difusão também estão incluídos na encriptação.

O SANKET utiliza chaves de remetente para grupos?

Não. SANKET cifra as mensagens de grupo separadamente para cada dispositivo de confiança de cada membro, através de uma sessão libsignal própria para cada dispositivo, pelo que não existe uma chave de grupo partilhada.

Que versões de TLS o Sanket aceita?

É dada preferência a TLS 1.3, exclusivamente com TLS_AES_256_GCM_SHA384. TLS 1.2 só é aceite com ECDHE e AES-256-GCM. Não é aceite nenhuma versão anterior a TLS 1.2, e a troca híbrida de chaves pós-quântica X25519MLKEM768 é oferecida como primeira opção.

A libsignal foi auditada?

Sim. SANKET utiliza a biblioteca libsignal de Signal, auditada de forma independente, e o protocolo PQXDH foi formalmente analisado.

Analise a criptografia do SANKET com os nossos engenheiros

Tosh Defence apresenta o projeto criptográfico, camada por camada, a arquitetos de segurança e comitês de avaliação, com a versão de acesso controlado do documento técnico disponível mediante acordo de confidencialidade.