- 浏览: 262700 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (88)
- JAVA / base (26)
- JAVA / web (12)
- JAVA / Lib-tools (5)
- SERVER / tomcat (4)
- DB / mysql (4)
- DB / mongodb (2)
- DB / memcached (2)
- DB / redis (2)
- WEB / Front-end (3)
- WEB / security (4)
- WEB / css (2)
- WEB / js (4)
- OS / linux (3)
- IT / Architecture (4)
- IT / other (2)
- Android (9)
- Go (1)
- Other (1)
- OS / Mac (2)
最新评论
-
Zero2Max:
哈哈,马士兵老师也发现了。
java实现接口的bug -
xly1981:
能像CSRF攻击一样带个图就更棒了
XSS跨站攻击 -
xmong:
df274119386 写道在javascript中看到下面的 ...
CSRF攻击与防御策略 -
df274119386:
在javascript中看到下面的语句 e.value = t ...
CSRF攻击与防御策略 -
xmong:
yzxqml 写道xmong 写道yzxqml 写道tomca ...
Tomcat集群
安全加密
目录
1 加密安全 1
1.1 应用的安全 1
1.2 密码学的分类 1
1.2.1 对称加密 1
1.2.2 非对称加密 2
1.2.3 单向加密 2
2 JAVA对安全支持 3
1 加密安全
1.1 应用的安全
“拿什么来保护你,我的应用?”这是几乎每一个应用系统都必须关注的问题。
答案是“给应用加锁!”。
锁如何加才够安全:
(1)访问控制:对用户上锁,如RBAC(Role Basic Access Control)基于用户角色的访问,数字签名等。
(2)数据加密:对数据上锁,如对称加密的数据存储,散列函数验证数据完整性等。
1.2 密码学的分类
为了应用的安全我们需要给应用加锁,加锁离不开密码学。
密码学在加密算法上大体可分为单向加密算法,对称加密算法和非对称加密算法三大类。MD5,SHA算法是单向加密算法的代表,单向加密算法是数据完整性验证的常用算法。DES算法是典型的对称加密算法的代表,对称加密算法是数据存储加密的常用算法。RSA算法是典型非对称加密算法,非对称加密算法是数据传输的常用算法,对称加密算法也可以用做数据传输加密,但非对称加密在秘钥管理方面更有优势。相对对称加密算法而言,非对称加密算法在安全级别上等级更高,但非对称加密算法在时间效率上远不如对称加密算法。
1.2.1 对称加密
对称密码算法(Symmetric Cipher):也称单钥密码算法或私钥密码算法。常见的如DES,AES算法。
对称密码体质要求加密与解密使用同一个共享秘钥,解密是加密的逆运算。
对称密码有两种:一种是对明文(或字节)进行运算,称为流密码,也称为序列密码;另一种是把明文信息划分成不同组(或块)机构,分别对每个组(或块)进行加密和解密,称为组密码。
(1) 流密码:流密码是军事,外交等机构部门中应用最为广泛的对称密码体重,同时也是手机应用平台最常用的加密手段。流密码是逐位加密和解密,加密和和解密可以是简单的运算,如模n运算。
流密码分为同步流密码和自同步流密码:
同步流密码:信息发送方和接收方在传递信息时,同步进行加密和解密操作,明文和密文一一对应,密文的内容如果在传输过程中被篡改,删除或插入,可导致同步失败,以致密文解密失败,必须通过重新同步来实现解密和恢复密文。在密文的传输过程中,如果一个密文位发生变化,那么该位的变化之影响该位的恢复,对后续密文位不影响,这是同步流密码的一个重要特点。
自同步流密码:与同步流密码相比,自同步流密码是一种有记忆变换的密码。每个秘钥与产生固定数量的位数有关,秘钥由生成的密文决定。在密文的传输过程中,如果一个密文位发生变换,那么该位的变化会影响到后续有限位(如n位)的密文位的正确解密。所以,自同步流密码有错误传递的现象。但是,在接收n位正确密文符后,密码自身会实现重新同步。基于着一特点,如果主动攻击方队密文做了修改,接收方仍然不能检测密文的完整性。与同步流密码相比,自同步流的密码分析更加困难,安全性更高。因此,自同步流密码具有自同步性,错误传递有限性,主动攻击性及明文统计扩散性四种特性。
目前使用较多流密码是自同步流密码,流密码的常用算法有RC4和SEAL等。
(2) 组密码:分组密码多应用于网络加密,是对称密码体制中发展最为完善的密码体制。分组密码是对固定长度的一组明文进行加密,这一固定长度称为分组长度。分组长度是分组密码的一个参数,它与分组算法的安全性成正比,其取值范围取决于应用环境。分组长度越长,密码分析越困难,安全性越高,分组长度越短,则越便于操作和运算,实用性越好。一般分组长度设置为56位,但随着密码学的发展,分组长度只有56位已经不能确保算法的安全性,目前分组密码多选择128位。
分组密码的加密过程是对一个分组长度n位的明文进行加密操作,相应产生一个n位密文分组,由此可见,不同的n位明文分组共有2的n次方个。分组加密算法有DES,AES等。
1.2.2 非对称加密
非对称密码算法(Asymmetric Cipher):也称双钥密码算法或公秘钥密码算法。常见的如RSA算法。
非对称密码体质的加密秘钥和解密秘钥不相同,分为两个秘钥,一个公开,一个保密,公开的秘钥称为公钥,保密的秘钥称为私钥。非对称密码体质使得发送者和接收者无秘钥传输的保密通信成为可能。一份消息的传递需要公钥和私钥共同参与,使用公要加密则需要私钥解密,反之私钥加密则需要公钥解密。
数字签名:在应用的安全中我们提到“对用户加锁”实现控制访问,这种加锁我们也可以通过数字签名来确保用户身份和数据认证。它是非对称密码的一种应用。常用的数字签名算法:DSA算法。
1.2.3 单向加密
单项加密算法有大名鼎鼎的MD5算法,散列函等。
散列函数也叫哈希函数,消息摘要。散列函数的主要作用不是完成数据加密与解密的工作,它是验证数据完整性的重要技术。通过散列函数可以为数据创建数字指纹(散列值:通常是一个短的随机字母和数字组成的字符串)。信息收发双方通信前已经协商了具体的散列算法,并且该算法是公开的。如果消息在传递的过程中被篡改,则该消息不能与已获得的数字指纹相匹配。常用的散列算法有:MD消息摘要算法,SHA安全散列算法,MAC消息认证算法。
2 JAVA对安全支持
Java在安全方面支持分为四个部分:
(1) JCA(Java Cryptography Architecture):提供了java基本加密框架,如证书,数字签名,消息摘要和秘钥对产生器等。JCA的实现主要在包java.security包(及其子包)中。
(2) JCE(Java Cryptography Extension):Java加密扩展包,JCE在JCA的基础上作了扩展,提供了各种加密算法,如消息摘要和秘钥管理功能,DES算法,AES算法,RSA算法,DSA算法等,JCE的实现主要在javax.crypto包(及其子包)中。
(3) JSSE(Java Secure Sockets Extension):java安全套接字扩展包,JSSE提供了基于SSL(Secure Sockets Layer,安全套接字层)的加密功能。保证了数据通信的安全。JSSE的实现主要在javax.net.ssl包中。
(4) JAAS(Java Authentication and Authentication service):java鉴别u安全服务,JAAS提供了java平台上进行用户身份鉴别的功能,如何提供一个符合标准安全机制的登录模块,通过配置的方式集成到各个系统中,这是由JAAS来提供的。
JCA和JCE是java平台提供的用于安全和加密服务的两组API,它们并不执行任何算法,只是连接应用和实际算法实现程序的一组接口。
加密算法涉及到很多重要领域,如国防军事等,所以根据美国出口限制规定,JCA可出口而JCE对部分国家限制出口,对于JCA加密Sun公司默认提供了一些包实现,对于JCE安全实现需要一些软件厂商提供JCE产品,软件开发商可以根据JCE接口(也叫安全提供者接口)将各种算法实现后,打包成一个provider(安全提供者)动态地加载到java运行环境中。如BouncyCastle JCE就是其中的一个安全提供者。
Java安全体系结构通过扩展的方式,加入更多的算法实现及相应的安全机制。
如进入java运行环境jre7\lib\security目录下,其中java.security文件中提供了安全提供者的配置信息:
上述这些提供者均是provider(java.security.Provider)的子类。其中sun.security.provider.Sun是基本安全提供者,sun.security.rsa.SunRsaSign是实现RSA算法的提供者。
安全提供者实现了两个概念的抽象:引擎和算法,引擎可理解为操作,如加密,解密等,算法则是定义操作如何执行,如一个算法可以理解为一个引擎的具体实现。
java.security包中Provider类和Security类共同构成了安全提供者的概念。
运行代码:
输出结果:
****************************
未完待续
目录
1 加密安全 1
1.1 应用的安全 1
1.2 密码学的分类 1
1.2.1 对称加密 1
1.2.2 非对称加密 2
1.2.3 单向加密 2
2 JAVA对安全支持 3
1 加密安全
1.1 应用的安全
“拿什么来保护你,我的应用?”这是几乎每一个应用系统都必须关注的问题。
答案是“给应用加锁!”。
锁如何加才够安全:
(1)访问控制:对用户上锁,如RBAC(Role Basic Access Control)基于用户角色的访问,数字签名等。
(2)数据加密:对数据上锁,如对称加密的数据存储,散列函数验证数据完整性等。
1.2 密码学的分类
为了应用的安全我们需要给应用加锁,加锁离不开密码学。
密码学在加密算法上大体可分为单向加密算法,对称加密算法和非对称加密算法三大类。MD5,SHA算法是单向加密算法的代表,单向加密算法是数据完整性验证的常用算法。DES算法是典型的对称加密算法的代表,对称加密算法是数据存储加密的常用算法。RSA算法是典型非对称加密算法,非对称加密算法是数据传输的常用算法,对称加密算法也可以用做数据传输加密,但非对称加密在秘钥管理方面更有优势。相对对称加密算法而言,非对称加密算法在安全级别上等级更高,但非对称加密算法在时间效率上远不如对称加密算法。
1.2.1 对称加密
对称密码算法(Symmetric Cipher):也称单钥密码算法或私钥密码算法。常见的如DES,AES算法。
对称密码体质要求加密与解密使用同一个共享秘钥,解密是加密的逆运算。
对称密码有两种:一种是对明文(或字节)进行运算,称为流密码,也称为序列密码;另一种是把明文信息划分成不同组(或块)机构,分别对每个组(或块)进行加密和解密,称为组密码。
(1) 流密码:流密码是军事,外交等机构部门中应用最为广泛的对称密码体重,同时也是手机应用平台最常用的加密手段。流密码是逐位加密和解密,加密和和解密可以是简单的运算,如模n运算。
流密码分为同步流密码和自同步流密码:
同步流密码:信息发送方和接收方在传递信息时,同步进行加密和解密操作,明文和密文一一对应,密文的内容如果在传输过程中被篡改,删除或插入,可导致同步失败,以致密文解密失败,必须通过重新同步来实现解密和恢复密文。在密文的传输过程中,如果一个密文位发生变化,那么该位的变化之影响该位的恢复,对后续密文位不影响,这是同步流密码的一个重要特点。
自同步流密码:与同步流密码相比,自同步流密码是一种有记忆变换的密码。每个秘钥与产生固定数量的位数有关,秘钥由生成的密文决定。在密文的传输过程中,如果一个密文位发生变换,那么该位的变化会影响到后续有限位(如n位)的密文位的正确解密。所以,自同步流密码有错误传递的现象。但是,在接收n位正确密文符后,密码自身会实现重新同步。基于着一特点,如果主动攻击方队密文做了修改,接收方仍然不能检测密文的完整性。与同步流密码相比,自同步流的密码分析更加困难,安全性更高。因此,自同步流密码具有自同步性,错误传递有限性,主动攻击性及明文统计扩散性四种特性。
目前使用较多流密码是自同步流密码,流密码的常用算法有RC4和SEAL等。
(2) 组密码:分组密码多应用于网络加密,是对称密码体制中发展最为完善的密码体制。分组密码是对固定长度的一组明文进行加密,这一固定长度称为分组长度。分组长度是分组密码的一个参数,它与分组算法的安全性成正比,其取值范围取决于应用环境。分组长度越长,密码分析越困难,安全性越高,分组长度越短,则越便于操作和运算,实用性越好。一般分组长度设置为56位,但随着密码学的发展,分组长度只有56位已经不能确保算法的安全性,目前分组密码多选择128位。
分组密码的加密过程是对一个分组长度n位的明文进行加密操作,相应产生一个n位密文分组,由此可见,不同的n位明文分组共有2的n次方个。分组加密算法有DES,AES等。
1.2.2 非对称加密
非对称密码算法(Asymmetric Cipher):也称双钥密码算法或公秘钥密码算法。常见的如RSA算法。
非对称密码体质的加密秘钥和解密秘钥不相同,分为两个秘钥,一个公开,一个保密,公开的秘钥称为公钥,保密的秘钥称为私钥。非对称密码体质使得发送者和接收者无秘钥传输的保密通信成为可能。一份消息的传递需要公钥和私钥共同参与,使用公要加密则需要私钥解密,反之私钥加密则需要公钥解密。
数字签名:在应用的安全中我们提到“对用户加锁”实现控制访问,这种加锁我们也可以通过数字签名来确保用户身份和数据认证。它是非对称密码的一种应用。常用的数字签名算法:DSA算法。
1.2.3 单向加密
单项加密算法有大名鼎鼎的MD5算法,散列函等。
散列函数也叫哈希函数,消息摘要。散列函数的主要作用不是完成数据加密与解密的工作,它是验证数据完整性的重要技术。通过散列函数可以为数据创建数字指纹(散列值:通常是一个短的随机字母和数字组成的字符串)。信息收发双方通信前已经协商了具体的散列算法,并且该算法是公开的。如果消息在传递的过程中被篡改,则该消息不能与已获得的数字指纹相匹配。常用的散列算法有:MD消息摘要算法,SHA安全散列算法,MAC消息认证算法。
2 JAVA对安全支持
Java在安全方面支持分为四个部分:
(1) JCA(Java Cryptography Architecture):提供了java基本加密框架,如证书,数字签名,消息摘要和秘钥对产生器等。JCA的实现主要在包java.security包(及其子包)中。
(2) JCE(Java Cryptography Extension):Java加密扩展包,JCE在JCA的基础上作了扩展,提供了各种加密算法,如消息摘要和秘钥管理功能,DES算法,AES算法,RSA算法,DSA算法等,JCE的实现主要在javax.crypto包(及其子包)中。
(3) JSSE(Java Secure Sockets Extension):java安全套接字扩展包,JSSE提供了基于SSL(Secure Sockets Layer,安全套接字层)的加密功能。保证了数据通信的安全。JSSE的实现主要在javax.net.ssl包中。
(4) JAAS(Java Authentication and Authentication service):java鉴别u安全服务,JAAS提供了java平台上进行用户身份鉴别的功能,如何提供一个符合标准安全机制的登录模块,通过配置的方式集成到各个系统中,这是由JAAS来提供的。
JCA和JCE是java平台提供的用于安全和加密服务的两组API,它们并不执行任何算法,只是连接应用和实际算法实现程序的一组接口。
加密算法涉及到很多重要领域,如国防军事等,所以根据美国出口限制规定,JCA可出口而JCE对部分国家限制出口,对于JCA加密Sun公司默认提供了一些包实现,对于JCE安全实现需要一些软件厂商提供JCE产品,软件开发商可以根据JCE接口(也叫安全提供者接口)将各种算法实现后,打包成一个provider(安全提供者)动态地加载到java运行环境中。如BouncyCastle JCE就是其中的一个安全提供者。
Java安全体系结构通过扩展的方式,加入更多的算法实现及相应的安全机制。
如进入java运行环境jre7\lib\security目录下,其中java.security文件中提供了安全提供者的配置信息:
security.provider.1=sun.security.provider.Sun security.provider.2=sun.security.rsa.SunRsaSign security.provider.3=sun.security.ec.SunEC security.provider.4=com.sun.net.ssl.internal.ssl.Provider security.provider.5=com.sun.crypto.provider.SunJCE security.provider.6=sun.security.jgss.SunProvider security.provider.7=com.sun.security.sasl.Provider security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI security.provider.9=sun.security.smartcardio.SunPCSC security.provider.10=sun.security.mscapi.SunMSCAPI
上述这些提供者均是provider(java.security.Provider)的子类。其中sun.security.provider.Sun是基本安全提供者,sun.security.rsa.SunRsaSign是实现RSA算法的提供者。
安全提供者实现了两个概念的抽象:引擎和算法,引擎可理解为操作,如加密,解密等,算法则是定义操作如何执行,如一个算法可以理解为一个引擎的具体实现。
java.security包中Provider类和Security类共同构成了安全提供者的概念。
运行代码:
Provider[] providers = Security.getProviders(); for (Provider provider : providers) { System.out.println(provider.getName()); }
输出结果:
SUN SunRsaSign SunEC SunJSSE SunJCE SunJGSS SunSASL XMLDSig SunPCSC SunMSCAPI
****************************
未完待续
发表评论
-
Java validation(java验证器实现)
2014-03-18 11:45 3691Java validation 1. java验证器 在 ... -
Memo class备注类信息
2014-03-18 09:52 882Memo Class 1. 什么是Memo Class Mem ... -
java annotation注解
2014-01-24 18:01 9451. Annotation的声明方式 An ... -
Java RMI
2013-03-28 15:12 1711Java Rmi 目录 1 JAVA RMI 1 ... -
java内部类
2013-03-19 16:25 1040Java内部类 目录 1 JAVA ... -
java多线程设计模式之订单模式
2013-03-11 14:00 2683Java多线程实现订单模式: 客户端线程向服务端发起请求后, ... -
java多线程设计模式之线程池处理请求
2013-03-08 17:50 1818Java实现线程池处理请求: 客户端线程发出请求,请求存入请 ... -
java多线程设计模式之异步处理请求
2013-03-08 12:36 4524Java实现多线程异步处理请求: Java实现多线程异步处理 ... -
java多线程设计模式之读写文件模式
2013-03-07 17:56 1585Java实现多线程读写数据 ... -
java多线程设计模式之生产者与消费者
2013-03-07 11:34 1053Java实现多线程生产者与消费者: 生产者线程负责生产产品 ... -
java多线程设计模式之文件保存
2013-03-06 16:16 1605Java实现多线程保存文件:两线程去保存文件,一个保存线程定时 ... -
java多线程设计模式之队列通信
2013-03-06 13:51 2489Java实现多线程处理队列请求通信:客户端线程向请求队列中不断 ... -
Java读linux系统文件文件名乱码
2012-12-06 17:01 91581,问题描述 web应用想通过Java读取linux系统文件显 ... -
图着色问题
2012-11-27 13:05 3109图着色问题 目录 1 图 ... -
JDK6新特性
2012-07-03 23:24 2897JDK6的新特性 JDK6的新特性之一_Desktop类 ... -
JDK7新特性
2012-07-03 15:39 3505JDK7新特性 一 JDK7新特性简介 准备 JDK7下载 ... -
JDK5新特性
2012-07-03 10:23 73JDK5.0新特性 1.自动封箱和自动解封(简单类型和封装类 ... -
cookie使用安全
2012-06-22 18:36 4037Cookie使用安全 目录 1 COOKIE简介 1 1 ... -
XSS跨站攻击
2012-06-22 00:03 2858XSS跨站攻击 目录 1 XSS ... -
CSRF攻击与防御策略
2012-06-19 22:13 5510CSRF攻击 目录 1 CSRF攻击简介 1 1.1 什 ...
相关推荐
1基于蓝牙的项目开发--蓝牙温度监测器.docx
AppDynamics:性能瓶颈识别与优化
xtrabackup银河麒麟v10rpm安装包
2024年全球产品经理大会(脱敏)PPT合集,共34份。 1、AI 原生产品设计的 7 个反共识 2、AI 时代的策略产品与内容社区推荐实践 3、AI时代的用户界面设计 4、AI智能陪练:大模型赋能销售成长 5、AI浪潮中的应用主义者 6、AI驱动下的B端产品的思考与创新 7、AI驱动业务增长的探索与实践 8、Al Native 生产力工具的发展、价值与商业落地 9、B端产品设计避坑指南 10、GenAl驱动的xGen电商AI平台产品实践与思考 11、Kwaipilot 在快手的落地实践 12、OPPO AI的探索新交互到新生态 13、RPA + AI打造大模型驱动的领先数字员工 14、产品AI化重塑的思考与实践 15、产品分析:通过关键指标助力团队与企业成功 16、从RPA到Al Agent,高价值、可落地的智能助手 17、从流量运营到AI驱动的机器增长 18、做穿越时代的产品 19、创造好工具,创造世界一流产品力 20、医疗健康场景的大模型产品探索 21、即时零售柔性供应链体系建设与AIGC在零售数字化的探索 22、向量数据库的出海实践与未来展望 23、大模型在B端落地思考实践
基于物联网技术的停车场智能管理系统设计用户有单独APP
Adobe XD:AdobeXD高级技巧与最佳实践.docx
ARKit(iOS的增强现实):ARKit的多人AR场景实现
1python自动化脚本.docx
河北省、市、区县及街镇可编辑SVG图
金融工程之量化交易算法:均值回归:时间序列分析与预测.docx
技术资料分享ADV7123非常好的技术资料.zip
Sawmill_cn.ppt
使用LabVIEW输入数字n,然后计算n的阶乘
1无人值守灌溉系统--stm.docx
金融工程之量化交易算法:动量交易:金融数据获取与处理.docx
基于SSM的毕业设计源码
头像图片调试使用用来调试
GITS_sawmill8.5.8.1_x64_linux-ubuntu11.tar.gz
Newspaper 是一个专为新闻、杂志和内容丰富网站设计的 WordPress 主题。它非常适合博客、在线出版和内容展示,具备多种强大功能。以下是 Newspaper 的主要特点: 响应式设计:确保网站在各种设备上(手机、平板、桌面)都能良好显示,优化用户体验。 丰富的预建模板:提供多个专业设计的预建布局和页面模板,用户可以快速导入并根据需求进行修改。 强大的页面构建器:内置的 TagDiv Composer 允许用户通过拖放功能轻松创建和自定义页面,无需编写代码。 SEO 优化:主题经过优化,有助于提升网站在搜索引擎中的排名,增加流量。 多种内容展示选项:提供多种文章格式和布局选项,如网格、列表、视频和画廊,方便展示不同类型的内容。 社交媒体集成:支持社交媒体分享功能,帮助用户轻松与观众互动并提高网站的曝光度。 实时自定义:支持实时预览功能,用户可以在更改设置时即时查看效果。 持续更新和支持:定期更新主题,确保用户获得最新功能和安全性,同时提供专业的技术支持。
国内市场:功能化脂质市场现状研究分析与发展前景预测报告(2024版).docx