java数据安全

数据安全

保证数据安全

需要解决三个问题:

机密性、完整性、身份验证(抗抵赖性)

  • 机密性:传输内容非明文,即使数据被外界截获,也不能被他人解释或破解
  • 完整性:传输过程中内容不能够被篡改,若信息被篡改或不完整,接收方能够得知
  • 身份验证(抗抵赖性):接收方能够验证数据的实际发送方,确保数据不是被人“冒名顶替”而伪造的

举例

  • 甲、乙双方军队攻打丙方,丙方比较强大,因此甲乙双方必须使用合理的配合战术,并且一起进攻,才能取胜,而甲乙双方不再一个地方,他们必须秘密通信

  • 当甲方军师研究好配合战术并确定了进攻时间,于是给乙方军师写了封信。现在问题来了,那这封信怎么才能保证安全

  • 信中内容必须以加密的形式传输,只有乙方军师才能看得懂。否则万一这个信件被丙方所截获,那丙方就知道了甲乙双方的战术安排,这就是机密性

  • java数据安全_第1张图片

  • 这个信件若真被丙方截获,丙方若想将计就计把信中内容偷偷修改,再发给乙方,那乙方必须知道这个信中途已被篡改,这就是完整性

    • java数据安全_第2张图片
  • 当乙方军师收到这个信件时,必须确认是甲方军师写的,而不是丙方伪造的信件,这就是身份验证

    • java数据安全_第3张图片

机密性

  • 机密性可通过加密算法保证,加密算法定义了明文、密文之间如何转换,也就是加解密的过程。加密算法分为:对称加密非对称加密

对称加密算法

  • 对称加密指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密秘钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送 或接收的消息解密,所以密钥的保密性对通信性至关重要。常见的对称加密算法主要有DES,AES,3DES、RC2、RC4和RC5等

非对称加密算法

  • 非对称加密算法需要两个密钥:公开密钥(public key)和私有密钥(private key)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密; 如果用私有密钥对数据进行加 密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法
  • 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。常见的非对称加密算法:RSA、DSA、ECC等

完整性

  • 信息完整性可通过提取并对比消息摘要的方式来实现。消息摘要就是根据一定的运算规则对原始数据进行某种形式的信息提取,通过消息摘要后的消息摘要的长度总是固定的,它也叫做数据指纹,因为它可以唯一的标识一段数据。常见的摘要算法有:sha1、sha256、md5、crc32等

  • java数据安全_第4张图片

身份验证

  • 即使我们保证了数据的机密性和完整性,这里面仍然存在一些问题:

    • 接收方若要验证消息完整性,必须得到发送方对消息产生的摘要,若第三方得知摘要算法,那摘要也是可以被伪造的,因此摘要本身也需要被加密
    • 消息发送来源如何确定,怎么确定不是第三方伪造的?
  • 发送方将消息原文使用摘要算法生成摘要,再用私钥对摘要进行加密,生成数字签名,然后将内容附上数字签名一起传输

    • java数据安全_第5张图片
  • 接收方收到消息后,用发送方的公钥对数字签名进行解密(能解密成功就完成了对发送方的身份验证),得到摘要A,然后再对原文使用摘要算法生成摘要B,比对摘要A和B是否相同,相同则说明内容没有被篡改

    • java数据安全_第6张图片

总结

  • 通过加密算法对数据原文的加密、解密,我们能保证数据传输过程中的机密性

  • 通过数字签名机制,我们既可以保证数据完整性,也可以对数据来源进行身份验证

  • 针对非对称加密技术的应用,我们通常使用两种方式:

    • 传输过程中的数据加密,我们使用接收方公钥加密,接收方私钥解密,保证数据在传输过程中是密文
    • 接收方对信息来源的确认,发送方会使用私钥对数据签名,接收方使用发送方公钥进行验签

你可能感兴趣的:(工作总结,1024程序员节,java,开发语言,数据安全)