vernamveil:基于函数的加密

密码学通常感觉像是一种古老的黑暗艺术,充满了数学繁重的概念,刚性的钥匙尺寸和严格的协议。但是,如果您可以完全重新考虑“密钥”的想法,该怎么办?如果钥匙不是固定的斑点,而是一个活着的呼吸功能怎么办? vernamveil是一个实验性密码,可以准确探索这个想法。 […]

来源:DatumBox - 机器学习、统计和软件开发博客

密码学通常感觉像是一种古老的黑暗艺术,充满了数学繁重的概念,刚性的钥匙尺寸和严格的协议。但是,如果您可以完全重新考虑“密钥”的想法,该怎么办?如果钥匙不是固定的斑点,而是一个活着的呼吸功能怎么办?

功能

vernamveil是一个实验性密码,可以准确地探索这个想法。这个名字向吉尔伯特·韦南致敬,吉尔伯特·维南(Gilbert Vernam)是一次性垫子理论背后的思想之一。 Vernamveil用纯Python(因此具有可怕的性能)编写,专为开发人员而设计,对密码学的内部运作感到好奇,提供了一个有趣而教育的空间来建立有关加密的直觉。除标准Python库以外,只有大约200行Python代码(不包括文档和注释)。

vernamveil Gilbert Vernam

从一开始就必须注意:我是一名ML科学家,对密码学的内部运作有零了解。我写了这个原型库作为一个有趣的周末项目,以探索域并学习基本概念。结果,vernamveil不打算用于生产或保护现实世界敏感数据。它是一种学习工具,一个实验,而不是安全保证。您可以在GitHub上找到完整的代码。

从一开始就必须注意: github

为什么功能而不是键?

传统的对称密码依赖于静态密钥,固定长度的秘密,如果不熟悉或重复,则可以揭示漏洞。 vernamveil而不是使用函数动态生成键流:fx(i,seed,bound) - > int。

fx(i,种子,绑定) - > int

这个简单的更改解锁了几个优点:

  • 没有明显的重复:只要功能和种子是不可预测的,键流就保持新鲜。
  • 没有明显的重复:
  • 数学灵活性:您可以使用创意数学表达式,多项式甚至外部数据源来制作FX功能。
  • 数学灵活性: fx 潜在的无限流:

    关键功能和快速示例