cat o-que-o-servidor-ve
O servidor não lê uma única palavra.
O CipherMesh é uma conversa que vive no teu terminal. As mensagens são cifradas na tua máquina e decifradas na máquina de quem fala contigo. O relay pelo meio só encaminha envelopes selados — e não tem forma de os abrir.
$ npx ciphermesh@latestyou › a chave nunca sai desta máquina
peer › então o relay só transporta ruído?
you › é exactamente essa a ideia
MC/VjmXudCTPadLwwpwrY4ChU+Q+ldw0wGcDHI4Y0Rgc
xOxBYXR0XZMc4orIkHaBj8BEMXzPcVymZfCrFvd+cEgY
KMwSBF2uYyimgKI/T6TLQ0VHxYzZwxNJ/Fau+4JlLOPd
A mesma mensagem, dos dois lados. O envelope é preenchido até um tamanho fixo, portanto o comprimento não diz nada sobre o conteúdo — e não vai assinado, portanto o relay não sabe quem o enviou.
ciphermesh --version
- version
- 2.9.0 — publicado no npm
- tests
- 443 a passar, verdes em cada push
- commands
- 66 no cliente, 63 deles também sem servidor
- transport
- X25519 + ML-KEM-768, sealed sender, com padding
- license
- MIT — clona, corre, lê
Cada linha abaixo dá para confirmar no repositório.
ciphermesh /help
O que levas
Tudo isto já está no cliente hoje — não é roadmap.
ml-kem-768
Pós-quântico híbrido
X25519 mais ML-KEM-768, misturados na raiz do ratchet. Tráfego gravado hoje continua ilegível para um computador quântico futuro, e a segurança nunca fica abaixo da construção clássica.
double-ratchet
Perfect forward secrecy
Um Double Ratchet dá a cada mensagem uma chave só dela. Comprometer um dispositivo hoje não abre as conversas de ontem.
sealed-sender
Sealed sender
O relay nem chega a saber quem enviou a mensagem. Junta-lhe o padding em blocos fixos e o tráfego de cobertura opcional: deixa de distinguir conversa de silêncio.
argon2id
Salas privadas
Salas com palavra-passe em que a palavra-passe nunca sai da tua máquina. O servidor guarda apenas um verificador, em memória, e a sala morre com a última pessoa.
alt+1..9
Buffers multi-sala
Fica em várias salas ao mesmo tempo e alterna com Alt+1..9. A que sala pertence cada mensagem viaja dentro do payload cifrado — o relay nunca fica a saber.
mdns
P2P sem servidor
Dispensa o relay: os peers encontram-se por mDNS na rede local, com quase o mesmo conjunto de comandos.
ciphermesh --threat-model
O que quem aloja pode e não pode fazer
Vale a pena ser directo nisto, porque é a razão de ser do projecto.
Quem aloja pode
- Encaminhar envelopes selados entre os peers
- Aplicar limites de ligação e de ritmo
- Recusar ligações de um endereço
- Tirar o serviço do ar
Quem aloja não pode
- Ler uma única mensagem
- Apagar uma mensagem específica
- Moderar uma conversa
- Entregar conteúdo que não existe em forma legível
As salas existem apenas enquanto lá estiver alguém. Quando a última pessoa sai, a sala e tudo o que lá foi dito desaparecem — não há nada para entregar depois.
ciphermesh /verify
Cifrar é só metade
Selar a mensagem protege-a do relay. Não diz nada sobre quem está do outro lado com a chave. O CipherMesh transforma essa conferência em algo que se faz em cerca de dez segundos.
na sala
› /verify peer
SAS code for peer: 8241 0937 55182
Confere treze dígitos
Os dois lados derivam o mesmo código curto a partir das duas chaves públicas. Lê-o em voz alta numa chamada, ou mostra o QR que o cliente imprime. Se os códigos coincidem, não está ninguém pelo meio.
Nunca é escrito de volta
O código só é comparado por pessoas, num canal que não é este. Não há nada para escrever, portanto não há nada que um atacante possa repetir.
O cliente lembra-se por ti
A chave de um contacto fica fixada na primeira vez que a vês. Se mudar, és avisado antes de escreveres a mensagem seguinte — não depois.
/fingerprint mostra a tua, /trustlist lista toda a gente que já confirmaste. Nada disto está escondido num ecrã de definições.
npx ciphermesh@latest
A correr em menos de um minuto
Sem conta, sem registo, sem instalar nada de forma definitiva.
01
Corre
$ npx ciphermesh@latestNode 20 ou mais recente é tudo o que precisas.
02
Aponta para um relay
$ ciphermesh.deEscreve ciphermesh.de no prompt do servidor para usares o hub público, ou corre o teu com npx ciphermesh server.
03
Combinem uma sala
$ /join secret-roomOs dois escrevem o mesmo nome de sala e está feito. Põe uma palavra-passe para a tornar privada.
Preferes o teu próprio? O repositório traz uma configuração Docker que obtém certificado Let's Encrypt automaticamente.
ciphermesh --hub ciphermesh.de
Agora há um sítio onde nos encontrarmos
Durante muito tempo, usar o CipherMesh exigia já conhecer alguém que alojasse um relay. Isso mudou: ciphermesh.de é um hub público, gratuito, aberto a qualquer pessoa — e é ali que a comunidade do projecto acontece.
- Server
- ciphermesh.de
- Room
- general
É este o processo de entrada, por inteiro. O hub está sempre ligado, portanto ninguém tem de combinar quem levanta o servidor.
Salas que qualquer um abre
Escolhe um nome, avisa quem queres lá dentro e começa a conversar. Sem conta, sem convite, sem lista de espera.
Toda a gente cai na general
A sala por omissão é para onde ir quando só queres ver quem anda por perto. Diz olá — é o que o projecto tem de mais parecido com uma porta de entrada.
Privada assim que quiseres
Põe uma palavra-passe e a sala é tua. A palavra-passe nunca chega ao servidor: ele guarda só um verificador que não dá para reverter.
Nada sobrevive à conversa
A sala existe enquanto lá estiver alguém. Quando a última pessoa sai, acabou — sem histórico, sem arquivo, sem nada que alguém pudesse entregar.
ciphermesh.de
Para que ele existe
npx ciphermesh server
Se precisas de mais, o relay é teu
Um relay que tu alojas responde a ti, não depende da disponibilidade de mais ninguém, e não faz as tuas conversas passarem por uma máquina administrada por um estranho. O repositório traz a configuração Docker pronta. Para o que é importante, é a melhor resposta — e é aquela para que o software foi feito.
Alojar o meu relayManter o hub não transforma quem o opera em leitor. É zero-knowledge como qualquer outro relay do CipherMesh — a única diferença é que este nunca dorme.
Termos de utilização do hubciphermesh --panic
Os comandos que esperas nunca usar
Quase tudo no CipherMesh protege a conversa. Esta parte protege quem tem o portátil na mão.
› /panic yesApaga tudo, já
Sessão, histórico, lista de confiança e chaves desaparecem do disco e o cliente encerra. Não há como desfazer — e é precisamente esse o objectivo.
› /autolock 5Tranca-se sozinho quando te afastas
O ecrã fica atrás da tua palavra-passe ao fim do tempo de inactividade que definires. Escreve /lock para trancar de imediato.
› /ephemeral 10mMensagens com prazo de validade
Define uma duração e tudo o que for enviado daí em diante desaparece dos dois lados quando o tempo acaba.
› /retention 7dGuarda só o que quiseste guardar
Tudo o que for mais antigo do que a janela que escolheres é apagado do disco. E o histórico só existe se abriste a sessão com uma palavra-passe.
Nada disto depende da colaboração de um servidor. Cada um deles é o teu cliente a agir na tua máquina.
ciphermesh /plugins
Qualquer comando de que sintas falta
Todo o comando com barra que o cliente não reconhece vai parar aos teus plugins. Um plugin é um módulo ES pequeno em ~/.ciphermesh/plugins — esse ficheiro é a API inteira.
export default {
name: 'roll',
description: 'Roll dice',
commands: {
roll: (args) => ({
send: `🎲 ${d(args[0])}`,
}),
},
}depois, em qualquer sala
› /roll 2d20+3
Responde directamente na sala
Um handler que devolve send publica o texto na sala, pelo mesmo caminho cifrado ponta a ponta de qualquer mensagem tua. Um que devolve info mostra só a ti.
Funciona em P2P também
O mesmo ficheiro corre no modo P2P, onde não há servidor nenhum envolvido. Nada num plugin depende de um relay.
Nada é descarregado, nunca
O CipherMesh não sincroniza, não vai buscar e não actualiza plugins sozinho. A única forma de código chegar a essa pasta é seres tu a pô-lo lá.
Sem sandbox — lê antes de correres
Um plugin é JavaScript arbitrário dentro do teu processo de conversa, com acesso às tuas chaves em memória. Trata um ficheiro de plugin como tratas um curl | sh: instala só o que escreveste ou leste linha a linha.
ciphermesh --license
Gratuito, e aberto até ao fim
O CipherMesh não custa nada e nunca vai custar. O código é público sob licença MIT — incluindo a criptografia, que é precisamente a parte que nunca devias ter de aceitar por fé.
Confere tu mesmo
Toda a afirmação desta página é verificável no repositório. O protocolo e o modelo de ameaças estão documentados por inteiro.
Traz uma ideia
Encontraste um bug, queres uma funcionalidade, discordas de uma decisão de desenho? Abre uma issue. Pull requests também são bem-vindos — o guia de contribuição explica o processo.
ciphermesh --thanks
Apoia o projecto
O CipherMesh é feito e mantido em tempo livre, e o hub público corre num servidor que custa dinheiro real todos os meses. Se te for útil, um café ajuda a manter os dois de pé.
Totalmente opcional. Nada no CipherMesh está atrás de uma paywall, e nunca vai estar.