fortran95/xi
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
NERV - ξ计划 说明书 =================== 简介 ---- ξ计划的目的,在于建立一套基于公钥加密的对称加密密钥交换系统,为应用 提供如下保护: * 机密性,保证通信信息是不可被其他人读取的 * 完整性,当通信被篡改,可以被通信双方发现 * 可信性,使通信双方都能确认对方的身份 * 抵赖性,对截获通信的任何人都可抵赖,但对通信对方不可抵赖 组成 ---- 1. 核心加密程序 ciphers/ 在 __init__.py 中提供了一个类:xipher,可以提供对称加密保护。本类的 密钥长度为1024比特或128字节,使用计数器模式加密信息,因此可以改写成多线 程加解密。 采用4种算法(Serpent, Twofish, Rijndael, XXTEA),进行16轮迭代,产生 字节流。对字节流和信息进行异或运算,得到密文。解密是上述过程的重复。字节 流以一系列块组成,每块输入加密模块得到输出,拼接而成。每块16字节,前8字 节为初始向量,后8字节为计数器。 初始化向量由16字节的随机参数和输入数据拼接结果的CRC32校验值得到。初 始化向量和随机参数依次附于加密输出开头。解密时可以得到这两个数据。因此在 解密后,可以用CRC32校验是否解密正确。 2. 证书系统 certificate.py 在 certificate.py 中提供了一个复杂的类:certificate,可以进行如下功 能: * 初始化一个新的证书 * 证书的公钥和私钥信息的导入导出 * 用私有证书签署其他公钥证书或撤销签署,单独导出签名 * 导入一个签名到公有证书 * 用公有证书验证其他证书的签名 * 用私有证书签署任意长度的信息 * 用公有证书验证一个私有证书的签名,根据给定的信息 * 用公有证书进行加密,用私有证书进行解密 证书采用两种公钥:RSA 和 EC(椭圆曲线)。在签署中需要两种算法给出的 签名同时通过验证。在加密中,两种算法分别加密一部分临时密钥,然后临时密钥 通过 xipher 进行实际的加密。这样扩展了证书系统的加密能力,并且保证了安全 性。 3. 签名咨询系统 securelevel.py 提供了一个咨询类 securelevel。 证书系统不能自行判断证书的签名是否可信,只能检查签名的完整性和适用性 (是否适用于本证书)以及有效期限。因此需要本系统进行咨询。咨询系统以证书 作为输入,根据 xi/user/ 下存储的证书作为参考,对给定证书的签名信任链提供 咨询。 证书的有效签名必须来自等级比它高的另一个证书。据此可以求出信任链。如 果信任链的顶端落在根证书上,就意味着是可信的。信任程度由签名时的参数 trustlevel 确定。父级-子级间签名的信任等级和父级-祖父级间的信任等级取较 小值,同级-叔级间的信任等级取最大值。这样可以给出证书的信任等级参考。
About
NERV xi Project. 'xi' is of Greek Alphabet.
Resources
Security policy
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published