「信息安全-密码与隐藏技术」凯撒密码与仿射密码 (CPP 实现)
「信息安全-密码与隐藏技术」RSA加密算法的实现(CPP 实现)
教材57页习题4、5、6、7(重点)
DES是分组加密算法,以64位(二进制)为一组对称数据加密,64位明文输入,64位密文输出。密钥长度为56位,但密钥通常表示为64位,并分为8组,每组第八位作为奇偶校验位。利用密钥,通过传统的换位、替换和异或等变换,实现二进制明文的加密与解密。
S盒代替是 DES 算法的核心部分,整个变换过程是非线性的。
DES解密:和加密使用相同的算法,加密密钥和解密密钥。
区别在于:顺序是反过来的,且加密是密钥循环左移,解密时密钥循环右移。
RSA算法是一种典型的公开密钥体制算法。
两个优势:
为实现数字签名和数字认证提供了手段大大减轻了密钥分配与管理的工作量但速度比DES算法慢得多。
「信息安全-密码与隐藏技术」RSA加密算法的实现(CPP 实现)
设Alice要发送一个经过数字签名的明文 M 给用户Bob,签名的过程如下:
Alice用信息摘要函数Hash从 M 抽取信息摘要 M’Alice用自己的私人密钥对 M’ 加密,得到签名文本 S,即Alice在 M 上签了名。Alice用Bob的公开密钥对 S 加密得打 S’Alice将 S’ 和 M 发送给BobBob收到 S’ 和 M 后,用自己的私人密钥对 S’ 解密,还原出 SBob用Alice的公开密钥对 S 解密,还原出信息摘要 M’Bob用相同的信息摘要函数从 M 抽取信息摘要 M’’Bob比较 M’ 和 M’’ ,当 M’和 M’’ 相同时,可以断定Alice在 M 上签名补充:数字签名的特性?
可信的无法伪造的不可复制的不可篡改的不可抵赖的h = h(M)
Hash函数能从任意长度的 M 中产生固定长度的散列值 h已知M时,利用 h(M)可以很容易求出 h已知M时,想要通过一个 h(M)计算出不同的 h 是很困难的已知M时,想要找出另一信息 M’ ,使 h(M)=h(M’)是很困难的(抗碰撞性)已知h时,想要从 h(M) 中计算出 M 是很困难的(单向性)完整性:保护计算机系统内软件和数据不被偶然或人为蓄意破坏、篡改、伪造等,只有经过授权的人才能对信息进行修改(可靠性精确性的度量);
可用性:用户授权下,无论什么时候,只要用户需要,信息必须是可用且可访问的;
保密性:信息必须按照拥有者的要求保持一定的保密性,只有得到拥有者的许可其他人才能获得该信息。(防止失窃)
稳定性(鲁棒性):水印可以抵抗应用过程中的各种破坏。比如对信息滤波处理后仍可以提取出水印信息
水印容量:在数字信息中加入的水印数量。水印容量跟鲁棒性是相互矛盾的
安全性:加入水印和监测水印的方法对没有授权的第三方是绝对保密的,且无法轻易破解
自恢复性:数字水印在原始数据经过较大破坏或变换后仍可从原数据中恢复数字水印
不可见性:数字信息在加入水印后不会改变其感知效果,即看不到数字水印的存在,这是数字水印最基本的特点
在对称加密体制中,如果有 N 个成员,就需要 N(N-1)/2 个密钥,这巨大的密钥量给密钥的分配和管理带来了困难
知道了加密过程就很容易推导出解密过程,那么知道了加密密钥就知道了解密密钥
不是建立在严格的数学问题上的,而是基于多种“规则”和可“选择”的假设;
在传输信息时,双方开始通信之前必须提前约定使用同一密钥,所以必须建立受保护的通道来传输密钥
加密速度快,唯一的优点,通常用来加密大量的明文
在对称加密体制中,每个成员都有一对密钥(pk,sk)。如果有 N 个成员,就需要 2N 个密钥。分配管理相对容易一些
知到加密过程不能推导出解密过程,或者要花费很长的时间和代价
很容易用数学语言去描述,算法的安全性是建立在已知数学问题求解的问难的假设基础上的
需要一个有效的计算方法求解一对密钥,确保不能从pk、sk中互相推导
无需在通信双方传递密钥,使数字签名成为可能,有更广阔的应用范围
比对称加密算法慢得多,一般只用来加密安全需求高、信息量不大的信息
数字证书 是由权威机构CA发行的一种权威性的电子文档,是网络环境中的一种身份证,用于证明某一用户的身份以及公开密钥的合法性。
X.509数字证书内容
版本号:指出该证书使用了哪种版本的X.509标准序列号:CA会给每一个证书分配唯一的证书序列号签名算法标识符:用来指定CA签发证书时所使用的公开密钥算法和Hash算法认证机构:证书的发行机构名称,命名规则一般采用X.500格式有效期:证书起始时间及终止时间,指明证书在这两个时间段内有效(1) 隐藏攻击源:因特网上的主机均有自己的网络地址,因此攻击者在实施攻击活动时的首要步骤是设法隐藏自己所在的网络位置,如IP地址和域名,这样使调查者难以发现真正的攻击来源。
手段:伪造IP地址、假冒用户账号
(2) 信息搜集:攻击者搜集目标的信息,并进行综合整理分析后,能够初步了解一个机构的安全态势,并能够据此拟定一个攻击方案。
手段:确定攻击目标、踩点、扫描、嗅探
(3) 掌握系统控制权:一般账户对目标系统只有有限的访问权限,要达到某些攻击目的,攻击者只有得到系统或管理员权限,才能控制目标主机实施进一步的攻击。
手段:系统口令猜测、种植木马、会话劫持
(4) 实施攻击:不同的攻击者有不同的攻击目的,但主要是破坏机密性、完整性和可用性等。
手段:下载、修改或删除敏感信息,攻击其他被信任的主机和网络,瘫痪网络或服务
(5) 安装后门:一次成功的入侵通常要耗费攻击者大量时间和精力,所以精于计算机的攻击者在推出系统前会在系统中安装后门,以保持对已入侵主机的长期控制。
手段:放宽系统许可权,重新开放不安全的服务,修改系统的配置(启动文件、网络服 务配置文件),替换系统本身的共享库文件,安装各种木马,修改系统的源代码。
(6) 隐藏攻击痕迹:一次成功入侵后,通常攻击者的活动在被攻击主机上的一些日志文档中会有记载,这样很容易被管理员发现。为此,攻击者往往在入侵完毕后清除登录日志等攻击痕迹。
手段:清除或篡改日志文件,改变系统时间造成日志文件数据紊乱以迷惑管理员,利用 代理跳板隐藏真实的攻击者和攻击路径。
对每一个病毒程序来说,安装模块、传染模块是必不可少的,而破坏模块可以直接隐含在传染模块中,也可以单独构成一个模块。
(1) 安装模块:病毒程序必须通过自身实现自启动并安装到计算机系统中,不同类型的病毒程序会使用不同的安装方法;
(2) 传染模块:
传染控制部分。病毒一般都有一个控制条件,一旦满足这个条件就开始感染。传染判断部分。每个病毒程序都有一个标记,在传染时将判断这个标记,如果磁盘或者文件已经被传染就不在传染,否则就要传染。传染操作部分。在满足传染条件时进行传染操作。(3) 破坏模块:计算机病毒的最终目的是进行破坏,其破坏的进本手段就是删除文件或数据。破坏模块包括激发控制、破坏操作两个部分。
(1) 用户界面模块:用户界面直接面向用户,主要功能包括提供杀毒软件的基本设置,如病毒库升级设置、多引擎设置等。
(2) 病毒数据库:病毒数据库存放对病毒特征码源文件进行加密和压缩处理后得到特征码目标文件,其文件头包含了病毒特征码的版本、加载日期等信息,其数据体包含了病毒特征码值以及病毒名。
(3) 病毒扫描引擎:
文件解析模块。文件夹检测模块、文件类型检测模块、文件读取模块。病毒扫描模块。主要功能是提取文件的特征码,与病毒库中的病毒特征码进行比较,根据匹配结果进行处理。特征码加载模块。主要负责将病毒特征码目标文件加载到病毒数据库中,并对病毒数据库进行维护。(4) 文件实时监控模块:主要是针对网络、移动设备下载的本地计算机的病毒,或进入系统后释放出的病毒文件。不管病毒文件以什么方式进入系统,文件实时监控模块都能检测到文件的变化并给出通知。如果发现文件变化,则将改文件提交给病毒文件扫描模块,扫描文件是否有病毒并做相应处理。
(5) 进程实时监控模块:主要用来监控系统中的所有任务和进程,并且能够通过它们的进程ID直接定位到文件系统的宿主文件上。当发现有新的进程行为异常时,直接对其可执行文件进行扫描,如果发现是病毒,则立刻终止该进程并通知用户。
(1)对于用户:增大口令空间。计算口令空间的公式:S=AM;选用无规律的口令;多个口令;用工具生成口令。 (2)对于网站:登录时间限制;限制登录次数;尽量减少会话透露的信息;增加认证的信息量 (3)使用安全控件保护口令 (4)使用“验证码”实现一次性口令认证 (5)绑定手机的动态口令实现一次性口令认证
(1) 软件发行之前一定要将可执行程序进行加壳。 (2) 要在自己写的软件中嵌入反跟踪的代码。 (3) 增加软件自身的完整性检查。 (4) 不要采用一目了然的名字来命名与软件保护相关的函数和文件。 (5) 当检测到软件破解企图之后,过一段时间后软件停止工作。 (6) 可以通过读取关键的系统文件的修改时间来得到系统时间。 (7) 给软件保护加入一定的随机性。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。 三大特点:
去中心化交易。区块链的本质是一种分散在所有的用户电脑上的计算机账本,每个分散的账本会记录区块链上进行的所有交易活动的信息。所以它不需要一个集中的机构、网站、公司来管理这些信息。信息不可篡改,一旦写入无法改变。如果要修改区块链中的某一个数据,就必须更改以后发生的所有数据记录,计算量无可想象,非常庞大,几乎不可能实现。完全匿名。在区块链的世界里,所有的账户(或“钱包”)都是通过一个密码来访问。在这个世界里,谁也不知道你是谁,你也无法向别人证明你是某个钱包的主人。现实社会中的欺骗手段一旦被黑客延伸应用到攻击网络系统,就发展成为社会工程学攻击。 常见攻击手段:
环境渗透:对特定的环境进行渗透,是为了获得所需的情报或敏感信息经常采用的社会工程学攻击手段之一。引诱:用户上网是经常会碰到中奖、免费赠送等内容的邮件或网页,诱惑用户进入该页面运行下载程序,或要求填写账户和口令一遍“验证”身份,利用人们疏于防范的心理引诱用户,这通常是黑客早已设好的圈套。伪装:目前流行的网络钓鱼事件以及更早的求职信病毒、圣诞贺卡等,都是利用电子邮件和伪造的web站点来进行诈骗活动。说服:说服是对信息安全危害较大的一种社会工程学攻击方法,它要求目标内部人员与攻击者达成某种一致,为攻击提供各种便利条件。恐吓:社会攻击学者常常利用人们对安全、漏洞、病毒、木马、黑客等内容的敏感性,冒充权威机构,使用危言耸听的言论恐吓和欺骗计算机用户,并声称如果不按照他们要求的去做,会造成非常严重的危害或损失。恭维:“高明”的黑客精通心理学、人际关系学、行为学等社会工程学方面的知识与技能,善于利用人类的本能反应、好奇心、盲目信任、贪婪等人性弱点设置陷阱,从而实施欺骗,并控制他人意志为自己服务。反向社会工程学攻击:攻击者通过技术或者非技术的手段给网络或计算机应用制造“问题”,诱使工作人员或者网络管理人员透露或者泄露攻击者需获取的信息。 一百个Chocolate 认证博客专家 博客专家 博客之星 前端开发攻城狮 掘金搜【一百个Chocolate】座右铭:学如逆水行舟,不进则退!公众号:小狮子前端 期待小狮子们的加入~