2022年了你还不了解加解密吗

2022-10-23  本文已影响0人  袋鼠云数栈前端

前言

加密解密是前后端开发经常需要使用到的技术,应用场景包括不限于用户鉴权、数据传输等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的签名加密算法来达到业务目标。所以了解加解密,以及常用的加解密函数库,可以根据不同的业务场景,选择适合当下业务场景的加解密函数库。

安全性威胁

这里借用 workPlus 对于安全性威胁概括,进行说明:

第一,中断

攻击者有意破坏和切断他人在网络上的通信,这是对可用性的攻击。

第二,截获

属于被动攻击,攻击者从网络上窃听他人的通信内容,破坏信息的机密性。

第三,篡改

攻击者故意篡改网络上传送的报文,这是对完整性的攻击。

第四,伪造

攻击者伪造信息在网络传送,这是对真实性的攻击。

file

加密的意义

  1. 数据加密

    a. 敏感数据的加密 :敏感数据进行完整性校验和加密存储, 有效防止敏感数据被窃取,篡改,权限被非法获取;

    b. 金融支付保护:保证支付数据在传输和存储过程中的完整性、保密性和支付身份的认证、支付过程的不可否认性;

    c. 电子票据验伪:保证电子合同、电子发票、电子保单、电子病历在传输、存储过程中的保密性和完整性;

    d. 视频监控安全:保证视频、人脸、车辆、轨迹等隐私信息,以及个人数据在存储过程中的保密性,防止数据泄露;

  2. 信息安全:

    a. 撞库操作:是指收集已经在互联网上泄漏的用户和密码信息, 生成对应的字典表,并尝试批量登录其他网站,然后得到一系列可以登录的用户, 撞库的原因是由于信息泄漏, 而且泄漏的数据没有加密或者加密的方式比较弱,这样可以获得到原来的用户和密码;

加解密的分类

file file

加解密的应用场景

目前业务中使用的是sm2进行加解密

国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。
1:SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
2:SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。
3:SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。
4:SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

const sm2 = require('sm-crypto').sm2; // uic中 
// 控制台中的加密解密应用 
import { SM2 } from 'gm-crypto'; 
// sm2加密 
export function encryptSM(str, key) {     
  const result = SM2.encrypt(str, key, {         
    inputEncoding: 'utf8',         
    outputEncoding: 'hex', // 支持 hex/base64 等格式
});     
  // 04 表示非压缩     
  return '04' + result; 
} 
// sm2解密 
export function decryptSM(str, key) {     
  return SM2.decrypt(str, key, {         
    inputEncoding: 'hex',         
    outputEncoding: 'utf8', // 支持 hex/base64 等格式     
  }); 
} 

思考

  1. 非对称加密中公私钥都可以加密,那么什么时候用公钥加密,什么时候用私钥“加密” ?
  2. 什么是数字签名,数字签名的作用是什么?
  3. 为什么要对数据的摘要进行签名,而不是直接计算原始数据的数字签名?
  4. 什么是数字证书,数字证书解决了什么问题?
  5. 前端进行加密到底有没有用?

前端加密不是决定性的保护措施,但却是一种有意义的低成本安全增强方案。

上一篇 下一篇

猜你喜欢

热点阅读