不可破解的三钥一次一密简介

本文介绍了三钥一次一密密码体制,作为应对量子计算威胁的一种解决方案。该体制通过三个密钥实现一次一密的加密,提供无条件安全的保密系统,确保即使在无限计算能力的攻击下也能保持信息的安全。三钥一次一密能够将信息安全从计算安全提升到无条件安全的层次,对于军事、金融等领域具有重要意义。

1.背景

一次一密是史上唯一不可破解的加密;但因传输与明文等量密钥难题无法解决;只能用物理方式实现;加密学仍处于计算安全阶段。[1-3]

量子计算发展引起了加密界的极度恐慌;因为,量子计算到来之时,所有机密瞬间被破解,绝密军事情报曝光、金融被窃取,卫星、战争机器人可能被敌人掌控……,这是多么可怕的场景和灾难!

2013,我发明了三钥加密、三密码身份验证和三随机数身份验证方法,2014,发表了基于外钥分发的一次一密。本文介绍三钥一次一密完善保密系统。[4-7]

2.三钥一次一密密码体制

三钥一次一密用三个密钥实现一次一密;密钥由一方所有或多方共享,外钥公开传输或保存,内钥为一次一密加密和解密。密钥和外钥用于三钥一次一密的明文加密、密文解密。三钥一次一密是密钥1、密钥2、外钥、内钥、密文、明文共同铸就的完善保密系统。见图1.

三钥一次一密满足完善保密充要条件,是完善保密、是无条件安全、是语义安全。攻击者截获外钥和密文;无论有没有无限计算能力;只能获得密钥空间所有密钥、内钥空间所有内钥及明文空间所有明文;但无法区分哪个是被加密明文,哪个是加密密钥。即使敌手获知明文密文对;仍是无条件安全。

破解三钥一次一密是个不能问题。

三钥一次一密能使信息和隐私由计算安全时代,进入无条件安全时代。

加密

解密

1. 三钥一次一密示意图

 

  如果正确使用本软件可使其加的文件无法破解。达到安全的效果。加不可破解是从业者直努力的方向,上世纪初曾经也出现过这样的应用,现在是计算机高速发展的时代,实现安全更容易了,实践证明用少量(用户码)去加大量数据是不安全的,要想安全至少要为每个被加的信息配置,这样使得和原文件样大,造成了保存和分发的困难,该付出的成本必须付出,这里的解决办法是让形成文件,使其安全的和原文件的文放在起,做到这点就是对文件或文再次进行加,注意现在文和文件都是乱码数据,对其加方法得当是不可破解的,因为你不知道乱码文件的任何信息你是无法解的,没有任何评判标准。这样的结果,实现安全的代价,1)占用空间大了倍,2)操作复杂些。这对于计算机速度越来越快,存储空间越来越便宜的现代应该是没有问题的。   这儿有两个加程序,每个程序都可独立运行,它们的界面上都有各自的使用说明,都能完成对文件的加,用户需要熟练的应用它们。这两个程序作用不相同,程序 1是以方式加文件的,加后除了生成文另外还生成文件。程序 2是用来给乱码文件加的,程序2是采用随机置换的加方式,对乱码数据的加,即高效又快捷,你需要输入码,具体用法看各程序在界面上的说明,加都完成后,文和乱码文件的文,可以随便放到什么地方,任何人对这两个文件的攻击都将失败。解时首先要解程序2加的文件,然后再利用文件来解文。   程序1加的文件为什么不能破解,道理很简单,程序1为每个原文件的字节生成个字节的未知数,用这个未知数去加源文件字节,从而生成文字节,也就是           明文字节 + 字节 = 文字节 如此可见个方程两个未知数,是无解的。要解必须要有字节。   我们看到,文和文件的文都是乱码,如果不加文件你需要用安全的地方来保存文件,但是如果有安全的地方保存文件你为何不直接保存原文件算了,何必多此举,而加后你只要记住码就可以了。加后的文件是否安全?如果文件是乱码加得当是无法破解的,如果用winrar和其它能报告你码错误的加软件是不安全的,本质上那类软件是出卖自己的。我们需要不检测结果正误的加软件,这样才能做到不为窃者提供信息,才能确保信息安全破解者因为不知道任何评判标准而无法实施解。   这里有种选择,1)用程序2 加文件。2) 用程序2 加文。3)用程序2 加文件和文。都是可以的,但用户必须自己清楚,解时需按原路返回差点都不行的。 【使用者须知】   基本功——首先找些文件,用程序1和程序2分别进行加试验,从单文件开始,到同时处理几个文件,练习到准确无误。   然后就可以练习下面的内容了:   练习部分   用程序1加文件A,得到A文和A文件(文件的特征是扩展名后是my),然后用程序2加A的文件,加结束。注意对文件加时,文件的名称并未改变,操作者自己要记清楚。   练习部分    操作顺序定要清楚,后加的要先解,首先用程序2解被加文件,然后用程序1解文。   上述练习种加方式的第种,读者可以尝试另外两种方式。   程序1是必不可少的,因为这有此种方法理论上是不可破解的这是其它软件做不到的,你可以不用程序2来加文件,而用随便种性能不错,又不检测解正误的程序来加文件等,同样可以安全。 如何挑选第方软件   1)如果用此软件加个10M以上的单字符大文件,形成的文能通过NIST检测,说明此软件性能不错。   2)解时,如果码输入错误,不报告错误。这个试便知。
<think>首先,用户的问题是关于令牌验证过程中签名和令牌是否同加。参考之前的对话历史,特别是我的上一次回答,我详细解释了签名和加的顺序:推荐先签名再加。用户现在问的是签名和令牌是否同加。 关键点: - 在令牌验证中,令牌(token)包含负载(payload),签名(signature)是基于负载生成的。 - 当使用加时,可能是对整个令牌(包括头部、负载和签名)进行加。 回顾用户提供的引用:[^1] 中提到使用 `signWith(SignatureAlgorithm.HS256, "jjweb")` 进行签名,但没有明确提到加。用户的问题是:签名和令牌是否同加。 在我的上一次回答中,我强调了先签名再加的顺序: - 步骤:先对令牌(payload)签名,生成签名,然后将整个签名后的令牌(包括签名)加。 所以,签名和令牌是“同”被加的,因为加操作作用于签名后的令牌整体。 具体解释: - 在JWT中,如果使用JWS(JSON Web Signature)进行签名,令牌由部分组成:头部、负载、签名。 - 如果再进行加(使用JWE,JSON Web Encryption),整个JWS被加,成为JWE的负载。 - 因此,签名和原始令牌(负载)都被加。 标准流程(基于JWT): 1. 签名:生成JWT,包括签名部分。 2. 加:将整个JWT(含签名)加。 所以,答案是:是的,签名和令牌同被加。 结构化回答: - 先确认问题:在令牌验证过程中,签名和令牌是否同加? - 解释原因:基于签名和加的顺序(先签名再加),签名后的令牌整体被加。 - 参考引用:[^1] 提到了签名,但没有直接说加。我可以引用它来支持签名部分。 - 保持与之前致:使用中文,LaTeX格式(如果需要数学表达式),但这个问题可能不需要复杂数学。 - 添加相关问题。 回答大纲: 1. 直接回答问题:是的,签名和令牌通常同被加。 2. 解释为什么:在安全佳实践中,签名后的令牌整体被加以保护完整性和机性。 3. 举例:例如在JWT中,先签名生成JWS,然后加生成JWE。 4. 引用:[^1] 支持签名部分。 5. 相关问题:生成几个相关问题。 相关问题想法: 1. JWS和JWE的区别是什么? 2. 如何实现JWT的签名和加? 3. 为什么签名需要先于加? 4. 在令牌验证中,如何处理解和验签的顺序? </think> 在令牌验证过程中,签名和令牌通常**同被加**,这是基于安全佳实践(尤其是先签名再加的顺序)的实现方式。以下我将逐步解释原因、流程和标准示例,确保回答与您之前的上下文致(如引用关于JWT签名的描述)。 ### 1. **签名和加的关系** - **令牌(Token)**:包含头部(Header)、负载(Payload,如用户ID、权限等)。 - **签名(Signature)**:基于令牌内容(通常是对负载的哈希值)使用私生成,用于验证数据完整性和来源(如引用所述,使用`HS256`算法签名)。 - **加(Encryption)**:使用(对称如AES)或公私(非对称如RSA)保护令牌内容,确保机性。 - **关键点**:签名是令牌的部分(在JWT中位于尾部),当加发生时,**整个令牌(包括头部、负载和签名)会被同加**。这是因为: - 签名依赖于令牌内容,如果只加负载而不加签名,攻击者可能篡改签名或进行重放攻击。 - 先签名再加(Sign-then-Encrypt)的顺序要求签名后的完整令牌被加,以同时满足完整性和机性[^1]。 ### 2. **标准流程:签名和令牌同加** 在JWT等标准协议中,签名和令牌同加是常见做法: - **步骤分解**: 1. **签名**:对原始令牌负载生成签名。例如,使用`HS256`算法: - 计算负载哈希值 $H(Payload)$。 - 用(如`"jjweb"`)签名:$Signature = \text{sign}(H(Payload), key)$。 - 生成未加的JWT格式:`Header.Payload.Signature`(引用[^1])。 2. **加**:将整个签名后的令牌(含签名)加。例如: - 使用对称(如AES)或接收方公:$EncryptedToken = \text{encrypt}(Header.Payload.Signature, key)$。 3. **传输与验证**: - 接收方先解得到原始令牌(含签名)。 - 再验签:计算负载哈希 $H(Payload)$,与签名对比。 - **为何同加?** - **安全性**:加签名部分防止攻击者窃取签名后伪造令牌(如重放攻击)。如果签名未加,令牌机性可能被破坏。 - **标准合规**:在JWT中,若需加,标准流程是将整个JWS(签名后的令牌)作为JWE(加令牌)的负载,确保签名和负载均被保护。 - **性能**:加整个令牌比分层处理更高效,减少计算开销。 ### 3. **示例:JWT中的实现** 以引用的`HS256`签名为例,扩展为签名后加的代码(使用Java伪代码): ```java // 1. 签名令牌 String payload = "{\"user\":\"admin\"}"; String signedToken = Jwts.builder() .setPayload(payload) .signWith(SignatureAlgorithm.HS256, "jjweb") // 生成签名,包含在令牌中 .compact(); // 输出格式: Header.Payload.Signature // 2. 加整个令牌(含签名) String encryptionKey = "secure_key"; // 对称加 String encryptedToken = encrypt(signedToken, encryptionKey); // 加方法,如AES // 接收方步骤: // a. 解:decrypt(encryptedToken, encryptionKey) → 得到 signedToken // b. 验签:Jwts.parser().setSigningKey("jjweb").parse(signedToken) ``` - 在此流程中,签名作为令牌的部分,被**同加**。 ### 4. **注意事项** - **顺序的重要性**:如果先加再签名(Encrypt-then-Sign),签名可能暴露加数据,增加风险(如引用未覆盖加,但签名需优先)。 - **管理**:签名(如`"jjweb"`)和加应分开,避免单点失效。 - **适用场景**:在需要高安全性的接口(如OAuth 2.0)中,推荐此方式确保端到端安全。 ### 总结 是的,在令牌验证过程中,**签名和令牌通常同被加**。这遵循先签名再加佳实践,确保令牌的完整性、认证性和机性。签名是令牌的组成部分,加操作作用于签名后的整体,防止中间人攻击或数据篡改。如果您有具体协议(如JWT实现细节),可进步探讨优化方案。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值