文章目录
- 一、自学网络安全学习的误区和陷阱
- 二、学习网络安全的一些前期准备
- 三、自学网络安全学习路线
- 一、PKI概述
- 1、理论基础
- 2、PKI提供的安全服务
- 二、数字证书
- 1、数字证书的格式
- 2、数字证书的生命周期
- 3、用JAVA工具生成数字证书
- 三、PKI组成
- 四、PKI功能
- 五、信任模型
- 六、相关的标准
一、自学网络安全学习的误区和陷阱
1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习
我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而且实际向安全过渡后可用到的关键知识并不多
一般人如果想要把编程学好再开始学习网络安全往往需要花费很长时间,容易半途而废。而且学习编程只是工具不是目的,我们的目标不是成为程序员。建议在学习网络安全的过程中,哪里不会补哪里,这样更有目的性且耗时更少
2.不要把深度学习作为入门第一课
很多人都是冲着要把网络安全学好学扎实来的,于是就很容易用力过猛,陷入一个误区:就是把所有的内容都要进行深度学习,但是把深度学习作为网络安全第一课不是个好主意。原因如下:
【1】深度学习的黑箱性更加明显,很容易学的囫囵吞枣
【2】深度学习对自身要求高,不适合自学,很容易走进死胡同
3.不要收集过多的资料
网上有很多关于网络安全的学习资料,动辄就有几个G的材料可以下载或者观看。而很多朋友都有“收集癖”,一下子购买十几本书,或者收藏几十个视频
网上的学习资料很多重复性都极高而且大多数的内容都还是几年前没有更新。在入门期间建议“小而精”的选择材料,下面我会推荐一些自认为对小白还不错的学习资源,耐心往下看
二、学习网络安全的一些前期准备
1.硬件选择
经常会问我“学习网络安全需要配置很高的电脑吗?”答案是否定的,黑客用的电脑,不需要什么高的配置,只要稳定就行.因为黑客所使用的一些程序,低端CPU也可以很好的运行,而且不占什么内存.还有一个,黑客是在DOS命令下对进行的,所以电脑能使用到最佳状态!所以,不要打着学习的名义重新购买机器…
2.软件选择
很多人会纠结学习黑客到底是用Linux还是Windows或者是Mac系统,Linux虽然看着很酷炫,但是对于新人入门并不友好。Windows系统一样可以用虚拟机装靶机来进行学习
至于编程语言,首推Python,因为其良好的拓展支持性。当然现在市面上很多网站都是PHP的开发的,所以选择PHP也是可以的。其他语言还包括C++、Java…
很多朋友会问是不是要学习所有的语言呢?答案是否定的!引用我上面的一句话:学习编程只是工具不是目的,我们的目标不是成为程序员
(这里额外提一句,学习编程虽然不能带你入门,但是却能决定你能在网络安全这条路上到底能走多远,所以推荐大家自学一些基础编程的知识)
3.语言能力
我们知道计算机最早是在西方发明出来的,很多名词或者代码都是英文的,甚至现有的一些教程最初也是英文原版翻译过来的,而且一个漏洞被发现到翻译成中文一般需要一个星期的时间,在这个时间差上漏洞可能都修补了。而且如果不理解一些专业名词,在与其他黑客交流技术或者经验时也会有障碍,所以需要一定量的英文和黑客专业名词(不需要特别精通,但是要能看懂基础的)
比如说:肉鸡、挂马、shell、WebShell等等
三、自学网络安全学习路线
公钥基础设施(PKI,Public Key Infrastructure)是一个用于非对称密码算法原理和技术实现并提供安全服务的具有通用性的安全基础设施。PKI是一种遵循标准的密钥管理平台,能为所有网络应用透明地提供采用加密和数字签名等密码服务所需要的密码和证书管理。
重点内容
概述
数字证书
PKI的组成
PKI的功能
信任模型
PKI相关标准
一、PKI概述
1976年第一个正式的公共密钥加密算法诞生后,20世纪80年代初期出现了非对称密钥密码体制,即公钥基础设施(PKI,Public Key Infrastructure)。
1976年,美国密码专家Diffie和Hellman提出了著名的D-H密钥体制,第一次解决了不依赖秘密信道的密钥分发问题,允许在不安全的媒体上双方交换信息,安全地获取相同的对称加密的密钥。
1978年Kohnfelder提出了Certificate Agency(CA认证机构)的概念,在CA集中式管理的模式下,公钥以CA证书的形式公布于目录库,私钥仍然以秘密信道的方式分发。
1991年相继出现了PGP、PEM,第一次提出密钥由个人生成的分布式体制,以不传递私钥的方式避开了秘密信道,进一步加强了信息加密的安全性。
1996年出现SPKI解决方案,PKI设立了CA认证中心,以第三方证明的方式(即中介Agency)将公钥和标识绑定,并创立了层次化CA架构。
作为最早提出PKI的国家,美国于1996年成立了美国联邦PKI筹委会,其PKI技术在世界上处于领先地位,与PKI相关的绝大部分标准都由美国制定。
2000年6月30日,美国总统克林顿正式签署美国《全球及全国商业电子签名法》,给予电子签名、数字证书以法律上的保护
美国联邦政府的PKI体系建设形成了以下信任层次的信任域:
1.策略批准机构(PAA):这是联邦PKI的根节点,负责批准二级节点的安全策略;
2.策略产生机构(PCA):也叫策略认证机构,是联邦PKI的二级节点,定义下级产生公钥证书节点的安全策略;
3.认证机构(CA):是联邦PKI的三级节点,依据PCA定义的安全策略,为下级用户(可能是下级CA)签发和维护数字证书、CRL结构等;
4.用户:数字证书及相应私有密钥的持有者,用户利用数字证书和私有密钥进行数据维护、身份鉴别等安全行为。
加拿大在1993年就已经开始了政府PKI体系雏形的研究工作,到2000年已在PKI体系方面获得重要的进展
欧洲在PKI基础建设方面的成绩也很显著。在已经颁布的93/1999EC法规中,强调技术中立、隐私权保护、国内与国外相互认证以及无歧视等原则。并于2000年10月成立了欧洲桥CA指导委员会,于2001年3月23日成立了欧洲桥CA。
在亚洲,韩国是最早开发PKI体系的国家。
韩国的认证架构主要分三个等级:最上一层是信息通讯部,中间是由信息通讯部设立的国家CA中心,最下级是由信息通讯部指定的下一级授权认证机构(LCA)。
日本的PKI应用体系按公众和私人两大领域来划分,而且在公众领域的市场还要进一步细分,主要分为商业、政府以及公众管理内务、电信、邮政三大块。
我国的PKI技术从1998年开始起步,2001年PKI技术被列为“十五”863计划信息安全主题重大项目,并于同年10月成立了国家863计划信息安全基础设施研究中心。
1、理论基础
什么是基础设施
基础设施就是一个普适性基础,它在一个大环境起着基本框架的作用。作为基础设施,需要实现“应用支撑”的功能,可以让“应用”正常工作。它应该具有以下几种特性:
(1)易于使用、众所周知的熟悉的界面;
(2)基础设施提供的服务可以预测并且有效;
(3)应用设备无须了解基础设施的工作原理。
安全基础设施的概念
安全基础设施,同样必须依照上述的原理,同样必须提供基础服务,也就是说要具有普适性。
安全基础设施能够保证应用程序增强数据和资源的安全,保证增强与其他数据和资源进行交换中的安全。
密码学理论
密码已经从外交和军事领域走向公开,且已经发展成为一门结合输血、计算机科学、电子与通信、微电子等技术的交叉学科。它主要由密码编码技术和密码分析技术两个分支组成。
2、PKI提供的安全服务
一个完善的PKI基础设施提供的服务主要包含几个方面:
安全登录
安全基础设施并不意味着取消口令的使用,因为口令方式是用户进入基础设施本身的认证机制。
安全基础设施只是解决了使用口令方式时存在的最严重的一个问题,它可以避免口令在不信任的或者不安全的网络中传递,从而根本避免了用户口令在传输中被截获的可能性。
终端用户透明
用户使用安全基础设施时,基础设施只是一个黑盒子,用户需要的是服务而不是如何提供服务的细节。
全面的安全性
作为一个普适性安全基础设施最大的益处是在整个环境中实施的是单一的、可信的安全技术(如公钥密码技术),所有它能够提供跟设备无关的安全服务。
二、数字证书
数字证书就像身份证、护照等,作为个人身份识别的凭证。形象一些来描述,它是网络上的护照。
数字证书技术涉及证书签发机构(证书机构CA)、注册机构(RA)和终端用户。
数字证书技术是可以用来证明身份的一种技术。
数字证书证明所有者与公开密钥的关系,也就是把证书申请者与生成的公钥绑定在一起了。
1、数字证书的格式
目前数字证书的格式通常有以下几种:
X.509证书
WTLS证书(WAP)
PGP证书
属性证书
普遍采用的是X.509 V3国际标准,它的前面出现过X.509 V1,X.509 V2,内容包括证书序列号、证书持有者名称、证书颁发者名称、证书有效期、公钥、证书颁发者的数字签名等。
它的格式包括如下内容:
Version:证书的版本号。
Serial number:证书的序列号,这是一个由证书的发布CA分配的一个唯一值。
CA的签名算法ID:CA对证书签名所用的算法的标识符,支持的签名算法包括RSA签名算法和DSA数字签名算法。
CA的X.500名:发布证书的CA在X.500目录树上的辨识名DN。
有效期:用一个起始时间和一个结束时间来表示的证书的有效周期。
主体名:证书所有者在X.500上的辨识名。
主体的公钥信息:包括主体的公钥、生成该密钥的算法标识符和相关信息。
发布者的唯一辨识符:确保证书主体的X.500辨识名的唯一性的一个比特串,是一个可选域。
证书主体的唯一辨识符:确保证书主体的X.500辨识号的唯一性的一个比特串,是一个可选域。
Signature:签名,包括由CA私钥加密的其他字段的哈希值、签名算法标志及参数。
2、数字证书的生命周期
证书注册
证书更新
证书撤销
3、用JAVA工具生成数字证书
编程实现的步骤如下:
(1)读取证书内容,创建证书对象:
//读取证书文件
InputStream inStream = new fileInputStream(“Justin.cer”);
//创建X509类
certificateFactory cf = certificateFactory.getInstance(“X.509”);
//创建证书对象
X509certificate oCert = (X509Certificate) cf.generateCertificate(inStream);
(2)获取证书版本:
oCert.getVersion();
(3)获得证书序列号:
oCert.getSerialNumber();
(4)获取证书有效期:
oCert.getNotBefore();
oCert.getNotAfter();
(5)获取证书主题信息、颁发者信息:
oCert.getSubjectDN().getName();
oCert.getIssuerDN().getName();
(6)获取证书der编码数据:
Byte [] tbsCertificate = oCert.getTBSCertificate();
三、PKI组成
PKI必须具有认证中心(CA)、证书库、密钥备份及恢复系统、证书废止处理系统、客户端证书处理系统等基本成分,构建PKI也将围绕这五大系统来构建:
PKI认证机构
验证并标识证书申请者的身份
确保CA用于签名证书的非对称密钥的质量
确保整个签证过程的安全性,确保签名私钥的安全性
证书材料信息(包括公钥证书序列号、CA标识等)的管理
确定并检查证书的有效期限
确保证书主体标识的唯一性,防止重名,发布并维护作废证书表
对整个证书签发过程做日志记录
向申请人发通知
证书库
密钥备份及恢复系统
证书废止处理系统
PKI应用接口系统
四、PKI功能
归纳起来,PKI应该为应用提供如下的安全支持:证书管理与CA,密钥备份及恢复系统,交叉签证,加密密钥和签名密钥的分离,支持对数字签名的不可抵赖,密钥历史的管理:
证书管理
密钥管理
认证
注册服务器
证书申请受理和审核机构
认证中心服务器
安全服务功能
透明性和易用性
不可抵赖性
可扩展性,互操作性
五、信任模型
选择信任模型(Trust Model)是构建和运作PKI所需的一个环节,选择正确的信任模型以及它相应的安全级别是非常重要的。同时也是部署PKI所要做的早期和基本的决策之一。
信任模型主要阐述了以下的几个问题:
一个PKI用户能够信任的证书是怎样被确定的
这种信任是怎样建立的
在特定环境下,这种信任如何被控制
目前常见的几种信任模型:
层次结构模型
分布式网状结构模型
Web模型
六、相关的标准
两个PKI应用程序之间要进行交互,只有互相理解对方发来的数据的字节的含义才可能实现。标准提供了数据语法和语义的共同约定。
1、X.509标准
2、PKIX
3、PKCS标准
4、X.500标准
5、轻量级目录访问协议LDAP
(Lightweight Directory Access Protocol)
LDAP特点
与X.500的区别