diff --git a/Addfiletest.txt b/Addfiletest.txt new file mode 100644 index 0000000000000000000000000000000000000000..34583e843af8de0c01c9da019d458127c6590c32 --- /dev/null +++ b/Addfiletest.txt @@ -0,0 +1 @@ +hello go \ No newline at end of file diff --git a/README.md b/README.md index 25a33aab6c90437effc19dd832002d0ad1a989a2..9b82a8c4e0650b9ad409727c367a83b1126a33e7 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ 1. xxxx 2. xxxx 3. xxxx +#### 技术储备 +go语言相关知识 #### 参与贡献 diff --git "a/doc/tpm2-\344\272\244\344\272\222\347\220\206\350\247\243/PKI\357\274\210\345\205\254\351\222\245\345\237\272\347\241\200\350\256\276\346\226\275\357\274\211\344\273\245\345\217\212Privacy-CA\347\233\270\345\205\263\345\237\272\347\241\200\347\237\245\350\257\206.md" "b/doc/tpm2-\344\272\244\344\272\222\347\220\206\350\247\243/PKI\357\274\210\345\205\254\351\222\245\345\237\272\347\241\200\350\256\276\346\226\275\357\274\211\344\273\245\345\217\212Privacy-CA\347\233\270\345\205\263\345\237\272\347\241\200\347\237\245\350\257\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..03bb3fead331ff8651638accd4e4011232ed770e --- /dev/null +++ "b/doc/tpm2-\344\272\244\344\272\222\347\220\206\350\247\243/PKI\357\274\210\345\205\254\351\222\245\345\237\272\347\241\200\350\256\276\346\226\275\357\274\211\344\273\245\345\217\212Privacy-CA\347\233\270\345\205\263\345\237\272\347\241\200\347\237\245\350\257\206.md" @@ -0,0 +1,114 @@ +#### PKI:Public Key Infrastructure,公钥基础设施。 +是通过使用公钥技术和数字证书来提供系统信息安全服务,并负责验证数字证书持有者身份的一种体系。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术 +PIK保证了通信数据的私密性、完整性、不可否认性和源认证性 。 +#### CA:Certificate Of Authority,认证中心。 +#### 数字证书:提供了一种发布公钥的简便途径; +是一个经证书授权中心CA数字签名的文件,包含拥有者的公钥及相关身份信息。 +==数字证书仅仅是解决了“这个公钥的持有者到底是谁”的问题==一个数字证书包括:拥有者身份信息、公钥、CA数字签名、有效期等其他信息。 +数字签名:用来确认信息发送者的身份,保证信息的完整性和抗否认性 +最简单的证书包含一个公钥、名称以及证书授权中心的数字签名。 +#### 证书类型: +##### 自签名证书:自签名证书又称为根证书,是自己颁发给自己的证书,即证书中的颁发者和主体名相同。 +##### CA证书:CA自身的证书。如果PKI系统中没有多层级CA,CA证书就是自签名证书;如果有多层级CA,则会形成一个CA层次结构,最上层的CA是根CA,它拥有一个CA“自签名”的证书。 +##### 本地证书:CA颁发给申请者的证书。 +##### 设备本地证书:设备根据CA证书给自己颁发的证书,证书中的颁发者名称是CA服务器的名称 +#### 证书格式: +##### PKCS#12:以二进制格式保存证书,可以包含私钥,也可以不包含私钥。常用的后缀有:.P12和.PFX。 +##### DER:以二进制格式保存证书,不包含私钥。常用的后缀有:.DER、.CER和.CRT。 +##### PEM:以ASCII码格式保存证书,可以包含私钥,也可以不包含私钥。常用的后缀有:.PEM、.CER和.CRT。 +### PKI的核心部分CA +#### CA介绍 +证书认证机构CA(Certificate Authority),CA是PKI的信任基础,是一个用于颁发并管理数字证书的可信实体,它是一种权威性、可信性和公正性的第三方机构,通常由服务器充当,例如windows server 2008 +CA通常采用多层次的分级结构,根据证书颁发机构的层次,可以划分为==根CA==和==从属CA== +CA的核心功能就是==发放和管理数字==,包括:证书的颁发、证书的更新、证书的撤销、证书的查询、证书的归档、证书废除列表CRL(Certificate Revocation List)的发布等。 +#####有关CA的特性: + 1.仅仅==只有一个受信任==的介绍者(证书颁发机构) + 2.CA签署==每一个人==的公钥 + 3.每个人都有==CA的公钥== +#### CA证书的颁发流程 +1.每个实体都要==获取CA的公钥==(认证CA的过程) +2.每个实体都要提交自己的公钥给CA(==注册到PKI==) +3.这个初始步骤,必须手动认证或者通过一个可信任的传输网络来执行。 +4.CA使用自己的私钥为提交的公钥做数字签名。 +5.被数字签了名的公钥(身份证书)再返回给实体。 +6.实体现在就可以通过非信任的网络来彼此交换被CA签了名的公钥了。 +7.收到的公钥都是被CA的公钥所确认的,CA的公钥在每个实体本地必须是有效的 +#### PKI的组成 +==一个PKI体系由终端实体、证书认证机构、证书注册机构和证书/CRL存储库四部分共同组成。== +#### ==PKI框架的三个重要角色== +1.终端实体(EE,End Entity):证书的最终使用者,如总部和分支的网关 +2.证书颁发机构(CA,certificate Authority):是一个权威的、可信的第三方机构,负责证书颁发、查询以及更新等工作 +3.证书注册机构(RA) +#### 证书申请过程: +==前提条件:正确部署CA服务器== +1.**同步时间**:时间是PKI系统的重中之重,必须先确保参加PKI系统的设备和主机的时间同步,才能开始PKI的部署 +当设备的时间慢与证书有效期的开始时间或者设备时间大于证书有效期的结束时间那么证书都是无效的 +==忌讳:设备时间比证书服务器的时间慢== +2.**部署证书服务器**:证书服务器是整个PKI系统的核心 +3.**客户端产生密钥对**:每个实体在申请证书之前,需要预先产生RSA的秘钥对 +4.**验证证书服务器的合法性** +5.**申请个人证书** 每个实体发送自己的个人信息和公钥到证书服务器 +6.**CA审核并签名证书** +7.**CA颁发数字证书给设备**证书服务器把签名的证书颁发给实体 +8.**设备相互交换证书** +### 对称秘钥加密:一个密钥 +#### 对称密钥加密,也叫做共享加密或机密密钥加密,使用发件人和发件人共同拥有的单个密钥 +==衡量对称算法优劣的主要尺度是其密钥的长度== +#### 将公钥加密用于数字签名 +数字签名是邮件、文件或其他数字编码信息的发件人将他们的身份与信息绑定在一起(即为信息提供签名)的方法 +##### 常用的公钥算法 +RSA-适用于数字签名和密钥交换 +DSA-仅适用于数字签名 +Diffie-Hellman-仅适用于密钥交换 +#### 单向散列算法 +散列也称散列值或消息摘要,是一种与基于密钥(对称&公钥)的加密不同的数据转换类型。散列就是通过把一个叫做散列算的单向数学函数应用于数据, +==将任意长度的一块数据转换为一个定长的、不可逆转的数字== +两种最常用的散列函数: + MD5:可产生128位的散列值的散列算法,但算法的基本原理已经泄露 + SHA-1:可产生一个160位的散列值,是流行的用于创建数字签名的单向散列算法 +### PKI:公钥基本结构 +用于管制或操纵证书与公钥及私钥的策略标准和软件 +#### 实际上,PKI是指由数字证书、证书颁发机构CA以及对电子交易所涉及的各方的合法性进行检查和验证的其他注册机构组层的一套系统 +#### 证书 +#### 公钥证书 +通常简称为证书,用于在Internet、Extranet和Intranet上进行身份验证并确保数据交换的安全,颁发证书的实体是证书的主体 +公钥证书是以数字方式签名的声明,它将公钥的值与持有相应私钥的主体(个人、设备和服务)的身份绑定在一起 +#### 证书颁发机构 +证书颁发机构(CA)是一个向个人、计算机或任何其他申请实体颁发证书的可信实体。 +证书颁发机构的类型: +自签名CA:在自签名CA中,证书中的公钥和用于验证证书的密钥是相同的 +从属CA:在从属CA中,证书中的公钥和用于核实证书的密钥是不同的 +根CA:根CA是一种特殊的CA,它受到客户无条件地信任,位于证书层次结构的最高层。 + +### ==Privacy CA== +#### 什么是受信任的CA +受信任的CA也称商业CA,是为申请证书的企业组织颁发证书的权威性第三方机构,并管理最终用户数据加密的公共密钥和证书 +#### 目前特别知名的证书颁发机构 +**DigiCert Entrust Datacard Globalsign Sectiao** +#### 什么是私密CA +私有证书颁发机构(也称私有PKI)是内部CA,通常存在于大型企业中,并自己给自己颁发证书 +私密CA在许多方面都像公共CA一样运作,但是==最明显的区别在于==: + +**私密CA颁发的证书仅受其内部用户,客户端和IT系统信任; +私密CA颁发的证书会限制对选定用户组的访问。 +您必须自己建立私密CA,并托管私密CA(或者找第三方帮您完成)** +==私密CA自签名证书最常用于以下场景==: + +**虚拟专用网络; +内网站点; +私人电子邮件签名证书; +封闭式的用户组服务; +文件共享应用程序。** +#### 公共CA与私有CA的区别在于: +==1. 应用场景不同== +受信任的CA签发的证书符合行业的基本标准,安全性高,多用于公众访问的站点,特别是电子商务系统,网银系统,证券系统等; +自签名的CA证书则适用于内网站点,适合企业内部人员的使用。 + +==2. 安全系数不同== +公共CA证书是由受信任的根证书签发,CA在签发证书前还会对证书申请者进行身份验证,确保其身份的真实性。如果已签发的证书发现有问题,CA有权吊销该证书以避免安全问题的发生。 +自签名证书是自己创建的CA签署的数字证书,它普遍存在严重的安全漏洞,极易受到攻击劫持,而且通常不受浏览器信任,因此自签名证书安全系数非常低。此外,私有CA无权吊销自签名证书。 + +==3. 成本投入不同== +由于CA包含在信任库中,您的证书将被公开信任,从公共证书机构颁发的证书只是公共信任的证书的一小部分,企业或个人用户只需要支付很少的费用就可让站点得到安全的保护和身份认证。 +相反,建立自己内部CA,是需要人力和财力成本,甚至是需要一个团队去管理内部PKI,而且还需要支付硬件,软件,许可和培训费用。 对于很多小公司来说,这会造成成本过高。 +如此看来,如果您是要保护一个可以被公众访问的域名,那么最好是选择受信任的公共CA来签发证书,因为他们的根证书存储在大多数浏览器的信任存储库中,这样会使得身份验证变得更容易。所以,为了您的重要系统安全,特别是重要的网银系统,证券系统,电子商务系统,锐成信息建议您使用正规权威的CA颁发的全球信任的SSL证书。 \ No newline at end of file diff --git "a/doc/tpm2-\344\272\244\344\272\222\347\220\206\350\247\243/\344\272\244\344\272\222\350\277\207\347\250\213\346\226\207\346\241\243.md" "b/doc/tpm2-\344\272\244\344\272\222\347\220\206\350\247\243/\344\272\244\344\272\222\350\277\207\347\250\213\346\226\207\346\241\243.md" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/doc/tpm2-\344\272\244\344\272\222\347\220\206\350\247\243/\346\227\266\345\272\217\345\233\276\347\233\270\345\205\263\347\237\245\350\257\206\345\222\214\344\275\277\347\224\250\346\226\271\346\263\225.md" "b/doc/tpm2-\344\272\244\344\272\222\347\220\206\350\247\243/\346\227\266\345\272\217\345\233\276\347\233\270\345\205\263\347\237\245\350\257\206\345\222\214\344\275\277\347\224\250\346\226\271\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..bdc5099b49968e15c9ea22b05b6bc109c1dd410e --- /dev/null +++ "b/doc/tpm2-\344\272\244\344\272\222\347\220\206\350\247\243/\346\227\266\345\272\217\345\233\276\347\233\270\345\205\263\347\237\245\350\257\206\345\222\214\344\275\277\347\224\250\346\226\271\346\263\225.md" @@ -0,0 +1,19 @@ +### 时序图 +#### 基本概念: +时序图(Sequence Diagram)又称序列图,是一种UML交互图 + +==它通过描述对象之间发送信息的时间顺序显示多个对象之间的动态协作== +#### 几种常用的部分 +##### ①角色Actor :系统角色,可以是人或者其他系统和子系统,以一个小人图标表示 +##### ②对象(object):位于时序图的顶部,以一个矩形表示 +##### ③生命线(Lifeline):时序图中每个对象和底部中心都有一条垂直的虚线 +##### ④控制焦点(Activation):是顺序图中表示时间段的符号,在这个时间段内对象将执行相应的操作。用小矩形表示 +##### ⑤消息(Message):表示对象之间发送的信息 + + 同步消息 实线+加粗箭头 + + 异步消息 实线+箭头 + + 返回消息 虚线+箭头 +#### 在时序图中,首先把参与交互的对象放在图的上方,沿x轴方向排列,通常把发起交互的对象放在左边,较下级的对象放在右边,然后把这些对象发送和接收的消息沿y轴方向按时间顺序从上到下放置 +#### ==纵轴是时间轴,横轴是对象,对象的生命周期沿竖线向下延伸== \ No newline at end of file diff --git "a/doc/tpm2-\344\272\244\344\272\222\347\220\206\350\247\243/\346\263\250\345\206\214\346\234\237\351\227\264\347\232\204\344\272\244\344\272\222\350\277\207\347\250\213.png" "b/doc/tpm2-\344\272\244\344\272\222\347\220\206\350\247\243/\346\263\250\345\206\214\346\234\237\351\227\264\347\232\204\344\272\244\344\272\222\350\277\207\347\250\213.png" new file mode 100644 index 0000000000000000000000000000000000000000..120a944c880408222049e47a3fdc2e4f8442b861 Binary files /dev/null and "b/doc/tpm2-\344\272\244\344\272\222\347\220\206\350\247\243/\346\263\250\345\206\214\346\234\237\351\227\264\347\232\204\344\272\244\344\272\222\350\277\207\347\250\213.png" differ diff --git a/helloworld.txt b/helloworld.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391