- 2025年4月26日
- Vasilis Friniots
- 。没有评论

该加密通常是一种古老的黑暗艺术,充满了数学,坚固键和严格协议的繁重概念。但是,如果您可以完全重新考虑“密钥”的想法,该怎么办?如果钥匙不是位的固定点,而是活着的,呼吸 工作?
vernamveil是一个实验加密,可以准确探索这一想法。这个名字是由吉尔伯特·费尔纳姆(Gilbert Fernam)建造的,吉尔伯特·费尔纳(Gilbert Fernam)曾经是绘画理论背后的思想之一。 Vernamveil用纯Python(对自然疗法的可选依赖性)编写,专为对内部加密工作感到好奇的开发人员而设计,提供了趣味和教育空间,以建立围绕加密的直觉。主要算法是大约200行Bethon代码(文档,注释和空行除外),没有标准Beton库以外的其他依赖项。
从一开始就必须注意: 我是一个ML世界,对加密内部的内部有零了解。这个最初的模型库被写作是一个愉快的周末项目,旨在探索该领域并学习基本概念。结果,Vernamveil并非用于使用现实世界的敏感数据的生产或保护。它是一种教育工具,经验而不是确保安全。您可以在GYBP上找到完整的符号。
你为什么工作代替钥匙?
传统的对称零依赖于固定键,固定的秘密,如果它们被损坏或频繁出现,则可以揭示出弱点。而是使用vernamveil 工作 创建动态密钥: fx(i, seed) -> bytes
。
这种简单的更改打开了几个优势:
- 没有明确的重复: 只要功能和种子是不可预测的,关键仍然是新的。
- 数学灵活性: 您可以配方
fx
使用Creative,Multi -Border甚至外部数据源的作业。 - 它可能没有限制: 受单个时间面板的启发,vernamvert允许键尽可能长,并避免在大型数据收集中重复使用。
简而言之,Vernamvert不依赖固定链的机密性,而是取决于丰富性和无法预测运动行为的能力。最重要的是,这是规范性的;你可以选择自己 fx
这将是您非常秘密的钥匙。
主要功能和快速示例
Vernamveil提供了一系列想法来增强安全性并教授良好的加密清洁度:
- 定制的键流: 使用采用索引和种子的任何功能来产生动态字节。初始功能和密钥在一起是秘密键。
- 类似的过程: 相同的功能和种子用于加密和解码。
- 正义技术: 真实的碎片衬有随机噪音,并在种子的基础上混合了假(陷阱)碎片。
- 种子发展: 每件零件之后,都会更新种子,以确保少量输入变化会导致输出显着差异。
- 字母身份验证: 构建的 – 在检查 – 将MAC的检查以检测篡改。
- 高水平组成: 调整零件的大小,随机填充,多神性的速度等,以体验不同水平的克服和性能。
- 稳定: 某些过程可以使用numpy可选。 Python Python也可用。
这是消息加密及其拆除的快速示例:
import hashlib
from vernamveil import FX, VernamVeil
def keystream_fn(i: int, seed: bytes) -> int:
# Simple cryptographically safe fx; see repo for more examples
hasher = hashlib.blake2b(seed)
hasher.update(i.to_bytes(8, "big"))
return hasher.digest()
fx = FX(keystream_fn, block_size=64, vectorise=False)
cipher = VernamVeil(fx)
seed = cipher.get_initial_seed()
encrypted, _ = cipher.encode(b"Hello!", seed)
decrypted, _ = cipher.decode(encrypted, seed)
这个简单的工作流实际上显示了许多基本想法:高级种子和自定义的使用 fx
以及正确准备时如何加密/解密逆转。
封面下:vernamveil的工作方式
Vernamveil将许多技术聚集在一起,以创建一种感觉到暴力的加密,但仍然提供了重要的加密原则。让我们浏览主要步骤:
1。划分和数字
首先,该消息分为形式的零件(32个字节)。真实的碎片在前后都衬有随机条。在每个作品之间,一个 随机的 它已被插入,但果断地,在以后的时间进行了相同的指定,这意味着它在设置边界中的作用隐藏在最终编码的文本中。
这使得很难确定真实数据在哪里。
2。克服假件并混合
并非所有的碎片都是真实的。 Vernamveil注入 伪造的 其中包含纯粹随机再见。在那之后 混合 不可避免地,基于混合和衍生片的种子。
这有几种影响:
- 攻击者无法轻易将真实数据与陷阱区分开。
- 即使存在一些结构模式,它们也被深深地埋葬在监督之下。
除了加密的决定因素外,这使得无需正确种子的重建消息和实践中的工作非常困难。
3。XOR周围的溪流随种子发育
然后通过vite通过vite的上级消息是由您的自定义创建的键 fx
工作。
但是,有决定性的发展: 种子随着时间的流逝而发展。处理每件作品后,种子将通过仅使用加密数据(或解密)的当前种子的碎片进行更新。
这一发展实现了两个目标:
- 崩溃的影响: 从雪信息到整个生产中的重大变化,一个字节的早期变化。
- 困难机密性: 保留了向后的保密,因为每种种子都通过将先前种子与当前的常规文本片划分而发展,因此当前种子不允许衍生任何以前的种子。
种子就像 州系列,频繁的键。
4。消息身份验证(MAC)
最后,如果启用了,vernamveil添加了一种简单的形式 挑衅的加密:
- Blake2b HMAC是从加密文本计算得出的。
- 结果标记附加到加密文本。
解码时,检查了Mac 前 解码消息。如果标记不匹配,解码器将立即失效,可以防止荒谬和某些类型的攻击(例如甲壳)。
有关设计,功能,警告,最佳实践和更多技术示例的更多信息,请参见Ribo上的ReadMe文件。
未来的趋势和开放的想法
Vernamveil是一个早期的初始模型,并且有很大的实验和改进空间。以下是未来的一些可能趋势:
提供的操作: 纯betton的转变编辑: 在初始版本之后添加了此功能并提高了实现性能。bytes
到numpy
和PyTorch
, 或者TensorFlow
矩阵可以极大地加速键的产生,加密件,并通过解释产生随机噪声。线程: 背景互连索引可以连续准备IO操作,因此永远不会停止加密。编辑: 初始版本后添加了IO IO。控制单元的有用性: 添加连接线接口(CLI),以允许用户使用培训参数直接从车站运行vernamveil。编辑: 在初始版本之后添加了此功能。转到较低的语言: 选择Python是为了清晰和易于实验,但是移至Rust,C ++甚至行驶的速度更快的语言可以提高速度并大大扩展。编辑: 我已经开发了一个可选的C扩展扩展,以在初始版本之后大大加速零售过程。改进加密设计: 基本的加密模型(基于XOR,付费功能)是为了教育清晰度而不是针对先进攻击的灵活性。在设计更强大的层,更好的开关生成器和更安全的身份验证计划时,没有探索很多土地。编辑: 我添加了人造静脉注射种子的创建,变成了加密批准,然后是Mac,零售被HMAC代替并添加了强大fx
初始版本之后的其他示例和功能。
如果您有更多的想法或建议,请随时打开GitHub问题。我一起喜欢合理的想法!如果您是加密专家, 我将感谢任何建设性的批评。 Vernamveil是由加密领域以外的人建造的,因此很可能是严重的缺陷或错误的概念。此外,由于我的加密背景有限,我使用的某些技术可能会重塑不间断的概念。特别是,如果我了解我尚未正确提及的熟悉样式或标准实践,那么如果我可以参考,我将非常感激。学习适当的术语和参考将有助于我更好地理解和改进项目。
最终想法
Vernamveil的目的不是替代诸如AES或Chacha20之类的危险加密库。相反,是 体育场这是一种学习,篡改和探索概念,例如生成动态键,批准的加密,种子开发和疲劳,而不会在非常密集的数学中迷失。
它表明加密不仅与保护秘密有关,而且与 层无法预测和 断裂假设, 和 创造性的思考 您可能会隐藏在软弱的地方。
如果您对如何在现实世界中建立加密替代方案感兴趣,或者只是想以愉快的方式探索数学和符号,那么Vernamveil是一个绝佳的起点。我正在寻找您的评论和评论。