<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>零知识证明 - tag - 沐木</title><link>https://oldletter.cn/tags/%E9%9B%B6%E7%9F%A5%E8%AF%86%E8%AF%81%E6%98%8E/</link><description>零知识证明 - tag - 沐木</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 20 Nov 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://oldletter.cn/tags/%E9%9B%B6%E7%9F%A5%E8%AF%86%E8%AF%81%E6%98%8E/" rel="self" type="application/rss+xml"/><item><title>格式保留加密、同态加密与零知识证明</title><link>https://oldletter.cn/posts/crypto-07-advanced/</link><pubDate>Mon, 20 Nov 2023 00:00:00 +0000</pubDate><author>mumu</author><guid>https://oldletter.cn/posts/crypto-07-advanced/</guid><description><![CDATA[<blockquote>
<p>作者：林 | 系列：密码学 | 适合读者：后端开发 / 对前沿密码学感兴趣的工程师</p></blockquote>
<hr>
<h2 id="一前言">一、前言</h2>
<p>前六篇覆盖了工程中更常用的密码学技术。这篇聊几个&quot;高级货&quot;，它们目前在特定场景已有落地，未来几年会越来越重要：</p>
<table>
  <thead>
      <tr>
          <th>技术</th>
          <th>一句话</th>
          <th>典型场景</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>格式保留加密（FPE）</td>
          <td>加密后格式不变</td>
          <td>数据脱敏、存量系统改造</td>
      </tr>
      <tr>
          <td>同态加密（HE/FHE）</td>
          <td>密文上直接计算</td>
          <td>隐私计算、联邦学习</td>
      </tr>
      <tr>
          <td>零知识证明（ZKP）</td>
          <td>证明我知道但不告诉你</td>
          <td>区块链隐私、身份认证</td>
      </tr>
      <tr>
          <td>后量子密码（PQC）</td>
          <td>抗量子计算机攻击</td>
          <td>未来标准迁移</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="二格式保留加密fpe">二、格式保留加密（FPE）</h2>
<h3 id="21-什么是-fpe">2.1 什么是 FPE</h3>
<p>FPE（Format-Preserving Encryption）：加密后的密文与明文<strong>格式完全相同</strong>。</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-text">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title=""><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">普通 AES 加密：
</span></span><span class="line"><span class="cl">  &#34;13800001111&#34; → &#34;a3Kf8bQ2xR7m9p...&#34; （Base64 乱码，长度也变了）
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">FPE 加密：
</span></span><span class="line"><span class="cl">  &#34;13800001111&#34; → &#34;15927463850&#34;       （还是 11 位数字）
</span></span><span class="line"><span class="cl">  &#34;张三&#34;        → &#34;李七&#34;              （还是 2 个汉字）
</span></span><span class="line"><span class="cl">  &#34;320106199001011234&#34; → &#34;410523198712255678&#34; （还是 18 位身份证号格式）</span></span></code></pre></div></div>
<h3 id="22-为什么需要-fpe">2.2 为什么需要 FPE</h3>
<p>存量系统改造时，数据库字段类型、长度、校验规则都不能改。用 AES 加密后字段变成了长 Base64 字符串，需要改表结构、改校验逻辑、改前端展示，改动太大。</p>]]></description></item></channel></rss>