01
网络安全概述
安全性威胁
计算机网络通讯过程中,主要有两种威胁。
•主动攻击
•被动攻击
具体攻击的位置如下图。
从汽车电子的角度举个例子,大部分的软件工程师,应该都干过下面两件事。
•被动攻击
大家都做过的,“对标,抄袭” 买来对标的车,找个一分二的线,不知道从哪弄来的dbc, 来采别人家的报文,看看别人的交互逻辑大概是什么样的。虽不耻为伍,但也做过。
•主动攻击
用CANoe 插在一分二的线上,也同时发送某个报文。
安全的计算机网络
随着汽车电子的发展,以太网接入汽车电子, OTA的广泛推广。信息安全,汽车电子计算机安全变得越来越重要。鄙人信息被盗了不值钱,要是车子被控制了,可是要嘎了的事情。
所以安全的网络应当包含以下几点
•机密性
机密性(或私密性)就是只有信息的发送方和接收方才能懂得所发送信息的内容,而信息的截获者则看不懂所截获的信息。
•端点鉴别
安全的计算机网络必须能够鉴别信息的发送方和接收方的真实身份。也就是说 PC 端插一个CANoe, PC 端接一根网线,不应该能和车子通讯上。否则是件很危险的事情。
•信息的完整性
即使能够确认发送方的身份是真实的,并且所发送的信息都是经过加密的,我们依然不能认为网络是安全的。还必须确认所收到的信息都是完整的,也就是估息的内容没有被人篡改过。保证信息的完整性在应对主动攻击时也是必不可少的。信息的完整性和机密性是两个不同的概念。
说话别说一半,否则要被打的。就像控制端 发送扭矩控制 100Nm, 状态位是Valid. 接收端只能说到100Nm. 这显然是不会被执行的。
•运行的安全性
现在的汽车软件,ECU,对网络的依赖越来越密切,即使没有被攻击,或者窃取有效数据,也需要保证运行时的安全性,安全的运行环境,相对稳定的工作环境。这里就需要访问控制。访问控制包含外设的,内存的,网络接口的,等等。
访问控制(access control)对计算机系统的安全性非常重要。必须对访问网络的权限加以控制,并规定每个用户的访问权限。由于网络是个非常复杂的系统,其访问控制机制比操作系统的访问控制机制更复杂(尽管网络的访问控制机制是建立在操作系统的访问控制机制之上的),尤其在安全要求更商的多级安全(multi level security)情况下更是如此。
数据加密模型
有了上面的实际问题,我们就需要考虑对策了。
一般的数据加密模型如下图 所示。用户 发送明文 X, 但通过加密算法 运算后,就得出密文Y
•A:发送方ECU
•K:密钥,可以理解为一个字符串,或者是数据流等等
•X:未经加密的数据
•Y:加密之后的数据
随着信息安全的发展,这里的k 可能是不同的,公钥,私钥等等。
再此过程中,截取者可以去截取,获取,篡改等操作。如果按照上面的模型,截取者只需要加密算法E,解密算法D 以及密钥就可以进行操作。解密过程
02
两类密码体制
对称密钥密码体制
所谓对称密钥密码体制,即加密密钥与解密密钥都使用相同密钥的密码体制。如下图,其实就是上图。
DES 的机密性仅取决于对密钥的保密,而算法是公开的。
DES 之后, 一种新的加密标准即高级加密标准 AES
autosar 也有一堆。但是从本质上来说,就是OEM 合 tier 1 有 key, 算法是公开的。所以都可以抽象成下面公式。
公钥密码体制(非对称加密) RSA
公钥密码体制使用不同的加密密钥与解密密钥。这种加密体制又称为非对称密钥密码体制。
公钥密码体制的产生主要有两个方面的原因,一是由于对称密钥密码体制的密钥分配问题,二是由于对数字签名的需求。
在公钥密码体制中,加密密钥 PK (Publ ic Key,即公钥)是向公众公开的,而解密密SK (Secre t Key,即私钥或密钥)则是需要保密的。加密算法 和解密算法 也都是公升的。
公钥密码体制的加密和解密过程有如下特点:
(I) 密钥对产生器产生出接收者 的一对密钥:加密密钥 PKB 和解密密钥 SKB 。发送者所用的加密密钥 PKB 就是接收者 的公钥,它向公众公开。而 所用的解密密钥 SKB是接收者 的私钥,对其他人都保密。
(2) 发送者 的公钥 PKB 通过 运算对明文 加密,得出密文 Y, 发送给B
B用自己的私钥 SKa 通过 运算进行解密,恢复出明文,即
这里的公钥和私钥虽然是成对的,但是必须要做到向上不计算的原则。就是Pk 无法计算出 Sk.
否则,白扯。
上述的加密,解密过程如下图
请注意,任何加密方法的安全性取决千密钥的长度,以及攻破密文所需的计算量,而不是简单地取决于加密的体制(公钥密码体制或传统加密体制)。我们还要指出,公钥密码体制并没有使传统密码体制被弃用,因为目前公钥加密算法的开销较大,在可见的将来还不会放弃传统加密方法。
所以很多汽车上面的MCU, SOC 都有独立的加密芯片,比如我们常常提到的HSM。
没干过 就不能干吗?
03
鉴别
报文鉴别
鉴别和加密是不相同的概念。鉴别的内容有二。
•一是要鉴别发信者
即验证通信的对方的确是自己所要通信的对象,而不是其他的智充者。这就是实体鉴别。实体可以是发信的人,也可以是一个进程(客户或服务器)。因此这也常称为端点鉴别。
•
二是要鉴别报文的完整性
即对方所传送的报文没有被他人篡改过。至千报文是否需要加密,则是与“鉴别“性质不同的问题。有的报文需要加密(这要另找措施),但许多报文并不需要加密。
but how? 请继续往下看
用数字签名进行鉴别(原理)
我们知道,书信或文件可根据亲笔签名或印程来鉴别其真实性。但在计货机网络中传送的报文,则可使用数字签名进行鉴别。下面就介绍数字签名的原理。
这里有一个最根本的原则就是,接收方需要通过大家都认可的方式来计算出,收到的数据出自于“我:发送方”。
这里就用到了上面说到的非对称加密的方法进行签名。
为了进行数字签名, 用其私钥 心对报文 进行 运算。运算本来叫作解密运算。可是,还没有加密怎么就进行解密呢?其头 运算只是把报文变换为某种不可读的密文(因此有时也说成 用其私钥对报文加密,但这样说不准确)。在图中我们使用 “D 运算'而不是“解密运算“,就是为了避免产生这种误解。把经过 运算得到的密文传送给 为了核实签名,用 的公钥进行 运算,还原出明文 。诸注意,任何人用 的公钥 心进行 运算后都可以得出 发送的明文。可见图 中所示的通信方式并非为了保密,而是为了进行签名和核实签名,即确认此明文的确是 发送的。
不知道说的恰当不恰当,就是PK 可以进行解SK进行D运算的数据。因为SK 只有发送方有,所以档PK进行E计算,算出来的东西,是谁的,就是谁的。
除非私钥K 被别人知道了,但是我们假设是私钥 都是只有自己知道的。所以一定程度上做到了数字签名的另外一个功能:不可否认,不能抵赖。
但是这虽然进行了签名,但是还没有加密。任何人拿到了PK 都可以读取原来的明文数据,进行攻击,盗取。
所以我们还需要对数据进行加密。
如果用下图所示的方法,就可同时实现保密通信和数字签名。图中 SKA SKB别为 的私钥,而 PKA 和 PKB 分别为 的公钥。
虽然在理论上是正确的,但很难用于现实生活中。因此这一节的小标题后边有“原理”二字。这是因为要对报文(可能很长的报文)先后要进行两次 运算和两次 运算,这种运算量太大,要花费非常多的计算机 CPU 时间,在很多情况下是无法令人接受的。因此目前对网络上传送的大狱报文,普遍都使用开销小得多的对称密钥加密。要实现数字签名当然必须使用公钥密码,但一定要设法减小公钥密码算法的升销。这就要使用后而几个小节所讨论的密码散列函数和报文鉴别码。
密码散列函数
密码散列函数主要有以下四个特性
1.输入的数据可以是长度不唯一的,但是输出是固定长度,且短的(短 有时候是优势)。
2.结果可能是多对一的,就是因为结果的长度是固定的,只能说结果有很多种可能,但是输入的可能性更多,所以总会有不同的输入算出来相同的输出,但是无伤大雅,2的128次方,不是那么容易对上的。
可以正向计算,无法反算回来。属于一种单向函数
1.输出的结果和输入的每一个bit都有关系,即 改动一个bit, 结果差距也会很大。
报文鉴别码进行报文鉴别
这里的主要原理就是把计算出来的报文鉴别码计算出来,并且拼接到报文最后。这样接收方就可以进行计算鉴别码,看看和收到的鉴别码是否一致。所以提问:这里鉴别的是什么“ 答:鉴别的是 数据的完整性。
其实这样计算会出一个问题,就是伪造数据的伪造者也可以用相同的手段。
所以这里我们可以采取接收方,与发送方共享一个私钥,这个私钥只有这两个方可以知道。所以我们可以读出以下过程。
注意这个MAC 不是计算机的MAC 地址的MAC, 而是:Message Authentication Code.
上面的过程一定程度上能知道数据没有被篡改,且是指定的发送方发来的。但是数据本身没有进行加密,还是防止不了窃取,只是防止了篡改。
下面我们基于前面的过程进行加密。
前面的过程提到的共享的一组私钥,在这里可能就不需要了,因为非对称加密已经有了私钥 公钥。可以得出下面过程。
总结一句话:A 用自己的私钥进行签名, B 用 A 的公钥进行鉴别” 不可抵赖,不可否认,数据一致。
实体鉴别
实体鉴别和报文鉴别不同。报文鉴别是对每一个收到的报文都要鉴别报文的发送者,而实体鉴别是在系统接入的全部待续时间内对和自已通信的对方实体只需验证一次。
最简单的实体鉴别过程如下图所示。向远端的 发送带有自己身份 (例如,的姓名)和口令的报文,并且使用双方约定好的共享对称密钥 KAB 进行加密。收到此报文后,用共享对称密钥 KAB 进行解密,从而鉴别了实体 的身份。
然而这种简单的鉴别方法具有明显的漏洞。例如,入侵者 可以从网络上截获 发给的报文, 井不需要破译这个报文(因为破译可能很费时间),而是直接把这个由 加密的报文发送给 B, 误认为 就是 A; 然后 就向伪装成 发送许多本来应当发给的报文。这就叫作重放攻击。甚至还可以截获 IP 地址,然后把IP 地址冒充为自己的 IP 地址(这叫作 IP 欺骗)。
为了解决上面的问题,需要使用到大量的不重复随机数,所以为什么好多主机厂的需求,对随机数的要求很大。也有不可预测的硬件随机数的需求(媳妇的情绪是真随机,不可预测,不去做加密,屈才了)。
在鉴别过程中不重数可以使 B 能够把重复的鉴别请求和新的鉴别请求区分开。
所以这样就可以避免掉重放的攻击。
但是下面作为中间人的攻击还是无法避免。
所以密钥管理也是个很重要,非常重要的事情。
04
系统安全:防火墙与入侵检测
防火墙(firewall) 作为一种访问控制技术,通过严格控制进出网络边界的分组,禁止任何不必要的通信,从而减少潜在入侵的发生,尽可能降低这类安全威胁所带来的安全风险。由于防火瑞不可能阻止所有入仗行为,作为系统防御的第二道防线,入侵检测系统 IDS (Intrusion Detection em)通过对进入网络的分组进行深度分析与检测发现疑似入侵行为的网络活动,井进行报警以便进一步采取相应措施。
它是一种位于内部网络与外部网络之间的网络安全系统。是一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。
汽车方面一般直接采用物理隔离。。。。
END
为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
由于篇幅有限,各位直接点击嚯取哦:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
黑客&网络安全如何学习?
今天只要你给我的文章点赞,我自己多年整理的282G 网安学习资料免费共享给你们,网络安全学习传送门,可点击直达获取哦!
由于篇幅有限,各位直接点击嚯取哦:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
1.成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
2.视频教程
很多朋友都不喜欢晦涩的文字,我也为大家准备了282G视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
由于篇幅有限,各位直接点击嚯取哦:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
由于篇幅有限,各位直接点击嚯取哦:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,需要的话也可以拿走。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
由于篇幅有限,各位直接点击嚯取哦:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
更多内容为防止和谐,可以扫描获取哦~
本文转自 https://blog.csdn.net/Javachichi/article/details/141381831?spm=1001.2014.3001.5502,如有侵权,请联系删除。