<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>FHE on kenji.blog</title><link>http://kenji.blog/pt/tags/fhe/</link><description>Recent content in FHE on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>pt</language><copyright>kenjinote</copyright><lastBuildDate>Fri, 11 Sep 2026 11:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/pt/tags/fhe/index.xml" rel="self" type="application/rss+xml"/><item><title>O que é a Criptografia Totalmente Homomórfica (FHE)? Explicando a essência da segurança de próxima geração</title><link>http://kenji.blog/pt/p/fully-homomorphic-encryption-fhe-explained/</link><pubDate>Fri, 11 Sep 2026 11:00:00 +0900</pubDate><guid>http://kenji.blog/pt/p/fully-homomorphic-encryption-fhe-explained/</guid><description>&lt;img src="http://kenji.blog/p/fully-homomorphic-encryption-fhe-explained/img/eyecatch.jpg" alt="Featured image of post O que é a Criptografia Totalmente Homomórfica (FHE)? Explicando a essência da segurança de próxima geração" />&lt;p>À medida que a computação em nuvem e a tecnologia de IA se estabelecem como base da sociedade, o trade-off entre a &amp;ldquo;privacidade de dados&amp;rdquo; e a &amp;ldquo;utilização de dados&amp;rdquo; tornou-se um dos desafios mais importantes. Embora haja uma demanda crescente por ter IAs analisando dados altamente sensíveis na nuvem — como dados médicos, informações financeiras e dados biométricos pessoais —, muitas empresas hesitam em enviar dados externamente por questões de segurança.&lt;/p>
&lt;p>Tecnologias de criptografia tradicionais (como AES e RSA) são excelentes em proteger dados armazenados em disco (Data at Rest) ou dados transmitidos pela rede (Data in Transit). No entanto, quando o servidor executa &lt;strong>processamentos (cálculos) nos dados, como pesquisas ou aprendizado de máquina (Data in Use), é necessário descriptografar a cifra e retorná-la a texto plano primeiro&lt;/strong>. Se o servidor for hackeado exatamente no momento em que os dados estão descriptografados, ou se um administrador interno mal-intencionado visualizar os dados, isso levará diretamente a um vazamento de informações.&lt;/p>
&lt;p>A tecnologia dos sonhos que supera essa fraqueza fundamental da &amp;ldquo;descriptografia durante o processamento&amp;rdquo; é a &lt;strong>Criptografia Totalmente Homomórfica (Fully Homomorphic Encryption: FHE)&lt;/strong>. Ao usar a FHE, torna-se possível realizar cálculos nos dados enquanto eles permanecem criptografados, sem qualquer descriptografia, e retornar apenas o texto cifrado do resultado para o cliente.&lt;/p>
&lt;p>Neste artigo, explicaremos profundamente a FHE, o pilar da segurança da próxima geração, desde os seus conceitos até a história, o avanço revolucionário de Craig Gentry, a base matemática (como Ring-LWE), o maior desafio do &amp;ldquo;ruído&amp;rdquo; e sua solução (bootstrapping), chegando até as bibliotecas de implementação mais recentes.&lt;/p>
&lt;hr>
&lt;h2 id="1-o-que-é-a-criptografia-homomórfica-conceitos-básicos">1. O que é a Criptografia Homomórfica? Conceitos Básicos
&lt;/h2>&lt;p>&amp;ldquo;Homomorfismo&amp;rdquo; é um termo da álgebra que se refere à propriedade de mapeamento entre conjuntos que possuem uma determinada estrutura, preservando a estrutura de suas operações. A &amp;ldquo;propriedade homomórfica&amp;rdquo; na teoria da criptografia é a característica onde &lt;strong>as operações no espaço de texto plano correspondem às operações no espaço de texto cifrado&lt;/strong>.&lt;/p>
&lt;p>Expressado em uma fórmula simples, considere que a função de criptografia para os textos planos $m_1$ e $m_2$ seja $E(\cdot)$ e a função de descriptografia seja $D(\cdot)$. Sendo $\circ$ a operação sobre os textos planos (como adição ou multiplicação) e $\diamond$ a operação sobre os textos cifrados, a seguinte relação é mantida:&lt;/p>
$$ D(E(m_1) \diamond E(m_2)) = m_1 \circ m_2 $$
&lt;p>Em outras palavras, ao descriptografar o resultado da aplicação de alguma operação $\diamond$ nos textos cifrados $E(m_1)$ e $E(m_2)$, obteremos o mesmo resultado da operação $\circ$ feita nos textos planos originais.&lt;/p>
&lt;h3 id="fluxo-de-dados-na-computação-em-nuvem">Fluxo de Dados na Computação em Nuvem
&lt;/h3>&lt;p>A arquitetura de processamento em nuvem usando a FHE é completamente diferente da arquitetura tradicional. O diagrama a seguir ilustra o fluxo de processamento seguro de dados utilizando a FHE.&lt;/p>
&lt;div class="mermaid">graph TD
A["Cliente (Possui a chave secreta)"] -->|1. Criptografar texto plano x: E(x)| B["Servidor em Nuvem (Apenas dados criptografados)"]
B -->|2. Aplicar função f no texto cifrado: E(f(x))| B
B -->|3. Texto cifrado do resultado calculado E(y)| A
A -->|4. Descriptografar com chave secreta: y = f(x)| A
style A fill:#d4edda,stroke:#28a745
style B fill:#f8d7da,stroke:#dc3545&lt;/div>
&lt;p>O servidor recebe os dados criptografados $E(x)$, mas como ele não possui a chave secreta, ele é absolutamente incapaz de saber o conteúdo dos dados. No entanto, explorando as propriedades da FHE, é possível aplicar a função $f$ (por exemplo, um modelo de inferência de aprendizado de máquina) ao texto cifrado e gerar $E(f(x))$. O cliente recebe isso e, descriptografando-o com sua própria chave secreta, obtém o resultado desejado $y = f(x)$.&lt;/p>
&lt;hr>
&lt;h2 id="2-a-história-da-evolução-da-criptografia-homomórfica-phe-she-fhe">2. A História da Evolução da Criptografia Homomórfica: PHE, SHE, FHE
&lt;/h2>&lt;p>A criptografia homomórfica não atingiu sua forma &amp;ldquo;totalmente&amp;rdquo; atual de uma só vez. Ela é amplamente classificada em três estágios dependendo dos tipos e da quantidade de operações que podem ser realizadas.&lt;/p>
&lt;h3 id="partially-homomorphic-encryption-phe-criptografia-parcialmente-homomórfica">Partially Homomorphic Encryption (PHE: Criptografia Parcialmente Homomórfica)
&lt;/h3>&lt;p>A PHE é um método de criptografia que permite que &lt;strong>apenas uma das operações&lt;/strong> (ou adição ou multiplicação) seja executada um número ilimitado de vezes. Na verdade, criptografias com essa propriedade existem há muito tempo.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Criptografia RSA (Homomorfismo para multiplicação)&lt;/strong>
A criptografia RSA obteve inadvertidamente propriedade homomórfica multiplicativa. Dados os textos planos $m_1, m_2$ e a chave pública $(e, N)$:
$$ E(m_1) = m_1^e \pmod N $$
$$ E(m_2) = m_2^e \pmod N $$
Ao multiplicá-los:
$$ E(m_1) \times E(m_2) = (m_1 \cdot m_2)^e \pmod N = E(m_1 \times m_2) $$
Assim, a multiplicação dos textos cifrados corresponde à multiplicação dos textos planos.&lt;/li>
&lt;li>&lt;strong>Criptografia Paillier (Homomorfismo para adição)&lt;/strong>
A criptografia Paillier, inventada em 1999, possui propriedade homomórfica para a adição. Tem sido implementada na prática em sistemas como o voto eletrônico (onde os votos criptografados são agregados e apenas o resultado final é descriptografado).&lt;/li>
&lt;/ul>
&lt;h3 id="somewhat-homomorphic-encryption-she-criptografia-homomórfica-limitada">Somewhat Homomorphic Encryption (SHE: Criptografia Homomórfica Limitada)
&lt;/h3>&lt;p>Este método pode executar &lt;strong>tanto a adição quanto a multiplicação&lt;/strong>, mas há &lt;strong>um limite no número de vezes (a profundidade do circuito)&lt;/strong> em que as operações podem ser realizadas. Devido ao acúmulo de &amp;ldquo;ruído&amp;rdquo; discutido mais adiante, após realizar mais do que um certo número de multiplicações, a descriptografia se torna impossível. A criptografia BGN (Boneh-Goh-Nissim) de 2005 entra nessa categoria, mas tinha limites quando se tentava cálculos complexos práticos (como o deep learning).&lt;/p>
&lt;h3 id="fully-homomorphic-encryption-fhe-criptografia-totalmente-homomórfica">Fully Homomorphic Encryption (FHE: Criptografia Totalmente Homomórfica)
&lt;/h3>&lt;p>Um esquema de criptografia no qual tanto a adição quanto a multiplicação podem ser realizadas &lt;strong>um número ilimitado de vezes&lt;/strong>. Semelhante à completude de Turing na teoria da informação, se a adição (correspondente a XOR) e a multiplicação (correspondente a AND) puderem ser combinadas infinitamente, significa que, em princípio, qualquer função ou algoritmo computável pode ser executado enquanto os dados permanecem criptografados.&lt;/p>
&lt;p>Por muito tempo, a FHE foi chamada de o &amp;ldquo;Santo Graal do mundo da criptografia&amp;rdquo; e muitos pensavam ser impossível. No entanto, em 2009, &lt;strong>Craig Gentry&lt;/strong>, que estava em um programa de doutorado na Universidade de Stanford na época, propôs o primeiro esquema de FHE usando Reticulados Ideais (Ideal Lattices), chocando o mundo.&lt;/p>
&lt;hr>
&lt;h2 id="3-a-base-matemática-da-fhe-o-problema-lwe-e-ring-lwe">3. A Base Matemática da FHE: O Problema LWE e Ring-LWE
&lt;/h2>&lt;p>Muitos esquemas modernos de FHE baseiam-se no &lt;strong>problema LWE (Learning With Errors)&lt;/strong>, um difícil problema matemático da &amp;ldquo;Criptografia baseada em Reticulados (Lattice-based Cryptography)&amp;rdquo;, também conhecida como Criptografia Pós-Quântica (Post-Quantum Cryptography).&lt;/p>
&lt;h3 id="entendimento-intuitivo-do-problema-lwe">Entendimento Intuitivo do Problema LWE
&lt;/h3>&lt;p>Resolver um sistema de equações lineares é fácil usando métodos como a eliminação de Gauss.&lt;/p>
$$ \begin{cases} 3s_1 + 4s_2 + 2s_3 \equiv 12 \pmod{17} \\ 1s_1 + 9s_2 + 5s_3 \equiv 8 \pmod{17} \\ \vdots \end{cases} $$
&lt;p>No entanto, o que acontece se adicionarmos um pequeno &amp;ldquo;erro aleatório (ruído)&amp;rdquo; $e$ ao resultado destas equações?&lt;/p>
$$ \begin{cases} 3s_1 + 4s_2 + 2s_3 + e_1 \equiv 13 \pmod{17} \\ 1s_1 + 9s_2 + 5s_3 + e_2 \equiv 7 \pmod{17} \\ \vdots \end{cases} $$
&lt;p>Ao apenas adicionar esse erro $e$, o problema de descobrir o vetor de variáveis secretas $\vec{s}$ se transforma em um problema NP-difícil, extremamente complicado de ser decifrado mesmo utilizando os supercomputadores ou computadores quânticos de hoje. Esse é o problema LWE.&lt;/p>
&lt;h3 id="problema-ring-lwe-rlwe">Problema Ring-LWE (RLWE)
&lt;/h3>&lt;p>Como o problema LWE padrão envolve operações com matrizes, ele sofria da desvantagem de possuir tamanhos de chave extremamente grandes (às vezes chegando à escala de gigabytes) e de ter baixa eficiência computacional. O &lt;strong>problema Ring-LWE (RLWE)&lt;/strong>, que utiliza operações sobre um anel polinomial, foi introduzido para resolver esse problema.&lt;/p>
&lt;p>No RLWE, os elementos pertencem a um anel polinomial $R_q = \mathbb{Z}_q[x] / (x^N + 1)$ (onde $N$ é uma potência de 2, e $q$ é um número primo para o módulo).
Se a chave secreta for o polinômio $s(x)$, um polinômio aleatório for $a(x)$, e um polinômio de ruído pequeno for $e(x)$, o par de chaves públicas será:&lt;/p>
$$ (a(x), b(x)) \quad \text{where} \quad b(x) = -a(x) \cdot s(x) + e(x) \pmod q $$
&lt;p>No momento da criptografia, a propriedade desse polinômio é usada para codificar o texto plano $m(x)$ e gerar o texto cifrado.&lt;/p>
&lt;hr>
&lt;h2 id="4-a-maior-barreira-ruído-e-o-bootstrapping-de-gentry">4. A Maior Barreira: &amp;ldquo;Ruído&amp;rdquo; e o Bootstrapping de Gentry
&lt;/h2>&lt;p>O conceito mais importante no entendimento da FHE é &lt;strong>&amp;ldquo;a gestão do ruído&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Em criptografias baseadas em LWE/RLWE, pequenos &amp;ldquo;ruídos (erros)&amp;rdquo; são intencionalmente incluídos para garantir a segurança.
O processo de descriptografia do texto cifrado $c$ do texto plano $m$ pode ser expresso em termos gerais pela seguinte fórmula:&lt;/p>
$$ D(c) = (c \cdot s) \pmod q = m + \text{noise} $$
&lt;p>Durante a descriptografia, o texto plano $m$ correto é obtido pela remoção desse &lt;code>noise&lt;/code> por meio de processos como o arredondamento. Contudo, ao realizar operações homomórficas (especialmente a multiplicação) nos textos cifrados, esse ruído se amplifica drasticamente.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Adição homomórfica&lt;/strong>: O ruído aumenta aditivamente ($e_1 + e_2$). É um aumento relativamente suave.&lt;/li>
&lt;li>&lt;strong>Expressão matemática da propriedade homomórfica com adição homomórfica&lt;/strong>:
$$ E(m_1) \oplus E(m_2) = E(m_1 + m_2) $$&lt;/li>
&lt;li>&lt;strong>Multiplicação homomórfica&lt;/strong>: O ruído explode multiplicativamente (pois envolve fatores como $e_1 \times e_2$). Apenas multiplicando algumas vezes, o ruído pode exceder o limiar $q/2$, impossibilitando o arredondamento correto e levando à falha da descriptografia.&lt;/li>
&lt;li>&lt;strong>Expressão matemática da propriedade homomórfica com multiplicação homomórfica&lt;/strong>:
$$ E(m_1) \otimes E(m_2) = E(m_1 \times m_2) $$&lt;/li>
&lt;/ul>
&lt;p>É por isso que a FHE permaneceu sem ser concretizada por um longo tempo, restrita a SHE (limitada em número de operações).&lt;/p>
&lt;h3 id="a-magia-do-bootstrapping">A Magia do Bootstrapping
&lt;/h3>&lt;p>A contribuição genial de Craig Gentry foi a invenção da técnica de redução de ruído chamada &lt;strong>&amp;ldquo;bootstrapping&amp;rdquo;&lt;/strong>. Essa foi uma mudança de paradigma na criptografia.&lt;/p>
&lt;p>Intuitivamente, é o processo de &amp;ldquo;&amp;lsquo;descriptografar&amp;rsquo; o texto cifrado dentro do seu estado criptografado para limpá-lo, antes que ele se torne tão repleto de ruído que quebre, e então colocá-lo em um novo texto cifrado&amp;rdquo;.&lt;/p>
&lt;ol>
&lt;li>Suponha que temos um texto cifrado $C_{noisy}$ com muito ruído.&lt;/li>
&lt;li>O cliente fornece antecipadamente ao servidor sua chave secreta $sk$ &amp;ldquo;criptografada com a chave pública&amp;rdquo;, ou seja, $E_{pk}(sk)$ (isto é chamado de chave de bootstrapping).&lt;/li>
&lt;li>O servidor executa homomorficamente o &lt;strong>Circuito de Descriptografia (Decryption Circuit)&lt;/strong> sobre $C_{noisy}$.&lt;/li>
&lt;li>Especificamente, ele realiza uma &amp;ldquo;descriptografia dentro do espaço criptografado&amp;rdquo; aplicando $E_{pk}(sk)$ em $E_{pk}(C_{noisy})$.&lt;/li>
&lt;li>Como este circuito de descriptografia é em si mesmo uma operação homomórfica, ele gerará um novo ruído, mas o ruído do novo texto cifrado gerado, $C_{fresh}$, é redefinido para um &amp;ldquo;nível fixo&amp;rdquo; constante.&lt;/li>
&lt;/ol>
&lt;div class="mermaid">graph LR
A["Texto cifrado com alto ruído C_noisy"] --> B["Circuito de descriptografia homomórfica (Eval_Dec)"]
C["Chave secreta criptografada E(sk)"] --> B
B --> D["Texto cifrado com baixo ruído C_fresh"]
style B fill:#ffeeba,stroke:#ffc107&lt;/div>
&lt;p>Ao executar este bootstrapping periodicamente no meio dos cálculos, tornou-se teoricamente possível calcular circuitos de profundidade infinita (atingindo a FHE). No entanto, no esquema inicial de Gentry, o custo computacional para esse processo de bootstrapping era desesperadamente alto, levando de dezenas de minutos a horas para ser executado uma única vez.&lt;/p>
&lt;hr>
&lt;h2 id="5-gerações-de-fhe-e-a-evolução-dos-principais-esquemas">5. Gerações de FHE e a Evolução dos Principais Esquemas
&lt;/h2>&lt;p>Para tornar a FHE viável na prática, criptógrafos de todo o mundo vêm competindo para aprimorar os algoritmos. Atualmente, a FHE é amplamente categorizada em quatro gerações ou famílias.&lt;/p>
&lt;h3 id="segunda-geração-aritmética-exata-de-inteiros-bgv-bfv">Segunda Geração: Aritmética Exata de Inteiros (BGV, BFV)
&lt;/h3>&lt;p>Surgidos entre 2011 e 2012, os esquemas &lt;strong>BGV (Brakerski-Gentry-Vaikuntanathan)&lt;/strong> e &lt;strong>BFV (Brakerski/Fan-Vercauteren)&lt;/strong>. Baseados no RLWE, eles são apropriados para a aritmética modular com números inteiros (cálculos exatos).
Eles têm como característica o suporte a técnicas de loteamento (Batching) como SIMD (Single Instruction, Multiple Data), que permite acomodar milhares de slots de dados em um único texto cifrado de polinômio gigante, possibilitando cálculos paralelos de uma só vez.&lt;/p>
&lt;h3 id="terceira-geração-aceleração-do-bootstrapping-gsw-fhew-tfhe">Terceira Geração: Aceleração do Bootstrapping (GSW, FHEW, TFHE)
&lt;/h3>&lt;p>O esquema &lt;strong>GSW (Gentry-Sahai-Waters)&lt;/strong> de 2013 simplificou a estrutura da FHE. Isso então evoluiu para o &lt;strong>TFHE (Fast Fully Homomorphic Encryption over the Torus)&lt;/strong>, que é um dos métodos predominantes hoje em dia.
A característica do TFHE é que o seu bootstrapping é extremamente rápido (na ordem de milissegundos). Ele é robusto no processamento ao nível de portas (circuitos lógicos como AND, XOR) e possui um tamanho de texto cifrado relativamente pequeno, tornando-o ideal para avaliar rapidamente circuitos lógicos arbitrários.&lt;/p>
&lt;h3 id="quarta-geração-especialização-para-cálculo-aproximado-e-aprendizado-de-máquina-ckks">Quarta Geração: Especialização para Cálculo Aproximado e Aprendizado de Máquina (CKKS)
&lt;/h3>&lt;p>O esquema &lt;strong>CKKS (Cheon-Kim-Kim-Song)&lt;/strong>, proposto por Cheon et al. em 2017, pode ser considerado a tecnologia definitiva na proteção da privacidade para a IA e aprendizado de máquina modernos.
Enquanto as versões anteriores da FHE focavam em &amp;ldquo;cálculos com números inteiros exatos&amp;rdquo;, o CKKS suporta homomorficamente &lt;strong>&amp;ldquo;cálculos aproximados com números de ponto flutuante&amp;rdquo;&lt;/strong>. Ele demonstra um desempenho avassalador em cálculos com números reais onde pequenas margens de erro são toleradas, como no treinamento e inferência de redes neurais.&lt;/p>
&lt;p>A tabela abaixo resume como escolher os esquemas conforme a finalidade:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Nome do Esquema&lt;/th>
&lt;th style="text-align:left">Tipo de Dados Adequado&lt;/th>
&lt;th style="text-align:left">Casos de Uso Recomendados&lt;/th>
&lt;th style="text-align:left">Características&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>BFV / BGV&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Inteiros (Integer)&lt;/td>
&lt;td style="text-align:left">Cálculos estatísticos exatos, agregação de dados financeiros, buscas em DB&lt;/td>
&lt;td style="text-align:left">Alto rendimento via loteamento SIMD&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>CKKS&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Números Reais (Real/Complex)&lt;/td>
&lt;td style="text-align:left">Aprendizado de Máquina (DNN, regressão logística), processamento de sinais&lt;/td>
&lt;td style="text-align:left">Aceleração via cálculo aproximado, reescalonamento&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>TFHE&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Valores Booleanos (Boolean)&lt;/td>
&lt;td style="text-align:left">Circuitos lógicos arbitrários, buscas por strings, avaliação de funções não lineares&lt;/td>
&lt;td style="text-align:left">Bootstrapping super-rápido (escala de milissegundos)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="6-prática-bibliotecas-de-fhe-e-código-conceitual">6. Prática: Bibliotecas de FHE e Código Conceitual
&lt;/h2>&lt;p>Atualmente, existem inúmeras bibliotecas de código aberto que permitem usar a FHE sem necessitar de conhecimento profundo em criptografia.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Microsoft SEAL (Simple Encrypted Arithmetic Library)&lt;/strong>: Biblioteca em C++ com suporte para os esquemas BFV, BGV e CKKS. É um dos padrões da indústria. O &lt;strong>TenSEAL&lt;/strong>, seu wrapper em Python, é popular entre engenheiros de IA.&lt;/li>
&lt;li>&lt;strong>Zama (Concrete)&lt;/strong>: Framework baseado em TFHE. Pode ser codificado em Rust/Python e oferece recursos (Concrete ML) para compilar modelos PyTorch existentes para executá-los em FHE.&lt;/li>
&lt;li>&lt;strong>OpenFHE&lt;/strong>: O sucessor do PALISADE, é uma biblioteca C++ abrangente que suporta todos os esquemas principais.&lt;/li>
&lt;/ul>
&lt;h3 id="exemplo-de-programação-fhe-usando-python-tenseal">Exemplo de Programação FHE usando Python (TenSEAL)
&lt;/h3>&lt;p>Abaixo, mostramos um exemplo conceitual em Python usando o esquema CKKS, em que vetores de números reais são somados e multiplicados enquanto permanecem criptografados.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">tenseal&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">ts&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 1. Configuração do contexto (incluindo a geração das chaves)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Usando o esquema CKKS e configurando o grau do polinômio para 8192&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">context&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ts&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">context&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ts&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">SCHEME_TYPE&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">CKKS&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">poly_modulus_degree&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">8192&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">coeff_mod_bit_sizes&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">60&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">40&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">40&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">60&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">context&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">generate_galois_keys&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">context&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">global_scale&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="o">**&lt;/span>&lt;span class="mi">40&lt;/span> &lt;span class="c1"># Fator de escala para números reais&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 2. Lado do cliente: Criptografia dos dados&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">vector1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mf">1.5&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">vector2&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mf">2.0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Convertendo o vetor em texto plano para um texto cifrado (Originalmente executado no cliente)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">enc_v1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ts&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ckks_vector&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">context&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">vector1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">enc_v2&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ts&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ckks_vector&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">context&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">vector2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 3. Lado do servidor: Operações no estado criptografado (Proteção do Data in Use)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># O servidor não conhece os textos planos, mas consegue realizar a adição e a multiplicação&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">enc_add&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">enc_v1&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">enc_v2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">enc_mul&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">enc_v1&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">enc_v2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 4. Lado do cliente: Descriptografia do resultado&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Apenas o cliente que possui a chave secreta consegue ver o resultado&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">res_add&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">enc_add&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">decrypt&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">res_mul&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">enc_mul&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">decrypt&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Resultado da adição descriptografado: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">res_add&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Exemplo de saída: [3.5000001, 5.5000001, 7.5000002] (Uma pequena margem de erro por causa dos cálculos aproximados)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Resultado da multiplicação descriptografado: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">res_mul&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Exemplo de saída: [3.0000002, 7.5000005, 14.0000003]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Como pode ser visto no código acima, operações normais de operadores de Python como &lt;code>enc_v1 + enc_v2&lt;/code> podem ser sobrecarregadas para expressar cálculos entre textos cifrados de maneira intuitiva. No lado do servidor, as operações vetoriais são completadas sem que se conheça o conteúdo do vetor.&lt;/p>
&lt;hr>
&lt;h2 id="7-desafios-da-fhe-desempenho-e-aceleração-por-hardware">7. Desafios da FHE: Desempenho e Aceleração por Hardware
&lt;/h2>&lt;p>Embora a FHE forneça uma segurança teoricamente perfeita, o maior desafio na sua aplicação prática é a &lt;strong>&amp;ldquo;sobrecarga (overhead) de desempenho&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Sobrecarga computacional&lt;/strong>: Comparado ao cálculo em texto plano, o cálculo sobre um texto cifrado na CPU é milhares a dezenas de milhares de vezes mais lento. Multiplicar polinômios e realizar bootstrapping exige cálculos computacionais imensos, como FFT (Transformada Rápida de Fourier) e NTT (Transformada da Teoria dos Números).&lt;/li>
&lt;li>&lt;strong>Expansão de Dados (Ciphertext Expansion)&lt;/strong>: Um texto plano de alguns bytes, quando criptografado, pode aumentar de tamanho para alguns megabytes. Isso exerce forte pressão sobre a largura de banda de memória e da rede.&lt;/li>
&lt;/ol>
&lt;h3 id="abordagens-de-resolução-através-de-hardware">Abordagens de Resolução Através de Hardware
&lt;/h3>&lt;p>Para superar essa sobrecarga, esforços estão em andamento em todo o mundo para desenvolver aceleradores de hardware dedicados à FHE (suporte a ASIC, FPGA e GPU).&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Aceleração com GPU&lt;/strong>: Esforços para usar as potentes GPUs (como as da NVIDIA) a fim de paralelizar os cálculos de NTT ou o bootstrapping estão progredindo e relatam velocidades que são dezenas de vezes mais rápidas em comparação com as implementações baseadas em software (ex.: 100x.ai, o backend CUDA TFHE-rs da Zama).&lt;/li>
&lt;li>&lt;strong>Projeto DARPA DPRIVE&lt;/strong>: A Defense Advanced Research Projects Agency (DARPA) dos EUA, está conduzindo o &amp;ldquo;DPRIVE (Data Protection in Virtual Environments)&amp;rdquo;, um projeto focado no desenvolvimento de hardware exclusivo projetado para elevar a velocidade do cálculo da FHE a uma capacidade equivalente à velocidade de execução em texto plano (com overhead dentro de 10x), que conta com parceiros como Intel, Microsoft, Intellectual Ventures e afins.&lt;/li>
&lt;li>&lt;strong>O Surgimento da FPU (FHE Processing Unit)&lt;/strong>: Startups como Cornami e Optalysys têm se empenhado em construir chips dedicados à FHE usando arquiteturas de silício especiais ou tecnologias de computação óptica.&lt;/li>
&lt;/ul>
&lt;p>Num futuro próximo, poderemos presenciar a era em que as FPUs estejam incluídas como padrão em infraestruturas de servidores ou na nuvem, da mesma forma que as NPUs (Neural Processing Units) ocorrem na IA.&lt;/p>
&lt;hr>
&lt;h2 id="8-casos-de-uso-esperados">8. Casos de Uso Esperados
&lt;/h2>&lt;p>Hoje em dia, onde a FHE está alcançando uma velocidade em níveis práticos, são aguardadas inovações disruptivas nos seguintes campos:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Proteção à privacidade em análises genômicas e médicas&lt;/strong>:
Informações biológicas (dados de DNA) ou laudos e exames provindos de muitos hospitais diferentes poderão receber modelos de IA em conjunto pelas nuvens sob formatação FHE de estado permanente cifrado, o qual atende inteiramente os limites impostos pelas leis legislativas de conformidade (como a LGPD, HIPAA e GDPR). Esses esforços proporcionarão construções avançadas com diagnóstico e produção em tratamentos farmacêuticos precisos sobre patologias de tumores cancerosos e desenvolvimento de novas medicações sem riscos.&lt;/li>
&lt;li>&lt;strong>Verificação antifraude nas Instituições Financeiras e PLD (Prevenção à Lavagem de Dinheiro)&lt;/strong>:
Instituições financeiras em concorrência poderão verificar em mútuo auxílio o quadro dos extratos ou as referências transacionais de cada cliente sob encriptação, contendo integridade não visível para apontar enormes cadeias criminosas de fraude que praticam remessas desonestas entre bancos nas transferências. O que possibilita executar a chamada avaliação multi-bancos.&lt;/li>
&lt;li>&lt;strong>APIs de IA Seguras de Inferências Pessoais (MaaS: Model as a Service)&lt;/strong>:
Usuários usarão chaves particulares próprias (mensagens digitadas de comandos/prompt, rostos, fotos, imagens de íris, gravações da sua fala) e repassarão elas de maneira cifrada e inacessível a uma determinada aplicação de Inteligência Artificial para Inferência de Modelos de Linguagem (a exemplo de um modelo LLM igual o ChatGPT ou congêneres da tecnologia de processamento natural humano). O Fornecedor provedor detentor da IA despacha e fabrica formulações conclusivas não sabendo jamais qual era o dado ali originário de partida; remetendo sua solução redigida na total cifra. Desse modo erradica o abalo de &amp;ldquo;permitir o espião no treinamento indevido sob rastros dos detalhes expostos pelo indivíduo na internet privada e sensível&amp;rdquo;.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="9-conclusão-o-futuro-da-criptografia-em-direção-ao-cálculo-invisível">9. Conclusão: O Futuro da Criptografia em Direção ao &amp;ldquo;Cálculo Invisível&amp;rdquo;
&lt;/h2>&lt;p>Assim como a invenção da criptografia de chave pública (como a RSA) na década de 1970 possibilitou a comunicação segura pela internet (como no HTTPS), a invenção da FHE por Craig Gentry é um dos marcos mais cruciais em toda a história criptográfica da humanidade.&lt;/p>
&lt;p>No presente, a Criptografia Totalmente Homomórfica (FHE) deu um salto dos laboratórios teóricos para o mundo real, entrando agora na etapa pela qual as corporações da Microsoft, IBM, Intel, Google, assim como uma quantidade de startups lutam firmemente em direção ao estado da comercialização tangível no sistema prático. O problema da quantidade do peso do tamanho expansível nos dados codificados ainda está contido no rol de entraves e desafios a transpor, mas à luz do requinte arquitetônico dos modelos e softwares matemáticos de algoritmo em sincronia contínua de aperfeiçoamento nos hardwares superacelerados tecnológicos, sua capacidade de melhoria atinge avanços velozes cujas expectativas superam a Lei de Moore.&lt;/p>
&lt;p>Daqui a poucos anos, a frase &amp;ldquo;processar e calcular enquanto os dados se encontram em criptografia resguardada&amp;rdquo; será desprovida da sensação da complexidade esotérica especial e rara e deve vir a ser consolidada na prática essencialmente como base obrigatória generalizada do mercado na segurança protetora das soluções da arquitetura pela nuvem de serviços mundiais atuais. Afinal, no palco dessa presente comunidade conectada (data-driven) embasada globalmente via bases contínuas digitais, a &lt;strong>FHE (Criptografia Totalmente Homomórfica)&lt;/strong> assume sua titularidade do suporte principal absoluto para a segurança nas próximas fronteiras do amanhã que concretiza a conciliação unânime final das realidades — da máxima e rigorosa preservação do resguardo íntimo da &lt;strong>privacidade e paralelamente de suas inúmeras flexibilidades promissoras no uso interconectado nos dados&lt;/strong>.&lt;/p></description></item></channel></rss>