zkTls
ERC55 Meetups · 2 Sept 2025 · 48:40
zkTLS is presented as a way to prove cryptographically what a website's server returned to you, replacing the screenshot that proves nothing and avoiding the handing over of session keys that would expose cookies and tokens. In the TLS Notary approach, the TLS key is split between the user and a notary, who co-signs that the exchange happened without seeing the data, using garbled circuits and oblivious transfer. The speaker contrasts this with trusted-hardware and proxy-based designs, noting that the notary approach is limited by server timeouts, network distance and trust in the notary, while a proxy with interactive zero-knowledge proofs adds almost no latency. Examples include an email-controlled account and proving a bank transfer to withdraw USDC from a pool.
Topics
From ERC55 Meetups, hosted by ERC55.
Transcript
Pode começar? Pode, pode >> bora, galera. Prazer todos. Eh, acho que alguns eu já conhecia vendo pela primeira vez. Assim, já vou avisando, não esperem nenhuma aula tipo Bartic assim né? Que Bartic botou o nível aqui, eu vim botar o nível aqui, assim para vocês verem o extremos, né? É, eu >> v ver como vai do outro lado. >> Exato. Como que é? tá do outro lado, entendeu? Eh, eu sou eu não sou formado em engenharia, nem matemática, nem computação, sou formado em administração. Então, se alguém tiver dúvida de criptografia, pergunta ali, né? Alguém aqui conhece sobre TLS?
TS >> tá TS, tá? Se tiver perguntando sobre TLS, pergunta para ele. >> E aí, aí a gente vai assim, entendeu? Eh, tá. Hoje a gente vai falar um pouco de ZTLS, TLS Notary e Garb Circuits, que é seria, eu digo one em NPC e Obliv transfer. Esses dois conceitos eh existem vários protocolos de MPC que nem em Zi, né? Eh, em Feless Ly, especificamente você precisa entender esses dois. Tem mais outros dois que você precisar entender, que é eh vôley eh e Interactive ZK. A gente não vai entrar
nisso hoje. Então é isso, é esse vai ser o tema. Eh, e só assim, só um pouco de contexto, tá? Hoje em ZTLS não tem z, na verdade, devia se chamar MPC TLS. Eu lembro até hoje porque eu tava no antes de virar ZKTLS era só TLS notary. Então tudo que não vou falar que tudo tá eh a TLS notary, a pessoa que vou contar a história desde o começo, então e de como que isso virou ZQTS. Em 2013, tinha uma pessoa chamada Dan, que hoje tá no time
do T Let's Go, ele fez a proposta de, pô, e se a gente conseguisse eh provar, né, alguma informação da internet de forma com criptografia? Basicamente que vamos dizer que eu tenho, eu quero provar que eu tenho R$ 10 no meu banco do Nubank ou que eu tô devendo, caso essa é mais verdade, que eu tô devendo dinheiro pro Nubank e eu quero provar isso hoje. Como que a gente prova? A gente tirou um print, né? Na época o problema que eles queriam resolver na época não existia, não existia eh só existia Bitcoin. Na época, o problema que ele queria resolver com isso era que em 2013 tinham várias eh protocolos de
compra e venda P2P de Bitcoin e é só que não tinha não tinha muito trust. Então a ideia do Dan era de pô e se a gente conseguir provar que o cara fez a transação com criptografia pro outro para resolver os problemas do P2P que é trust. Essa foi a essa foi ali o o primeiro nascer da ideia dos TLS, né, dos TLS notary, né? E eles fizeram proof of concept, mas não foi pra frente. E o primeiro proof of concept eles usaram, eles hackearam o TLS 1.1, né? Eh, e tinha o P of con ficou na caixa. O Dan ele não era de web 3 nem nada. a em
2020, eh, aí o Barry e o time da PS acharam interessante assim e aí juntaram um time, aí esse time viu, né, esse post do, né, na no começo eles queriam fazer coisa mais de identidade assim, sabe? Como eu provo coisas da minha identidade, isso em 2020. Aí eles viram esse post do do Dan e chamou Dan. Aí que nasceu o TS. Então, eh, do TLS, mas só que o TLS Not ele nasceu graças a a esse primeiro conceito do Dan, né? Eh, e na época já tinha um uma iniciativa que chamava DEC, que eles tentaram fazer algo similar,
mas não deu certo. E eles tinham o paper da Paddle Labs. Na verdade, o paper da Paddle Labs, que hoje é Prim Labs, acabou dando toda a base matemática proje com TLS. E o Zigls ele nasceu, eu não vou falar que time que foi, mas tinha um time que eles estavam levantando capital. em cima da tech da TLS Notary, porque TLS Notary era open source. Tiveram alguns times que levantaram a capital em cima da na tech da TLS not e ele chamou isso de ZTLS para ser mais vendível pra VCS, por isso que hoje é chamada de ZTLS.
Mas eh aí o que que aconteceu? Aí os vist que investiram neles começaram a Porque antes não não existia esse hype, essa esse esse conceito, né? Então, como que você gera um hype e um conceito para você buildar, né? Eh, para você levantar capital da sua empresa? Pode estar com uma nova tecnologia. ZTL que ZTL que ZTL ZTLS é muito mais era muito mais na época ainda tá tinha um hype do Z, né? é muito mais atrativo do que só falar se ela no Mas eh, e eu lembro que eu encontrei esse founder, né, que eu também tava trabalhando em nota não lembra. Falei: "Pô, por que que você chamou de?" Ele
falou: "Cara, posso ser sincero, você vai captar 10 vezes mais." Então, foi isso. Eh, então, ZLS e hoje acabou abrangindo, né? Mas não tem zqu notary. Eh, e existem algumas formas de você fazer isso. Mas agora vamos paraa apresentação. Esse foi um histórico assim, né? Que da onde que surgiu? Qual o problema que hoje de ou fala de? Eu não gosto de falar de uma fala de GTLS. GTLS resolve.
Eh, que hoje a gente tem uma um protocolo de comunicação muito boa entre eu e o servidor, né? Eu e a Google, quando você vai entrar na Gmail, tem uma segurança muito boa, só que você não consegue provar isso para uma pessoa terceira, que é o problema de 2013 do como que eu provo que eu tenho tantos reais na conta tal, você vai tirar o print screen, só que Photoshop, ea e hoje então não dá mais. como que a gente prova com criptografia eh dados que a gente tem acesso, né?
O TLS, eh, ele é um protocolo muito bom para duas pessoas, porque na criptografia, é, Bart que me corrija se eu estiver errado, correct me if wrong, mas a criptografia eh, >> aí o aí o o Mar, o Marcelo, o Marcelo vai ouvir. Marcelo também pode me corrigir. Eh, a criptografia tem simetric e asetric encryption. A simetric encryption e ela é boa para dados maiores.
Assimyetric, a asetric encryption, ela não é muito boa para dados maiores e ela é boa para dados menores, só que ela é mais segura. Tipo, porque a simetrica encrypt tem um tem um problema de que você o primeiro problema do symmetrical encryption é que você e a pessoa precisar chegar numa chave comum. Esse esse do assimétrico não precisa. Você dá public, eu dou a minha dou minha public e tá tudo certo. Só que para muito dados a a simetrical encryption ela não é tão eficiente. Então hoje o TLS como o que que ele faz assim em geral? Ele usa um protocolo que chama para chegar numa asetricos
asymric encryption. Ele usa public, ele usa asetricion para que tanto eu, vamos dizer que eu sou o servidor, o Thiago é o client, eu e o Thiago a gente vai chegar numa key em comum de forma segura, usando a encryption. para agora que a gente tem essa aqui, agora a gente consegue transitar dados usando essa simetric. Esse é o um resumo overview de TLS. Eh, só que qual que é o problema agora? Qual o seu nome? Eh, barba. Agora, pô, como que o barba vai verificar isso? Ele tem que ter acesso
a simetri a assimetric e não é seguro eu dar acesso à simetric porque daí o barba vai poder ver tudo, inclusive o meu, os meus cooks, meus off token, tudo, né? Então, eh, e o Barba também só vai conseguir verificar enquanto a sessão tiver aberta. Se a sessão fechar, já era. Tipo, o que garante que o Thiago não encriptou com uma K X e falou: "Ó, Barba, essa foi o que recebi", sabe?
Tipo, não tem como ele ele verificar isso. Então, o que que >> Sim, cada vez que você abriu uma comunicação é uma chave nova, né? Eh, então não adianta você dar a chave pro pro B. Então, é, esse é o problema que a gente tá querendo resolver. E o que que isso permite? Isso permite muita, isso permite que agora todos os dados que você tem acesso, sejam eles públicos ou privados. Públicos é fácil de o cara verificar o cara mais dados privados, agora você consegue eh provar criptograficamente que você tem acesso a esses dados. Se esses dados estão
corretos, não sei. Mas você tá, tipo, quando você prova, tá provando que você tem acesso ao dado X do servidor do Nubank. E isso foi assinado pelo servidor do Nubank. É isso que você tá provando criptograficamente. Se o Nubank for hackeado e mudar a sua conta do banco, você vai provar aquilo, entendeu? Eh, mas se isso for quebrado, esse é o mínimo dos problemas. Então, é isso que a gente consegue fazer. Então tudo que você vê na internet agora, tipo, hoje quando você vai entrar no site, você entra num site, todas as informações que tá lá, o que o que acontece quando você entra num site, o front vai fazer várias requests pro servidor e ele vai trazer os seus dados
e te displayar no front. Você consegue agora provar, ah, eu tenho tanto na minha conta do NEC, eu tenho tanto de seguidores, o Vitalic me mandou uma DM e tal. Então tudo que você vê no pronte agora você consegue provar criptograficamente. Isso é o que os TLS faz. Eh, então aqui tava falando um pouco de TLS. O no https, o S é o secure do TLS. Já entrou num site tipo: "Ah, pô, não tem HTTPS, é só HTTP.
É porque essa essa eh quer dizer que a comunicação ela não não tem segurança. Eh, porque, por exemplo, hoje sem o TLS, se a gente só tá fazendo comunicação, eu posso pegar um que é tudo bits, né? No no no no computador é tudo bits. Então, eu posso pegar um leitor de frequência e eu vou ver a frequência do Wi-Fi e eu consigo e eu pego os dados, entendeu? Eu vou ter os 0s. Aí eu transformo nos dados. Só que com TLS o que acontece? Se eu fizer isso, eu vou pegar um dado encriptado, entendeu? E aí tá encriptado pelo pela simetric.
Isso aqui é é assim, quem quiser depois entrar em mais detalhe de TLS, eh existem várias formas, existe TLS 1.1, TLS 1.2, TLS 1.3, inclusive antes de TLS tinha um outro nome que tinham sido hackeado. Então uma coisa que vai evoluindo, né? Eh, criptografia ela nunca é vitalícia, é matemática. Uma hora, né, ela ela vai ser quebrada. E por isso que eles falam assim: "Ah, se o Bitcoin foi quebrado por qu computer, cara, se o Bitcoin for quebrado por qu computer, a gente vai ter quebrado muitas outras coisas, tipo, a gente vai ter quebrado servidor de banco, servidor de bolsa e muit outras coisas". Eh, então, basicamente, só dou um exemplo
rápido, como que funciona isso? acontece assim, tipo, em milisegundos, tá? Tipo, quando é, eu quero conectar com o o Thiago, eu mando um sim, aí ele vai me mandar um uma resposta, aí com esse eu mando uma outra resposta, aí ele vai me dar o aí vai me dar o certificado, porque para fazer assimetrias de publicy, private key, ele tem que ter uma public, eu tenho que ter uma public. A gente vai fazer a troca dessas public que ele tem a public, ele tem key, né? Não sei se vocês já viram certificado de servidores. Cada servidor tem uma private ke acima e essa private ke ela é muito segura, tipo, tem que tá segura, né? E ah assim é tem existem eles eles
inspiram assim a a segurança da internet hoje, para ser sincero, ela é muito centralizada. tem os emissores de de certificados e acho que são cinco ou seis emissores certificados. Eles têm as private key ees vão emitir os certificados de todos os outros servidores. Aí vai ter da Google e ele tipo ele que vai verificar que não, esse certificado da Google tá correto. Só que se alguém hackear, tipo, é uma pirâmide assim de de trust assumption, de private para public de private ke hackearem o o quem emite o certificado, cara, o cara consegue hackear o sistema
inteiro. Se o cara tiver, a gente fala: "Pô, se eu perder uma public, eu vou perder minha grana, ok? Se esse target aqui desse cara for blitado, o cara vai conseguir tipo fazer um fake, tipo, criar eh dados feito de de não sei o que faria com isso, provavelmente faria estrado, mas basicamente aí ele manda o o certificado dele, no certificado que tem aqui, tem vários outros dados, eh eu mando de volta algumas informações. Eh, e e nessa nessa nesse protocolo também a gente define que tipo de criptografia a gente quer usar, porque existem vários tipos de criptografia, chá, chá, Rs. E no final a gente vai ter eh as symiss.
Uma vez que a gente tem o simetrics, a gente consegue agora, tipo, você vai mandar um dado, eu vou desencriptar e eu vou te fazer uma e eu vou encriptar e te mandar o lugar prático. Toda a comunicação agora é feita com essa essa aqui. >> Tá. Eh, eu veguei essa foto de um site, eh, mas tem uma limitação assim, eh, eu não sei exatamente qu em quais pontos são as limitações, mas esse é um dos gargalos do TLS not e eu e eu vou e eu vou explicar porque nessa comunicação de
eu não sei se é na hora de fazer o TLS, assim, você tem um tempo mínimo que o servidor espera que você responda. Então, se o o e você precisa fazer muita criptografia se você tá usando notaries e se essa computação passa o tempo mínimo, você vai dar time out tempo inteiro. Então tem tem uma limitação hoje. Eh, aí tem uma outra limitação que, por exemplo, o TS Notary, o MPC, se eu se eu eu e Thiago estamos perto, a nossa a nossa o exchange vai ser mais rápido, a gente vai vai conseguir fazer a computação mais rápida. Só que se eu tô aqui e o Thiago tá na na Coreia, cara, isso vai aumentar muito o o o
tempo da computação da mesma do do mesmo MPC. Esse também é um outro problema do TLS Notary, que tipo, eh, tipo, tem distância, eh, tamanho do tamanho do da computação do protocolo, tudo mais. Eh, a gente vai falar isso daqui. Então, agora o que que é o que o que que é o TLS notary, que é a essência do Zl, mas eu depois eu vou falar de acho que a gente tem um slide, eu peguei esse slide tudo do da inglês porque eu peguei tudo uma apresentação do YouTube, mas é assim, qualquer coisa, os cara estão apresentando isso todo dia, né?
Eh, como que o teléor funciona? Acho que talvez a gente vai aqui, ó. Legal. Quando a gente vai fazer no telest normal, a gente eh aqui quando a gente vai dar os no teles normal, quando a gente vai dar o o a chave, a nossa chave pro pro servidor, a gente só dá a minha chave. Agora vou dar minha chave com a do eh do notary, que vai ser o prover. No final, o que que isso vai acontecer aqui?
a chave simétrica que antes era só minha e do servidor. Agora a da nossa parte o servidor não vai mudar nada, mas da minha parte agora ela vai est separada. Tipo, eu vou ter uma parte da chave e o noter vai ter uma parte da chave. Então agora você só consegue fazer as a as comunicações, os encryption e decryption se os dois fizerem junto. Por isso que agora o notary ele é meio que um verifier do que tá acontecendo nessa request. ele consegue agora eh criar uma prova criptográfica, que isso no final seria uma assinatura dele, de que, pô, a quando o Thiago fez a request pro Nubank, ele realmente
recebeu isso tal e essa request tá correta porque ele participou. Esse é o overview. Assim, tem mais detalhes, mas essa que é a ideia principal. Então, eh, só que aí tem, mas aqui não é nem multipation, é tr computation, que nem eu falei, tem esse timeout e hoje já tem um gargalo do tamanho da informação entre eu e o Thago. Distância também, se você bota mais um, aí aí é o tempo da computação é exponencial.
Então eh mais um problema, entendeu? Por exemplo, eu tenho times que falaram: "Ah, vamos randomizar qual vai ser o notar?" Eh, vamos. Não funciona do meu ponto de vista, né? Por quê? Se você randomizar de um cara e pegar um cara que tá na China, não vai funcionar, entendeu? Eh, então é, mas essa que é a ideia. Na na TLS normal a gente a gente vai ter uma chave que a gente vai conversar com o servidor. No TLS notary, essa chave é dividida entre eu e o notary. Aí agora o notary consegue fazer uma prova de tudo que aconte. O notary ele nunca vê nenhum dado, ele só ele só vai participar ali.
E a única certeza que ele tem é que isso só funcionou porque ele participou. Se ele não se não tivesse participado, não teria funcionado, né? Mas ele nunca vem nenhum dado e o aí o ele consegue compartilhar algum dado depois. >> É o é o clients e o noter. Por quê? E se você adicionar mais um, a computação vai ficar muito alta e e daí vai ficar eh você vai bater o limite do time out.
Eh, porque o servidor meio que tipo, eu não sei por que tem esse time out, mas deve ter por uma questão de segurança. Pô, tá acontecendo alguma coisa estranha. Eh, se não tivesse esse time out, a gente teria resolvido esse problema, acho que muito antes. Esse é o gargalo, porque eh e é por isso que só foi possível agora com State of the Art Cryptography e Rust e e as bibliotecas, porque antes era muito devagar, né? Eh, então, por exemplo, aqui, ah, vou ver eh mais um exemplo, né? server faz pls e faz junto aqui com o com o notar.
Eh, no final o notary vai dar, tipo, ele vai blind site, tipo, ele vai assinar que ele participou e ele viu isso tudo junto sem ver os dados. E daí um verifier ele vai tipo conseguir verificar a assinatura desse notary. E e nesse processo aqui no tem um interact, mas ele consegue mostrar só alguma parte. Aí vai falar: "Ah, só quero mostrar a minha idade". Isso uma prova disso mais a assinatura do not aí verifier vai falar: "Ok, mas nesse caso do trust assumption é no notary. Se o notary for malicioso, só que acabou.
Eh, por isso que é to computer, na verdade não é nem multipol. Alguma pergunta aqui, tá? Então, e então e e isso o que que agora isso permite, né? Agora isso permite que tudo que eu tenho acesso, né? Eu, Danilo, tenho acesso com meus auto tokens, com meus cooks, porque login e 100 é o quê? É autoen no final. Então, tudo que eu tenho acesso à internet, qualquer conta que eu tenha acesso à internet, agora eu consigo gerar uma prova, né? E essa prova é mais uma assinatura de um notary, só que aqui um notary que participou ali de forma criptográfica dessa troca e ele tá e ele
tá eh provando que eu fiz a request para no Bank e recebi da Nubank que eu tô devendo antes para no Bank. Ele tá provando essa edt, sabe esse curl que a gente faz? Curl tá tá tá. A gente sabe uma resposta. Então é isso, você tá provando uma execução disso aí. Como que funciona o TLS notary? Eh, você precisa, a gente não vai entrar em detalh de tudo isso, até porque eu acho que eu não tô, não sou capaz de explicar tudo isso. Eh, mas e você também nem precisa saber eh tudo isso para para
conseguir usar. as biblioteca você consegue usar de boas. Tipo, eu eu não sabia que era MPC, não sabia que co, não sabia que era nada e eu e eu consegui participar de HCKON e usar isso. Então não consegui problema. A gente vai falar de Obliv Passf, Garb Circuits hoje. Eh, são duas são duas coisas básicas. Para vocês entenderem bem como que funciona o not, vocês podem aqui depois no no doc e depois dar. Olha isso, do execution with asymmetric privacy. Esse é o core do telescor aí. Aqui ele meio que
explica aí. Aqui ele vai ver que ele vai ver tipo umas palavras, ah, garb circuit ou t Oblivious transfer. Aí você vai meio que, se você for aqui, se você entender o que é garb circuit obliv transfer, você vai conseguir entender essa parte. Entendendo essa parte você vai, tipo, você entendendo essa parte aí você vai, vai ler o rastro do block, você vai entender eh como que funciona, tá? para falar de garbot circuits. Eh, um, isso aqui era um é um negócio que eu tinha escrito há ano passado, mas eu nunca aproveitei, mas aí eu vi ontem e falei: "Pô, vou usar isso porque eu tinha eu tinha escrito isso para eu aprender a a o que
era o cargo circ. Eh, e eu recomendo muito fazer isso. Se você quer aprender sobre um tema assim, eu não tenho background de criptografia, não tenho background de matemática, não tenho background de engenharia. Então, quando eu ia aprender Z e criptografia, o que que eu fazia? Eu ia pros docs, o que que eu faço ainda, né? Não tenho feito isso porque agora tô em mais ema, mas eh o que que eu faço? Eu vou no doc, eu leio o doc e eu vejo todas as palavras que eu entendi. Ai, eu não sei o que é isso é no garot circle, não sei. Aí você vai e tenta entender exatamente o que que é essas palavras que você não entendeu, porque no momento em que você entender essas
palavras que você não entender aí você vai conseguir entender o doc certinho e cada palavra vai te levar para um rabbit hole ali longo. Mas esse aqui são acho que os dois principais. O Garbat Circuits, ele, depois eu posso compartilhar isso com vocês, isso aqui tá privado, mas eh ele é um protocolo de MPC, eh que você consegue eh fazer uma computação junto com, por exemplo, eu eu e Thiago a gente consegue fazer uma computação junto sem eu saber o input do Thiago e sem o Thiago saber o meu input e a gente tem um output, que é basicamente vamos desencriptar a a mensagem do do
servidor. Eu tenho a minha aqui, o Thiago tem aqui dele, a gente junta aqui, a gente desencriptou, os dois vê a mensagem desencriptada, mas nunca ninguém viu. Eu não vi a parte dele, ele não viu a minha parte. E aqui a gente vai fazer, a gente vai passar por um exemplo de como que isso funciona em garb circuits, em um circuito de gate. Aí dá para fazer de or e exor e de e disso você expandiria para eh eh criptografia RS e outras criptografias, tipo de gate. Tipo desses gates você vai criar circuitos maiores que no final vão ser circuitos de criptografia, mas a gente só vai ver de um circuito. Então, vamos dizer que tem um garbler e o
evaluator. Então, nesse exemplo aqui vai ser, tá? Eu e o Thiago. Eh, eu vou escolher zero ou um. O Thiago vai escolher zero ou um. E a gente vai, a gente quer saber a resposta do o que eu escolhi e do que o Thiago escolheu do end, né? Sem, sem eu saber o que ele escolheu. Por exemplo, eh, se eu escolher um e um, o end, o resultado vai ser um aqui, né? Se eu escolher zero zero, se eu escolher zero e Thiago escolher zero, a resposta vai ser zero.
Então é um é um circuito de alguma dúvida disso? Não, tá? Eh, aqui nesse caso, tipo, se saíam, a gente vai saber que tanto eu quanto ele escolhemos um, né? Mas que sair zero, por exemplo, a gente não vai saber, né? Eh, então a gente vai fazer, a, eu vou explicar como que ele, a gente faz isso. Então, cara, é muito simples. Quando eu entendi assim, eu vi, cara, cara, não é é simples e e você entende, cara. É muito esperto como os caras fizeram.
Como que funciona? Ó, tem o Garbler, que vai ser tanto tanto faz ser eu ou Thiago, tá? Mas eu vou ser eu, eu vou ser o garbler. E o Garbler, o que eu vou fazer? Eu vou pegar uma chave X e eu vou encriptar esses aqui, ó. Então eu vou encriptar o zero e o no caso, né? São as minhas opções. Aí eu vou pegar uma outra chave Y e eu vou encriptar aqui. Então aqui, tipo, vai ter, sei lá, vamos dizer que o resultado da criptografia aqui para zero foi três e para um foi sete.
Pode ser qualquer coisa, tá? Ou foi banana e laranja. esse resultado aqui também. Então aqui eu tenho uma banana e uma laranja e aqui eu tenho um cachorro e um gato. Tipo, eu vou pegar duas chaves diferentes e eu vou enfrctar os meus os meus possíveis inputs e os possíveis inputs do do do Thago. Eh, vamos dizer que aqui é zero é banana e aqui o zero é o cachorro. Aí eu vou pegar a banana e o cachorro, que são os outputs da chave que só eu tenho, que o Thago não tem. Aí eu vou encriptar o zero aqui que vai dar banana com cachorro, por dizer.
E eu vou fazer isso para cada um. Então aqui é banana gato. Então aqui é banana gato. Eh, como que era o a laranja cachorro? Laranja cachorro. Então é isso, é isso que tô mostrando aqui, né? Eh, esse aqui é o o zero encrypted with key a, é o zero encrypted with key, é o encrypted with key, um encrypted with K. Aí aqui é o zero encrypt with KB, um encrypt B. Aí aqui é o zero, né, que é o encrypt que A e QB. Então, tipo, o resultado desse encryptor, né, desse AW0 e AWB.
Tá claro? Ou aqui f essa parte é muito importante. Você entend essa é a essência do negócio. Tem uma dúvida com um pouco tá aí você vê que tipo, pô, é simples, né? Tipo, o cara pegou duas chaves, encriptou, já encriptou os resultados com essa chave. Aí que eu vou fazer aí eu vou chegar pro Thiago e falar: "Ó, Thago, vamos dizer que eu escolhi zero. Eu vou te dar, eu vou te dar o meu, vou te dar o EW0, que é o output da Kate, para você que não clicar nada, que você não sabe qual que é aqui. E eu vou te dar esses quatro que também para você não significar nada, você não sabe não significar nada porque é tudo inputado.
Aí o que que o Thiago vai fazer? Vamos, vamos dizer que o Thiago escolheu aí que entre o Bliv Transfer. Obvives Transfer é um pouco mais complicado. Eh, mas vamos dizer que o Thiago escolheu zero também, tá? Aí o Obliv transfer ele é assim que funciona o Obliv Transfer, mas eu vou eu dar uma explicar em geral. O Thaago ele consegue, vamos dizer que eu eu tenho, ó, eu tenho esses dois dados, né? O BW0 e o BW1. Eh, o Thiago ele consegue pedir um desses dados para mim.
Eu vou dar um desses dados para ele sem eu saber qual que o Thiago pediu. Então, tipo, vamos dizer que o Thiago escolheu zero. A gente vai fazer o Oblivious Transfer, o Thiago vai receber o BW0 sem eu saber que ele escolheu o BW0. Aí o que que vai acontecer no final? O Thiago ele vai ter o inicial que eu mandei, certo? Ele, eu tinha mandado isso no começo mais o BW0 que ele recebeu agora. Aí ele consegue encriptar só um desses, desencriptar um desses. Aí ele vai desencriptar e vai ver que o resultado é zero, sem saber exatamente qual que era o mês, qual que era o eh, oblivious transfer, como que
funciona? Essas são as etapas matemáticas. de como que funciona. A gente não não precisa entrar em detalhe aqui, mas é basicamente isso, ó. Eh, deixa eu ver as partes. Eu vou gerar umas chaves. Aí aqui o Thiago vai escolher entre zero ou um, né? Eh, e vai gerar uma chave K. Aí ele vai devolver um valor que ele vai computar. Ele vai devolver esse valor aqui que ele computou com essas uma das escolhas dele e a chave K que ele escolheu.
Eu vou fazer umas computação e eu vou devolver uma outra computação e ele fazendo uma computação tal, ele vai ver o valor, o output vai ser o valor tal. Isso é matemática pura, usando Gixs assim, tipo, eu vou fazer computação num negócio que eu não sei o que que é. Eu vou devolver essa computação. Aí o o aí o Thiago porque ele sabe esse valor K, ele vai fazer essa computação e vai conseguir extrair só a parte que ele ele precisa, tá? Eh, então é é assim que funciona o garbot círculo, né? Eh, tipo, bem simples assim. Esse é um gate. De um gate seria
diferente de um exor, mas no final é tudo isso. É tipo, é a mesma coisa assim, tipo, você vai encriptar e os seus inputs, vai encriptar os inputs, possíveis inputs do Thago, a gente vai encriptar todos os outputs com os respectivos inputs. Eu vou dar meu input pro Thago. O Thiago vai, eu vou dar todos os outputs encriptados pro Thiago. O Thaago vai conseguir extrair de mim o input, a versão encriptada do input dele, sem eu saber qual que é. E com essas duas versão encriptadas, ele vai desencriptar e ele vai ter o resultado. Então, eu
a chave que A e a chave B é uma chave B, >> não é o garbler que tem as chaves. >> Sim. Í, eu pegar a chave de pegar uma. >> Você não vai pegar nenhuma chave, só eu tenho uma chave. Você só vai pegar valores encriptados. >> Então aí que entrou o B transfer, tipo, você >> você não vai mandar sua escolha exatamente, a gente vai ter um protocolo em que você vai fazer algumas contas com a sua escolha e no final você vai receber uma versão encriptada da sua escolha.
você não vai, entendeu? você vai receber, tipo, eu encriptei todas as minhas escolhas, encripti todas as suas possíveis escolhas. Então você vai receber, você já tem a minha parte encriptada. Aí você com Oblivious Transfer, agora você vai receber uma das suas escolhas encriptadas com essa chave que eu tenho, que você não sabe, eh, sem saber o que que eu tô te dando. Aí com a minha chave e a sua chave, você consegue agora, você só vai desencriptar, só vai conseguir desencriptar uma das alternativas que vai ser a única resposta que você ver.
Você não vai conseguir ver as outras respostas. Entendeu? Esse é um NPC. Então isso o que que a gente fez? Que a gente acabou de fazer aqui? Eu e Thiago a gente fizer uma computação de and juntos sem eu saber o que que o Thiago escolheu, sem o Thiago saber o que eu escolhi e a gente sabe a resposta de se é zer um. assim, uma versão simples do garb círculo. Agora imagina isso num circuito bem maior. Agora eh, para encrypt encryption e decryption. O Thaago tem uma aqui, eu tenho outra aqui. A gente vai conseguir fazer uma computação.
Eu não vou saber aqui dele. Ele não vai saber a minha aqui. A gente só vai saber o resultado da encryption ou resultado da decryption, que é o que a gente usa no TL as not. OK. Aí tem interactive journal proofs e tem vôlei. Só que o do vôlei eu não eu não eu li o os meus e eu não entendi muito bem. Eh, eu também fiz um Mas esse aqui a muito mais coisa. Aí eu posso mandar isso pra galera, quem quiser terminar inclusive e e soltar aquele primeiro. Tá mais pronto assim. Esse aqui tá esse
aqui tá um pouco mais chatinho assim. Eh, mas eu coloquei as etapas e tal e mas o vôlei também é é ele é usado, não lembro exatamente em que parte eh mas é era a questão de eficiência. E então vamos voltar pros slides. Então, se você se você quer realmente entender como funciona, eh, só precisa entender esses quatro protocolos, né? Oblvest G circuits, já matamos, né? É simples, tipo, é é bem simples, né? Tipo, não estamos usando, tipo, Z é mais difícil, >> né? Tipo Z aqui é assim, é, o cara foi inteligente, né, de de ele criou um protocolo interativo inteligente. O
Interactiv também é ele é simples também, tipo, eh, porque tudo que é interativo você consegue fazer de forma mais eh é você o interativo você tem mais margem para mais possibilidades de você criar contas, né? o non interactive ali você tem que fazer tipo, pô, toda a matemática em one shot, aí é mais difícil, né? Eh, aí aqui só mostrando eh mais uma vez eh tipo o que acontece, né, quando tem uma requisição de encryption, né, isso aqui é o
not e e eu, a gente vai imputar os dados, a gente vai encriptar e os dois vão receber o resultado da entreption sem saber o o a input ke do de cada um na decryption, mesma coisa, né? Só que nesse caso, na description, só o prover vai saber, o notary não vai saber porque aqui é a resposta do servidor. A gente não quer que o o notary saiba. Então a gente quer que o notary ele commit sem ver os dados da pessoa.
Então é é meio que isso. Eh, aí esse aqui, ah, daí assim aquilo foi a versão simples do garb circuit. Aí tem várias, né? Eh, melhoria de eficiência, tudo mais. Aí aqui foi o que eu tinha mostrado aí. Aqui a gente pode tentar assim, ó. Deixa eu ver. Vamos ver aqui. No então tem e that do execution with asymmetric privacy includes.
Aqui é que eu eu não sou muito bom com essas anotações matemáticas, eu precisaria de GPS, mas eh eu pelo que eu entendi aqui, eu acho que eles usam dois Garbard Circuits, aqui ó, a listate a Garb Circuit. Criar o garbord circuit é criar as versões encryptadas. Sabe o que que eu falei? Tipo, isso que é criar um garb circuit. G secret de labels X and XY versões encriptadas e output labels e committed VA que deve ser as os a os outputs encriptados. B cre outro garbot circuit.
Eh, é isso aqui. Pior de é, eu acho que a minha parte vai até aqui Gas. Eh, é assim, faz faz um tempinho que eu eu lembro que eu tinha entendido isso, mas como eu não escrevi, quando eu fui revisar, eh, eu não eu não consegui lembrar muito bem. Mas voltando assim, eu acho que para agora pra parte prática, eu só fui aprender isso depois do terceiro aplicativo desse GTLS que eu criei. Precisa saber isso. Eh, e agora falando de de como existem hoje existem três formas da gente ter o mesmo
resultado dos KTLS. um que é MPC TLS, que é o que eu expliquei agora, né? Eh, que na verdade não é multipord, é true party. O outro existe que é por ti. Então, como que funciona pro T? Tipo, eu faço a requisição dentro de um trusted environment, então você, então eu consigo provar que eu fiz esse request e recebi essa response por causa do trust environment. Isso é uma forma também de você conseguir encriptar. né? Eh, tem uns times fazendo isso, mas eu não vi nenhum time em Prod. O mais eficiente hoje é o que a Recima, eh, eles usam um man in the mirle. Eu não
sei, tem ter que ler o paper deles, mas não é muito difícil o paper deles, mas teria que ler o paper deles. Exato, porque não é um man in the mirror que vê tudo. O que que é o man in the mirror? Tem o client, tem o servidor aí, tem o man in the mirror ali que vai ver todas as informações que passa entre você e ele e ele vai conseguir a testar. Só que a reclaim ela fez de um jeito em que eh o man in the mirror ele só vai ver os dados encriptados, ele não vai ver que a gente tem que manter privacidade, ele não vai ver os dados puros, né? Só vai ver o que tá passando encriptado. Então basicamente seria tipo qualquer pessoa poderia ver na verdade, né?
Só que no final ele vai ter um protocolo de interactive z com o prover prover falar que eh esses dados que ele tá vendo são dados reais do servidor tal. Por quê? Porque por exemplo, se eu vamos dizer que eu sou malicioso, vamos eu boto um man in the mirror entre eu e um outro servidor meu, entendeu? E eu começo a trocar e o cara só, o cara de qualquer jeito o cara não sabe ser, tipo, sabe de nada, né? Então, eh, no final tem esse protocolo de Z que a Rlay. Eh, eu acho que é Interactive Zk pro Prer conseguir provar pro Man in the Mir que na verdade essa foi uma request
para Google, tipo, ele vai mostrar alguns dados. Aí esse prover vai assinar isso para que ele use como um atestation fora. Eh, e esse é o mais eficiente. Por quê? Porque nesse caso, eh, que eu tinha falado que hoje quando você vai fazer TLS, tem chance de você dar time out. Esse prover da do man in the mirror, não, não é exatamente man in the mirror, mas é proxy, né? é um esse proxy ele vai ver a ele só vai ver, então basicamente não vai adicionar quase nada de de tempo, de latência, né, pr para request entre você e o e o servidor. E
ele uma vez que fechar tudo que daí ele vai fazer a prova. Então, tipo, ele não atrapalha em nada entre você e o servidor. Tipo, o uma vez que você recebeu as informações, só depois que tudo terminou que eu vou pedir a prova pro pro cara e daí daí tanto faz, vai demorar 10 segundos, 30 segundos, porque não vai dar mais time out, entendeu? No caso do do TLS notary, que esse problema é o time out, porque eh sem fazer o MPC, eu não consigo continuar a minha requisição no servidor.
>> A tester é que é o o proxy, né, que é o cara que vai tá no meio ali. Eh, ficou claro a diferença ou alguma dúvida em relação à diferença? Aí agora eu vou falar eh agora assim, eu na verdade eu criei uma startup em Zquiip LS e hoje a gente pivotou. Eh, e eu vou falar alguma das limitações hoje que tem, pelo menos que tinha antes, mas que eu acho que não vai não foi resolvido porque não não é uma coisa, eh, não é uma coisa e é uma coisa de estrutura mesmo. Eh, tá. A primeira que eu fiz foi, eu criei
uma, a gente criou uma, inclusive o Luiz tava junto nessa, eh, a gente fez uma eh account abstraction que você consegue controlar ela com o seu e-mail. E a gente usava uma prova da conta do seu e-mail para você controlar, em vez de controlar ela com uma private key, você controla com o seu e-mail. Então, tipo, meio que agora tem uma wallet, email wallet, né? Eh, que ali na verificação, né? Eh, então a gente criou isso. A biblioteca a gente fez na na Starknet, a Riple, tá? open source, quem quiser
ver. Eh, a segunda foi, a gente fez também na Starknet, a gente fez a a gente conseguia a provar que você fez uma transação para uma pessoa tal no Revolute. Isso para existe um projeto chamado Zgip. A gente fez isso na Starknet, eh, que é basicamente você provar transação. Então, eu eu tenho uma pool ali de grana, né? E eu vou falar, ó, a minha conta é conta tal, é conta @mindohk.
Eh, todo mundo que fizer uma transação de USD USD para essa conta e tiver uma prova disso, consegue withdraw USDC. Então, eu faço essa full, eu boto lá nessa luz também tava, eu boto new USDC e agora você tem uma prova de que você fez uma transização pra minha conta, você consegue vir dar fazer o direto ali sem eu participar de nada, entendeu? Não, não, não é torneiro cash. É tipo, imagina, tem uma pool, eu faço uma pool com $000 de USBC.
O, agora vamos falar de Pix, vai. 1.000 de USC. O Thago, ele me fez um Pix de R$ 100. O verdadeiro pitfi, como que funcionaria? O Thigo vai fazer o Pix, aí depois eu vou transferir para ele usd. Agora que o Thiago fez o Pix, ele não precisa mais me esperar, ele vai gerar uma prova desse Pix. Ele vai lá no smart contract e dá o redraw para a prova e ele já dá o redraw do 100 USDC direto. Ele não precisa mais me esperar. Ó, é um withdraw que eh só vai checar se você fez um fix para mim ou não.
Esse foi a segunda ligação. Eh tem nos descobri um negócio esses dias que é bem interessante.