<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Deepfake on kenji.blog</title><link>http://kenji.blog/pt/tags/deepfake/</link><description>Recent content in Deepfake on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>pt</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 12 Sep 2026 12:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/pt/tags/deepfake/index.xml" rel="self" type="application/rss+xml"/><item><title>Deepfakes e Literacia da Informação: Como Detetar Notícias Falsas Tecnicamente</title><link>http://kenji.blog/pt/p/deepfake-info-literacy/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/pt/p/deepfake-info-literacy/</guid><description>&lt;img src="http://kenji.blog/p/deepfake-info-literacy/img/eyecatch.jpg" alt="Featured image of post Deepfakes e Literacia da Informação: Como Detetar Notícias Falsas Tecnicamente" />&lt;h1 id="introdução-a-era-em-que-as-fronteiras-entre-a-realidade-e-a-ficção-se-dissolvem">Introdução: A Era em que as Fronteiras entre a Realidade e a Ficção se Dissolvem
&lt;/h1>&lt;p>Ao entrarmos na década de 2020, a evolução da IA generativa (Generative AI) avançou a um ritmo sem precedentes. Textos, áudios, imagens e até mesmo vídeos que são indistinguíveis dos conteúdos criados por humanos podem agora ser gerados em apenas alguns segundos. Embora este salto tecnológico traga enormes benefícios aos campos criativos, também cria uma séria ameaça social: a proliferação de conteúdos falsificados sofisticados conhecidos como &amp;ldquo;Deepfakes&amp;rdquo;.&lt;/p>
&lt;p>Os deepfakes ameaçam a sociedade de várias formas, incluindo falsos discursos de políticos, esquemas em que se fazem passar por CEOs de empresas (uma evolução das fraudes BEC) e pornografia difamatória visando celebridades. Especialmente durante os períodos eleitorais, a propagação de notícias falsas geradas por deepfakes escalou a ponto de abalar os próprios alicerces da democracia.&lt;/p>
&lt;p>Numa era como esta, o que é exigido de nós é uma atualização na &amp;ldquo;literacia da informação&amp;rdquo;. O senso comum de que &amp;ldquo;devemos acreditar no que vemos com os nossos próprios olhos&amp;rdquo; já não se aplica. Este artigo começará pelos fundamentos técnicos de como os deepfakes são gerados, para de seguida passar para as técnicas de ponta de perícia digital (digital forensics) que os conseguem detetar &amp;ldquo;tecnicamente&amp;rdquo;, e finalmente discutirá a estrutura que permite à sociedade como um todo combater a desinformação (como a C2PA). Exploraremos esses tópicos num nível extremamente profundo, cruzando equações e códigos ao longo do caminho.&lt;/p>
&lt;hr>
&lt;h1 id="1-os-mecanismos-da-ia-generativa-que-sustentam-os-deepfakes">1. Os Mecanismos da IA Generativa que Sustentam os Deepfakes
&lt;/h1>&lt;p>Para compreender os deepfakes, precisamos primeiro de perceber como funcionam as IAs generativas fundamentais. Atualmente, as duas principais arquiteturas utilizadas na geração de imagens e vídeos de alta definição são as Redes Adversárias Generativas (GAN - Generative Adversarial Networks) e os Modelos de Difusão (Diffusion Models).&lt;/p>
&lt;h2 id="11-redes-adversárias-generativas-gan">1.1 Redes Adversárias Generativas (GAN)
&lt;/h2>&lt;p>Propostas por Ian Goodfellow e os seus colegas em 2014, as GANs serviram como faísca para a tecnologia dos deepfakes. Numa GAN, duas redes neuronais assumem o papel de um &amp;ldquo;falsificador&amp;rdquo; e de um &amp;ldquo;polícia&amp;rdquo;, competindo entre si (aprendizagem adversária) para gerar dados altamente realistas.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Gerador (Generator, $G$)&lt;/strong>: Recebe um ruído aleatório (variável latente $z$) como entrada e produz dados muito semelhantes aos reais (como uma imagem).&lt;/li>
&lt;li>&lt;strong>Discriminador (Discriminator, $D$)&lt;/strong>: Determina se os dados de entrada são &amp;ldquo;Reais (Real)&amp;rdquo;, provenientes de um conjunto de dados autêntico, ou &amp;ldquo;Falsos (Fake)&amp;rdquo;, criados pelo gerador.&lt;/li>
&lt;/ul>
&lt;p>Estas duas redes progridem no seu treino otimizando uma função de perda formulada como o seguinte jogo Minimax:&lt;/p>
$$
\min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_{z}(z)}[\log(1 - D(G(z)))]
$$&lt;p>Aqui, $x$ representa dados reais, e $z$ é a variável latente (ruído). O discriminador $D$ tenta maximizar esta equação (distinguindo com precisão o real do falso), enquanto o gerador $G$ tenta minimizá-la (enganando o discriminador). Quando este treino atinge um estado de equilíbrio (Equilíbrio de Nash), o gerador consegue produzir dados indistinguíveis dos originais.&lt;/p>
&lt;pre class="mermaid">
flowchart LR
Z[&amp;#34;Vetor Latente (Latent Vector Z)&amp;#34;] --&amp;gt; G[&amp;#34;Gerador (Generator)&amp;#34;]
G --&amp;gt; F[&amp;#34;Imagem Falsa (Fake Image)&amp;#34;]
R[&amp;#34;Imagem Real (Real Image)&amp;#34;] --&amp;gt; D[&amp;#34;Discriminador (Discriminator)&amp;#34;]
F --&amp;gt; D
D --&amp;gt; O[&amp;#34;Classificação (Real/Fake)&amp;#34;]
O -.-&amp;gt;|&amp;#34;Loss Feedback&amp;#34;| G
O -.-&amp;gt;|&amp;#34;Loss Feedback&amp;#34;| D
&lt;/pre>
&lt;h2 id="12-modelos-de-difusão-diffusion-models">1.2 Modelos de Difusão (Diffusion Models)
&lt;/h2>&lt;p>Nos últimos anos, a tecnologia que ostenta qualidade e estabilidade de imagem superiores às GANs, e que serve como base para plataformas como o Midjourney e o Stable Diffusion, são os &amp;ldquo;Modelos de Difusão&amp;rdquo;. Os modelos de difusão consistem num &amp;ldquo;processo de difusão direto&amp;rdquo;, que gradualmente adiciona ruído aos dados, e num &amp;ldquo;processo de difusão reverso&amp;rdquo;, que restaura os dados originais a partir do ruído.&lt;/p>
&lt;p>No &lt;strong>processo de difusão direto (Forward Process)&lt;/strong>, ruído Gaussiano é gradualmente adicionado a uma imagem limpa $x_0$ a cada passo de tempo $t$. Este processo é representado como uma cadeia de Markov através da seguinte fórmula:&lt;/p>
$$
q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t} x_{t-1}, \beta_t \mathbf{I})
$$&lt;p>Aqui, $\beta_t$ é um parâmetro de agendamento que controla a variância do ruído. Após passos suficientes $T$, a imagem $x_T$ transforma-se em ruído aleatório completo.&lt;/p>
&lt;p>No &lt;strong>processo de difusão reverso (Reverse Process)&lt;/strong>, uma rede neuronal (geralmente com uma arquitetura U-Net) aprende a prever o ruído a partir da imagem ruidosa $x_t$ para restaurar o passo anterior $x_{t-1}$. Combinar este processo com o condicionamento (como um prompt de texto) torna possível gerar qualquer imagem a partir do zero (ruído).&lt;/p>
&lt;hr>
&lt;h1 id="2-perícia-digital-explorando-as-marcas-das-criações-generativas">2. Perícia Digital: Explorando as Marcas das Criações Generativas
&lt;/h1>&lt;p>Por mais avançados que os modelos generativos se tornem, os dados gerados pela IA deixam sempre &amp;ldquo;vestígios matemáticos e estatísticos&amp;rdquo; (artefactos) que são invisíveis ao olho humano. As tecnologias de deteção (detetores de deepfakes) utilizam diversas abordagens para captar estas marcas minúsculas.&lt;/p>
&lt;h2 id="21-análise-no-domínio-da-frequência-e-dct-transformada-discreta-de-cosseno">2.1 Análise no Domínio da Frequência e DCT (Transformada Discreta de Cosseno)
&lt;/h2>&lt;p>O olho humano é sensível a alterações espaciais na cor ou no brilho de uma imagem (domínio espacial), mas é insensível a mudanças de frequência (domínio da frequência). Embora as imagens geradas por GANs ou modelos de difusão possam parecer perfeitas à primeira vista, o processo de upsampling (ampliar de baixa para alta resolução) cria padrões de frequência únicos (como artefactos em padrão de xadrez).&lt;/p>
&lt;p>O método mais utilizado para detetar isto é a &lt;strong>Transformada Discreta de Cosseno (Discrete Cosine Transform, DCT)&lt;/strong>. A DCT expressa uma imagem como a soma de ondas de cosseno com diferentes frequências. A equação para a DCT bidimensional é a seguinte:&lt;/p>
$$
X_{k_1, k_2} = \sum_{n_1=0}^{N_1-1} \sum_{n_2=0}^{N_2-1} x_{n_1, n_2} \cos\left[\frac{\pi}{N_1}\left(n_1 + \frac{1}{2}\right)k_1\right] \cos\left[\frac{\pi}{N_2}\left(n_2 + \frac{1}{2}\right)k_2\right]
$$&lt;p>As imagens geradas tendem a apresentar uma distribuição de energia invulgar nos seus &lt;strong>componentes de alta frequência (ruídos finos ou mudanças abruptas em bordas)&lt;/strong> em comparação com imagens naturais. O código Python abaixo demonstra uma forma simples de utilizar a DCT para extrair a energia dos componentes de alta frequência de uma imagem.&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;/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">cv2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">scipy.fftpack&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="k">def&lt;/span> &lt;span class="nf">extract_high_frequency_features&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">image_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Carregar a imagem e convertê-la para tons de cinza&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">img&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cv2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">imread&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">image_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cv2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">IMREAD_GRAYSCALE&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">img&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="kc">None&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">raise&lt;/span> &lt;span class="ne">ValueError&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Image not found&amp;#34;&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"># Aplicar a Transformada Discreta de Cosseno (DCT) 2D&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Primeiro aplica-se a DCT 1D nas linhas e, em seguida, a DCT 1D nas colunas&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">dct_result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">scipy&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fftpack&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dct&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">scipy&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fftpack&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dct&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">img&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">T&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">norm&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;ortho&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">T&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">norm&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;ortho&amp;#39;&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"># Extrair os componentes de alta frequência (mascarando a região de baixa frequência superior esquerda como zero)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">rows&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cols&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">dct_result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mask&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ones&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">rows&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cols&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"># Mascarar a região de baixa frequência (10% de toda a área)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mask&lt;/span>&lt;span class="p">[:&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">rows&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="p">:&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cols&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">)]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&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="n">high_freq_features&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">dct_result&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">mask&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"># Calcular a quantidade de energia na região de alta frequência&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">energy&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sum&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">abs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">high_freq_features&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="k">return&lt;/span> &lt;span class="n">energy&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"># Ao comparar imagens naturais com imagens geradas, verifica-se frequentemente uma diferença estatística significativa no valor de energy&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Esta irregularidade no domínio da frequência ocorre porque, embora a IA possa aprender a &amp;ldquo;consistência local ao nível dos píxeis&amp;rdquo;, ela tem dificuldade em imitar perfeitamente as &amp;ldquo;características globais de frequência&amp;rdquo; de toda a imagem.&lt;/p>
&lt;hr>
&lt;h1 id="3-deteção-através-de-sinais-biométricos-verificando-a-pulsação-da-vida-usando-rppg">3. Deteção através de Sinais Biométricos: Verificando a &amp;ldquo;Pulsação da Vida&amp;rdquo; usando rPPG
&lt;/h1>&lt;p>Além das técnicas de deteção de imagens (estáticas), uma abordagem revolucionária para detetar deepfakes em vídeos é a &lt;strong>extração de sinais biométricos (Biological Signals)&lt;/strong>.&lt;/p>
&lt;p>Enquanto os seres humanos estão vivos, o sangue circula nos seus corpos em sincronia com as batidas do coração. Como a hemoglobina no sangue absorve muito bem certos comprimentos de onda de luz (especificamente a luz verde, em torno de 530 nm), a cor da pele facial muda ligeiramente (a um nível invisível aos olhos humanos) a cada batimento cardíaco. A tecnologia que utiliza este princípio para estimar a frequência cardíaca remotamente a partir de imagens normais de câmaras RGB é denominada &lt;strong>rPPG (Fotopletismografia Remota, do inglês remote Photoplethysmography)&lt;/strong>.&lt;/p>
&lt;p>O modelo fundamental da rPPG com base na absorção e reflexão da luz é expresso pela lei de Beer-Lambert da seguinte forma:&lt;/p>
$$
I(t) = I_0(t) e^{-\left( \mu_{dc} + \mu_{ac}(t) \right) d}
$$&lt;p>Aqui, $I(t)$ é a intensidade da luz captada pela câmara, $I_0(t)$ é a intensidade da fonte de luz, $\mu_{dc}$ é o coeficiente estático de absorção de luz dos tecidos, $\mu_{ac}(t)$ é o coeficiente dinâmico de absorção de luz resultante do fluxo sanguíneo (batimento cardíaco), e $d$ é a distância do trajeto da luz.&lt;/p>
&lt;p>Os vídeos deepfake (como as trocas de rostos - FaceSwap - ou a sincronização labial num ficheiro de áudio - Lip-sync) privilegiam o realismo visual frame a frame, mas &lt;strong>não conseguem reproduzir as subtis flutuações do fluxo sanguíneo (sinal de batimento cardíaco) ao longo do tempo.&lt;/strong> Por conseguinte, ao tentarmos extrair sinais rPPG de um vídeo deepfake, obtemos tipicamente um sinal anormal, cheio de ruído, desprovido do ciclo regular do ritmo cardíaco humano autêntico (geralmente entre as 60 e as 100 bpm).&lt;/p>
&lt;pre class="mermaid">
flowchart LR
V[&amp;#34;Vídeo de Entrada (Video Stream)&amp;#34;] --&amp;gt; F[&amp;#34;Deteção e Rastreamento Facial (Face Tracking)&amp;#34;]
F --&amp;gt; R[&amp;#34;Extração da Região de Interesse (ROI Extraction)&amp;#34;]
R --&amp;gt; S[&amp;#34;Pooling Espacial (Spatial Pooling)&amp;#34;]
S --&amp;gt; B[&amp;#34;Filtro Passa-Banda (Bandpass Filter)&amp;#34;]
B --&amp;gt; H[&amp;#34;Extração do Sinal Cardíaco (Heartbeat Signal)&amp;#34;]
H --&amp;gt; A[&amp;#34;Classificação Real/Falso (Fake/Real Classification)&amp;#34;]
&lt;/pre>
&lt;p>Abaixo está um exemplo conceptual de um pipeline implementado em Python para a extração do sinal rPPG de um vídeo:&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;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&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">cv2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">scipy&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">signal&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="k">def&lt;/span> &lt;span class="nf">extract_rppg_signal&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">video_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cap&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cv2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">VideoCapture&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">video_path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">green_signals&lt;/span> &lt;span class="o">=&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="k">while&lt;/span> &lt;span class="n">cap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isOpened&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ret&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">frame&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">ret&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&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. Deteção facial e extração da ROI (Região de Interesse, ex: testa ou bochechas)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># roi = detect_face_and_extract_roi(frame)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Aqui, para simplificar, a parte central do frame será usada como ROI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">h&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">w&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">frame&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>&lt;span class="p">[:&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">roi&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">frame&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.3&lt;/span>&lt;span class="p">):&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.6&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.4&lt;/span>&lt;span class="p">):&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.6&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"># 2. Extrair o canal Verde a partir do espaço RGB&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># A hemoglobina no sangue absorve mais fortemente a luz verde&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">g_channel&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">roi&lt;/span>&lt;span class="p">[:,&lt;/span> &lt;span class="p">:,&lt;/span> &lt;span class="mi">1&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. Pooling espacial (cálculo do valor médio)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mean_g&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">mean&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">g_channel&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">green_signals&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">mean_g&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="n">cap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">release&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="k">if&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">green_signals&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">None&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. Remoção de ruído usando um filtro passa-banda&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Extrair a faixa de frequência da frequência cardíaca humana (ex: 0.7Hz a 2.5Hz = 42 a 150 bpm)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">30.0&lt;/span> &lt;span class="c1"># Framerate provisório&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">nyquist&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">0.5&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">fps&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">low&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">0.7&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">nyquist&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">high&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">2.5&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">nyquist&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">b&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">signal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">butter&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">low&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">high&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">btype&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;bandpass&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">filtered_signal&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">signal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">filtfilt&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">green_signals&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="k">return&lt;/span> &lt;span class="n">filtered_signal&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"># Ao analisar o espetro de frequências do filtered_signal extraído,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># caso não exista um pico claro (batimento cardíaco), julga-se que a probabilidade&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># de se tratar de um deepfake é bastante elevada.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h1 id="4-o-infinito-jogo-do-gato-e-do-rato-aprendizagem-adversária-e-técnicas-de-evasão">4. O Infinito &amp;ldquo;Jogo do Gato e do Rato&amp;rdquo;: Aprendizagem Adversária e Técnicas de Evasão
&lt;/h1>&lt;p>Como vimos, existem técnicas forenses avançadas como a análise no domínio da frequência e os sinais biométricos (rPPG). No entanto, não existem &amp;ldquo;barreiras intransponíveis&amp;rdquo; no mundo da Inteligência Artificial. Logo que uma nova técnica de deteção é publicada em formato de artigo científico, os atacantes (criadores de deepfakes) começam imediatamente a atualizar os seus modelos geradores para a contornar.&lt;/p>
&lt;p>Por exemplo, considere que um detetor consegue descobrir um deepfake analisando &amp;ldquo;anomalias no domínio da frequência&amp;rdquo;. O atacante &lt;strong>integrará o próprio detetor como o novo &amp;ldquo;Discriminador (Discriminator)&amp;rdquo;&lt;/strong> da GAN e fará o Gerador (Generator) reaprender a tarefa. Consequentemente, o gerador evoluirá e começará a emitir imagens &amp;ldquo;que no domínio da frequência são indistinguíveis das imagens naturais&amp;rdquo;.&lt;/p>
&lt;p>Para além disso, já existem estudos de investigação (Anti-Forensics) que tentam enganar sistemas de deteção baseados em rPPG, adicionando deliberadamente &amp;ldquo;mudanças subtis de cor (um sinal de batimento cardíaco falso)&amp;rdquo; ao vídeo numa fase de pós-processamento.&lt;/p>
&lt;p>A deteção e a geração estão a envolver-se num interminável &amp;ldquo;jogo do gato e do rato&amp;rdquo; (Cat-and-Mouse Game) - uma autêntica guerra entre o escudo e a lança. Por esta razão, os peritos alertam que a abordagem passiva, onde apenas os dados emitidos (imagens ou vídeos) são analisados posteriormente para determinar a sua autenticidade, acabará inevitavelmente por atingir os seus limites.&lt;/p>
&lt;hr>
&lt;h1 id="5-contramedidas-fundamentais-prova-de-proveniência-e-a-estrutura-c2pa">5. Contramedidas Fundamentais: Prova de Proveniência e a Estrutura C2PA
&lt;/h1>&lt;p>À medida que a deteção passiva se aproxima dos seus limites, uma abordagem de defesa ativa que garanta criptograficamente a origem (Provenance) dos dados está a ser rapidamente promovida a nível mundial. A infraestrutura internacional que está a regulamentar isto chama-se &lt;strong>C2PA (Coalition for Content Provenance and Authenticity)&lt;/strong>.&lt;/p>
&lt;p>A C2PA foi criada através de um consórcio com a participação de grandes corporações como a Adobe, Microsoft, Intel, BBC e Sony. A organização estabelece especificações técnicas para incorporar o histórico de criação do conteúdo (quem o produziu, quando, que câmara captou a imagem e quais edições sofreu) no próprio ficheiro, utilizando um formato à prova de falsificações.&lt;/p>
&lt;h2 id="51-o-mecanismo-da-c2pa">5.1 O Mecanismo da C2PA
&lt;/h2>&lt;p>As tecnologias principais da C2PA são a assinatura digital por via de Infraestrutura de Chave Pública (PKI) e a vinculação através de hash criptográfico dos conteúdos.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Geração de Metadados (Manifest)&lt;/strong>: No exato momento em que uma fotografia é tirada por uma câmara, ou quando é alterada via software, um pacote de metadados denominado &amp;ldquo;Manifesto (Manifest)&amp;rdquo; é criado. Este pacote inclui o histórico das operações, a informação do dispositivo e as credenciais do criador.&lt;/li>
&lt;li>&lt;strong>Assinatura Criptográfica (Digital Signature)&lt;/strong>: É então aplicada uma assinatura digital ao manifesto (Manifest) com recurso às chaves privadas do hardware ou do software. Ao mesmo tempo, um processo semelhante ocorre sob a chave gerada através da síntese estruturada da própria imagem - o valor hash (o resumo fidedigno dos píxeis apresentados).&lt;/li>
&lt;li>&lt;strong>Incorporação (Embedding) no Ativo&lt;/strong>: O manifesto assinado (Credencial C2PA) é inserido nos cabeçalhos de ficheiros de formatos vulgares, como JPEG e MP4.&lt;/li>
&lt;/ol>
&lt;p>Se um atacante tentar manipular uma porção da imagem ou juntar metadados forjados a uma representação criada via IA, o hash primário subjacente à própria imagem revelará disparidades irreversíveis. Como tal, a verificação da assinatura digital irá falhar sistematicamente, evidenciando de modo transparente a adulteração instantes depois de ocorrer.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
C[&amp;#34;Criador / Câmara (Creator/Camera)&amp;#34;] --&amp;gt; M[&amp;#34;Geração de Metadados (Manifest Generation)&amp;#34;]
M --&amp;gt; S[&amp;#34;Assinatura e Vinculação (Cryptographic Signature)&amp;#34;]
S --&amp;gt; A[&amp;#34;Ativo com Manifesto C2PA (Asset with C2PA Manifest)&amp;#34;]
A --&amp;gt; P[&amp;#34;Plataforma (Social Media Platform)&amp;#34;]
P --&amp;gt; V[&amp;#34;Processo de Verificação (Validation Process)&amp;#34;]
V --&amp;gt; U[&amp;#34;Exibição para o Utilizador (Content Credentials UI)&amp;#34;]
&lt;/pre>
&lt;h2 id="52-transparência-via-ícones-content-credentials">5.2 Transparência via Ícones &amp;ldquo;Content Credentials&amp;rdquo;
&lt;/h2>&lt;p>Num sistema compatível com o padrão C2PA, sempre que um utilizador vir uma imagem nas redes sociais ou num site de notícias, será exibido um ícone &amp;ldquo;CR&amp;rdquo; (Content Credentials) no canto da imagem. Ao clicar no ícone, qualquer pessoa pode verificar, de forma transparente, o histórico daquela imagem: se &amp;ldquo;foi gerada por uma IA&amp;rdquo;, se &amp;ldquo;foi capturada por uma câmara fotográfica real&amp;rdquo;, ou até se &amp;ldquo;as cores foram ajustadas utilizando o Photoshop&amp;rdquo;.&lt;/p>
&lt;p>Atualmente, infraestruturas tecnológicas dominantes (vendors de IA) como a OpenAI (DALL-E 3) e a Google estão ativamente a emitir imagens e conteúdos digitais onde a incorporação de metadados orientados pela arquitetura C2PA já consta das predefinições de origem. Produtores primários notáveis de equipamento fotográfico (as câmaras), encabeçados de forma visível por gigantes como a Leica e a Sony, acolheram esta progressão para garantirem funções de assinatura C2PA em conformidade já implementadas nos dispositivos (a nível de hardware). Não se trata de uma progressão reativa que tem como objetivo essencial &amp;ldquo;tentar decifrar ou identificar o falso&amp;rdquo;, mas sim migrar em massa para um ecossistema com capacidade intrínseca de &amp;ldquo;comprovar sem ambiguidades o que é autêntico (Abordagem Zero-Trust)&amp;rdquo;. Desta forma notória e global, é evidente que a visão dominante da nossa sociedade tem alterado os seus paradigmas para a transparência do futuro.&lt;/p>
&lt;hr>
&lt;h1 id="6-literacia-da-informação-de-próxima-geração-o-que-podemos-fazer">6. Literacia da Informação de Próxima Geração: O Que Podemos Fazer
&lt;/h1>&lt;p>As medidas técnicas (como os detetores de deepfakes ou a prova de proveniência através da C2PA) são meras infraestruturas para proteger a sociedade. Em última análise, quem decide se consome e difunde a informação é o nosso cérebro humano.&lt;/p>
&lt;p>A &amp;ldquo;literacia da informação&amp;rdquo; de próxima geração na era da IA significa adotar a seguinte postura:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Evitar a difusão por impulso (Stop and Think)&lt;/strong>
Especialmente quando se deparar com imagens chocantes ou conteúdos que incitam à raiva (informação que apela às emoções), deve parar e reter-se de republicar ou partilhar. O principal objetivo dos criadores de deepfakes é manipular as emoções humanas para espalhar informação.&lt;/li>
&lt;li>&lt;strong>Confirmar a &amp;ldquo;fonte&amp;rdquo; da informação (Verify the Source)&lt;/strong>
A informação provém de uma organização de notícias fiável? Possui provas de proveniência (Content Credentials), como as estipuladas pela C2PA? É crucial criar o hábito de cruzar dados e verificar as fontes da informação.&lt;/li>
&lt;li>&lt;strong>Um ceticismo saudável de que &amp;ldquo;tudo pode ser falso&amp;rdquo; (Healthy Skepticism)&lt;/strong>
Não há necessidade de ser pessimista, mas o velho senso comum de que &amp;ldquo;vídeo = facto&amp;rdquo; deve ser descartado. Precisamos de consumir informação partindo do princípio de que vivemos numa era onde áudio, vídeo e texto podem ser todos facilmente forjados.&lt;/li>
&lt;/ol>
&lt;h1 id="conclusão">Conclusão
&lt;/h1>&lt;p>A evolução da tecnologia de IA abriu a caixa de Pandora. Já não é possível apagar a própria tecnologia que gera os deepfakes.&lt;/p>
&lt;p>No entanto, como explicado neste artigo, os tecnólogos estão a combater a ameaça das notícias falsas com diversas abordagens: análise de frequência, deteção de sinais biométricos e prova de proveniência (C2PA) baseada em criptografia. Ao combinar este escudo tecnológico (medida defensiva) com o escudo social da &amp;ldquo;literacia da informação&amp;rdquo; de cada indivíduo, deveremos ser capazes de navegar pelas ondas da ficção criadas pela IA e proteger o valor da verdade.&lt;/p>
&lt;p>É precisamente porque vivemos numa época em que as fronteiras entre realidade e ficção se dissolvem que a &amp;ldquo;vontade&amp;rdquo; humana de discernir a verdade tornou-se mais importante do que nunca.&lt;/p></description></item></channel></rss>