Skip to content

fortran95/xi

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

No packages published

Languages