密码学概述

时间点:

 

公元前400年,希腊人发明了置换密码;

1881年,世界上第一个电话保密专利出现;

二战期间,德国军方启用“恩尼格玛”密码机;

1976年,由于对称加密算法已经不能满足需要,Diffie 和 Hellman发表了一篇叫《密码学新动向》的文章,介绍了公钥加密的概念,由Rivet、Shamir、Adelman提出了RSA算法;

1985年,N.Koblitz和Miller提出将椭圆曲线用于密码算法,根据是有限域上的点群中的离散对数问题ECDLP,它比因子分解更难(指数级)。

ECC产生背景:随着分解大整数方法的进步和完善、计算机速度的提高以及计算机网络的发展,RSA的秘钥需要不断增加长度才能保证数据安全。但是,这导致了RSA加密速度大为降低,对使用RSA的应用带来了很大的负担,需要一种新的算法来替代RSA。

1993年,美国国家标准和技术协会(NIST)提出安全散列算法(SHA);

1995年,又发布了修订版FIPS PUB 180-1,通常称之为SHA-1;

1997年,美国国家标准局公布实施了“美国数据加密标准”(DES);

1997年,利用各国7万台计算机,历时96天破解了DES的秘钥;

1998年,电子边境基金会(EFF)用25万美元制造的专用计算机,用56小时破解了DES的秘钥;

1999年,EFF用22小时15分完成了DES的破解工作;

1999年底,有人把512位的整数分解因子,512位的RSA秘钥被破解;

2000年10月,美国国家标准和技术协会(NIST)宣布选择Rijndael被选中称为将来的AES。注:Rijndael是在1999年由研究员Joan Daemen 和 Vincent Rijmen创建;

2004年,在国际密码学会议上(Crypto'2004),来自山东大学的王小云教授的报告介绍了破译MD5、HAVAL-128、MD4和RIPEMD算法。随后SHA-1也被宣告破解;

2009年底,768位的整数也被成功分解,威胁到了现在流行的1024位秘钥的安全性;

 

使用密码学的目的:

 

  • 保密性:防止用户的标识或数据被读取。
  • 数据完整性:防止数据被更改。
  • 身份验证:确保数据发自特定的一方。

 

密码学分类及介绍

 

对称加密算法

加密、解密采用相同秘钥。

不支持数字签名。

速度快:硬件实现是非对称加密算法的1000倍;

软件实现,是对称加密算法的100倍。

不适合在广域网使用;

对敏感数据进行加密;

大量数据加密

DES(Data Encryption Standard,数据加密标准):速度快,适用于加密大量数据的场合。

3DES(Triple DES):基于DES,对每块数据使用3个不同的秘钥进行三次加密,强度更高。

AES(Advanced Encryption Standard,高级加密标准):当前最常用的加密标准,速度快,强度高。

非对称加密算法

加密、解密秘钥不同,不能相互推导。执行速度较慢。

主要是基于数学难题来实现。

用于公共环境;

对短数据进行加解密;

数字签名

RSA:目前使用较多的非对称算法,支持可变长秘钥。

DSA(Digital  Signature Algorithm,数字签名算法):是一种标准的DSS(Digital Signature Standard,数字签名标准)。

ECC(Elliptic Curves Cryptography,椭圆曲线密码学)。

散列算法

对信息进行提炼,无秘钥,密文长度固定,且比明文信息小。

不能反向推导。

产生信息摘要,验证完整性;

不需要还原明文的信息加密(用户密码等)

MD5(Message Digest Algorithm 5,信息摘要算法):RSA数据安全公司开发的一种单向散列算法。

SHA(Secure Hash Algorithm,安全哈希算法):对任意长度的运算生成一个160位的数值。

 

AES算法原理:

AES算法基于排列和置换运算,使用几种不同的方法来执行排列和置换运算。

排列:对数据重新进行安排。

置换:将一个数据单元替换为另一个。

使用迭代的(循环)、对称秘钥分组(使用128位分组,即16字节)的密码,可以使用128位、192位和256位秘钥。

通过分组密码返回的加密数据的位数与输入数据相同。

 

RSA算法原理:

分解极大整数的难度决定了RSA的可靠性,只要RSA的秘钥足够长,就能保证加密信息的安全。

签名消息:例如甲想签名一个消息,步骤如下

将消息A计算一个散列值B

--》将散列值B用秘钥加密得到B'

--》将消息A+密文B'合并后发出去

--》查看的人用甲的公钥解密B',得到B

--》查看的人将消息A计算散列值,得到C

--》将B与C比较是否相等

 

ECC算法原理:

椭圆曲线上的离散对数问题(ECDLP):给定素数p和椭圆曲线E,对Q=kP,在已知P、Q的情况下求出小于p的正整数k。

可以证明,由k和P计算Q比较容易,而由Q和P计算k则比较困难。

椭圆曲线的密码体制

椭圆曲线中的加法运算--》离散对数中的模乘运算

椭圆曲线中的乘法运算--》离散对数中的模幂运算

 

ECC与RSA比较的优势:

抗攻击性强:相同秘钥长度,抗攻击性强很多倍。

计算量小,处理速度快:ECC总的速度比RSA、DSA要快很多。

存储空间占用小:ECC的秘钥尺寸和系统参数比RSA、DSA都要小很多,对于在IC卡上应用有特别重要的意义。

带宽要求低:对长消息加密时,三者对带宽要求相同;但对短消息加密时ECC带宽要求低很多。

 

SHA-1算法原理

基于MD4的,并且它的设计很大程度上模仿MD4。

每块512位(64个字节)分组,生成160位(20个字节)的输出。

 

SHA-1与MD5比较

SHA-1比MD5长,安全性稍微高一些。

由于MD5的设计,易受密码分析的攻击。

在相同的硬件上,SHA-1的运行速度慢。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】关于医疗术语 CT,MR,DR,CR,DSA 等

医疗术语解释: Digital Radiography (CR, DX) :数字X线摄影 Mammography (MG):乳房X射线照相术 Computed Tomography (CT):计算机断层扫描 Magnetic Resonance (MR):磁共振 Positron Emission Tomography PET-CT …

c语言删除文件remove_Python中的文件和目录操作

对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数。重要的是,这些函数无论是在Unix、Windows还是Macintosh平台上,…

漏洞:Client ReDos From Regex Injection

漏洞描述: 扫描漏洞如下:代码: // In IE6, the hash fragment and search params are incorrect if the // fragment contains ?. getSearch: function() { var match this.location.href.replace(/#.*/, ).match(/\?./); …

【转】mysql 、oracle中char和varchar以及varchar2的区别

mysql char是固定长度,varchar是可变长度的,varchar2是oracle特有的。 char定长存储,速度快,但是存在一定空间的资源浪费,适用于存储字段不是很大、对速度要求高的场合。速度快是因为在物理上是按照定长存储的,这样就…

WinCE Boot方式及 Bootloader架构概述

Bootloader的概念就是一个用于引导的loader,在系统上电的时候最先被运行,然后对硬件平台做最基本的初始化,最后把操作系统加载起来。不同的嵌入式操作系统都有自己的Bootloader,但是本质功能都是一样的。 在WinCE中用的最多的就是…

静物摄影用光技巧_摄影技巧:摄影如何用光?摄影大师总结的10点,非常受用!...

点击上方蓝字关注「摄影技巧入门教程」ID:sheying116找到右上角点击?... 设为星标/置顶 丨摄影技巧丨丨摄影入门丨丨摄影教程丨丨摄影图片丨摄影技巧:光线的运用在摄影中至关重要,但很多摄影新手却不知道该如何用光,今天我们就来…

Python如何创建相同值的数组/列表

题目要求 现在有这样的一个需求:创建一个数组或列表,列表中的所有值是相同的。 解决方法 找到两种解决方法,第一种是使用Python的基础语法,第二种是借助numpy包提供的函数实现。分别为大家进行介绍。 方法一:使用P…

【转】肺小结节就诊指南:4种CT的区别及如何选择?

又到医院体检的季节,胸外科医师又要忙着给本院同事看片子了。目前体检查出的早期肺癌越来越多,主要归功于CT检查的普及,相较于X-ray胸片,CT对肺内小结节,特别是小于1cm的结节诊断率更高。因此,要提高早期肺…

CTL_CODE说明

我们在说DeviceIoControl函数时其第二个参数dwIoControlCode就是由CTL_CODE宏定义的,下边我们可以了解一下CTL_CODE的内容。CTL_CODE:用于创建一个唯一的32位系统I/O控制代码,这个控制代码包括4部分组成:DeviceType(设…

修改Linux主机名和IP

问题描述 又到了例行的系统安全测试时间,公司部署的一套系统需要做安全测试了,首先要做主机渗透,显然不可能在正式环境直接测,于是就把几台服务器做了个镜像,作为测试环境。 现在问题是,测试环境的ip要修…

可以获得索引值码_搜索引擎优化最适合什么样子的工作?

有些人一直在学习搜索引擎优化,并一直想学习搜索引擎优化。这里是一个关于搜索引擎优化职位的简要介绍。1、 搜索引擎优化的位置是什么?随着电子商务产业的发展,搜索引擎优化的地位越来越重要。它主要负责优化网页的自然排名,这与…

【转】医学图像之DICOM格式解析

最近导师给安排了新任务,由于刚进入实验室,对于医学图像这一块还一知半解,所以就想分享一下有关医学常见影像的学习资料(尤其是dicom后缀的图像文件),欢迎大家一起交流。 目录 1.医学影像学的介绍 2.DICOM信息的简介 3.DICOM内…

DeviceIoControl的使用说明

应用程序和驱动程序的通信过程是:应用程序使用CreateFile函数打开设备,然后用DeviceIoControl与驱动程序进行通信,包括读和写两种操作。还可以用ReadFile读数据用WriteFile写数据。操作完毕时用CloseHandle关闭设备。我们比较常用的就是用Dev…

多元有序logistic回归分析_一文详述:观察性研究中的logistic回归分析思路

本文内容来自《中华流行病学杂志》2019年第40卷第8期,作者为冯国双教授,原题目为《观察性研究中的logistic回归分析思路》。将这篇文章分享给医咖会的伙伴们,希望大家能从领域大咖的见解中有所收获,指导医学研究之路。&#xff08…

CTL_CODE定义中Method的说明

我在上一篇中说明CTL_CODE的时候,其中CTL_CODE定义中有一个Method域,该域的功能意义是定义用于与在驱动程序中获取应用程序数据缓冲区的地址方式。如果你看了我前边的文章,你可以看到在DeviceIoControl的使用说明中对DeviceIoControl参数进行…

【转】禁用Chrome和Firefox中自动播放的动画GIF

动画GIF已经腐臭,并且在浏览时自动播放时可能会非常烦人。以下是如何阻止他们在Chrome和Firefox中自动播放。 禁用动画GIF Firefox 在地址栏中输入: about:config,然后按Enter。如果“这可能会使您的保修信息失效,请点击&#…

Python:Sklearn概述

文章来源:https://blog.csdn.net/algorithmPro/article/details/103045824 Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面的 API 的设计非常好,所有对象的接口简单…

裤子尺码对照表eur40_欧洲40的尺码具体部位多少

展开全部根据服装bai尺码标准:欧码的du40码等于中zhi国尺码175/96A。172/96A,代表身高dao173-177cm,胸围94-98cm,腰内围76-80cm,A表示A型标准体型。容在国家标准GB/T1335中,女装上衣S号(小号)的号型是155/8…

wince下Gpio 驱动程序

【转】wince下Gpio 驱动程序 在WINCE下能够直接访问的都是虚拟地址,不能直接访问GPIO端口,因此我们首先需要将GPIO口的物理地址映射到虚拟地址上来。 分别使用VirtualAlloc和VirtualCopy这两个函数来完成映射! 这两个函数的原型: …

【转】CT层厚、层间距、层间隔的概念是什么,MRI的层厚、层间距、曾间隔是什么

CT层厚指扫描层的厚度。CT层间距指两个扫描层面中心之间的距离。CT层间隔指两层之间的距离。 做CT打比方就是把胡萝卜切成片,观察每片的结构。 那胡萝卜需要切多厚呢?这个葫芦卜片的厚度就是这个扫描层厚。当然切得越薄看得越细,但人体承受的…