密码算法、密钥体系---安全行业基础篇1

一、密码算法

密码算法是一种数学和计算方法,用于保护数据的机密性和安全性。不同的密码算法使用不同的数学原理和技术来加密和解密数据。以下是一些常见的密码算法类型:

1. **对称密码算法:** 

         特点:相同的密钥用于加密和解密数据。数据必须是块的整数倍。

        优缺点:优点是速度快,但缺点是密钥管理复杂,因为必须确保密钥的安全传输和存储。

        概念:key加密明文得到密文,key解密密文得到明文。 

        要素:密钥、明文、密文、块(加解密的数据最小单元)。

        用途:数据加密传输,只有拥有key的人才可以获取数据明文。

        种类:   AES(高级加密标准):广泛使用,用于加密敏感数据。块大小16字节
                     DES(数据加密标准)/3DES:早期的对称密码算法,现在不再视为安全。8字节

                     SM4(国密):块大小16字节

2. **非对称密码算法:** 

        特点:有一对密钥,一个用于加密,另一个用于解密

        优缺点:优点是不存在密钥交换问题,密钥管理更容易,但通常比对称算法慢,不适合做大量运算。

        概念:

                加密:发送者使用接收者的公钥加密

                解密:接收者使用自己的私钥解密

                签名:使用自己的私钥签名,一般对摘要值进行签名

                验签:使用签名者的公钥验证已签名的数据,保证数据的真实性。

        要素:密钥对(公钥:可公开。私钥:只有自己知道)。公钥运算则使用私钥还原,私钥运算则使用公钥还原。

        用途:数据加密传输,只有拥有key的人才可以获取数据明文。

        种类:RSA(常用)、ECC(椭圆曲线密码学)、SM2(国密)
 

3. **哈希函数:**

特点:防碰撞,即无法找到输出相同的两个输入。不能反向运算,即不可能由输出计算出输入

概念:一段任意长度的输入数据,经过哈希运算,可以生成一段固定长度的输出数据。输入输出为一一对应,用输出(较短)可以代表输入(任意长度)

要素:输入数据原文,输出摘要值。输入不一样,输出必然不一样。

用途:验证数据完整性、消息摘要、签名验签。

种类:MD5 输出长度16字节,已被攻破不安全。
            SHA1 输出长度20字节,已被攻破不推荐使用。
            SHA256 输出长度32字节,目前安全界的主流。
            SH512 输出长度64字节。
            SM3(国密) 输出长度32字节。

4. **密码协议:**

这些是用于在网络通信中保护数据机密性的特定协议和算法,如TLS/SSL用于加密Web连接。

密码算法的选择取决于特定的用途和安全需求。在设计或选择密码算法时,必须考虑密钥管理、性能、抵抗攻击的能力以及合规性等因素。此外,密码学的发展是一个不断演化的领域,新的算法和技术不断出现,以适应不断变化的威胁和安全挑战。因此,安全性专业人士需要密切关注密码学领域的最新发展。

二、密钥体系

密钥体系是一个关键的概念,用于管理和维护在加密和安全通信中使用的密钥。它是确保数据机密性和安全性的基础。密钥体系包括以下重要组成部分:

1. **密钥生成:** 密钥体系的第一步是生成密钥。密钥可以是对称密钥(用于对称加密算法)或非对称密钥(用于非对称加密算法)。生成密钥的过程应该是随机的和安全的,以防止恶意攻击者猜测密钥。

2. **密钥分发:** 生成密钥后,需要将密钥安全地传输到通信的各方。这通常涉及使用安全协议来确保密钥在传输过程中不被拦截或篡改。密钥分发是一个关键的挑战,因为它直接影响到系统的安全性。

3. **密钥存储:** 密钥必须在使用前安全地存储,以防止未经授权的访问。对于对称密钥,存储是特别重要的,因为任何能够访问密钥的人都可以解密数据。对于非对称密钥,私钥的安全性至关重要,因为它用于解密数据或进行数字签名。

4. **密钥更新:** 密钥不应永久不变,因为长时间使用相同的密钥会增加系统受到攻击的风险。因此,密钥体系应包括定期更换密钥的策略。

5. **密钥销毁:** 当不再需要使用某个密钥时,必须确保它被安全地销毁,以防止未经授权的访问。密钥销毁是数据安全的重要方面。

6. **密钥管理:** 密钥管理包括监控密钥的使用情况,跟踪密钥的生命周期,记录密钥的分发和销毁,以及响应与密钥相关的事件,如丢失或泄露。

7. **密钥策略和访问控制:** 密钥体系应该定义哪些实体有权访问哪些密钥以及如何使用这些密钥。访问控制和密钥策略可以确保只有授权的用户或系统可以访问密钥。

密钥体系的复杂性取决于应用的安全需求和使用的加密算法。在实际应用中,有时会使用密钥管理系统(Key Management System,KMS)来自动化和简化密钥的生成、分发、存储和管理。密钥管理是保护信息安全的重要组成部分,因此需要特别关注以确保数据的机密性和完整性。

 

在密钥体系中,Fixed Key、MK/SK和DUKPT是常见的术语,具有以下含义:

  1. Fixed Key(固定密钥):这是一种使用单个固定密钥进行加密和解密的密钥管理方案。固定密钥体系中,所有使用该密钥的加密操作都完全相同。这种方案的优点是简单易用,但缺点是如果密钥泄漏或被破解,整个系统的安全性将受到威胁。

  2. MK/SK(Master Key/Session Key):MK/SK是一种层次式的密钥管理方案,其中包含一个主密钥(Master Key)和会话密钥(Session Key)。主密钥用于生成临时的会话密钥,而会话密钥用于加密通信或数据。每个会话都使用一个独立的会话密钥,从而提高了系统的安全性。这种方案的优点是提供更好的密钥管理和更高的安全级别。

  3. DUKPT(Derived Unique Key Per Transaction):DUKPT是一种基于派生密钥的密钥管理方案。它使用主密钥派生出唯一的会话密钥,并且每个交易都使用不同的会话密钥进行加密。DUKPT通过使用不同的密钥来提高系统的安全性和追踪能力。每个会话密钥只在一个交易中使用,从而减少了密钥泄漏的风险。这种方案广泛应用于金融领域中的支付终端设备等场景。

总结起来,Fixed Key是一种简单的密钥管理方案,MK/SK是一种层次式的密钥管理方案,而DUKPT是一种基于派生密钥的密钥管理方案。每种方案都有其独特的优点和缺点,具体选择应根据安全需求和应用场景来决定。

在密钥体系中,以下是常见术语的解释:

  • PIK(PIN Encryption Key):用于加密和解密用户的个人识别号码(PIN)的密钥。PIK通常与每个帐户关联,用于保护帐户持有人的敏感信息。

  • DEK(Data Encryption Key):用于加密和解密数据的密钥。DEK可以用于保护存储在数据库、文件系统或传输过程中的数据。

  • MAK(Message Authentication Key):用于签名和验证消息完整性的密钥。MAK可用于确保数据在传输过程中没有被篡改或损坏。

  • KSN(Key Serial Number):密钥序列号是一种用于唯一标识加密设备或密钥的值。它通常与加密操作相关联,以确保使用正确的密钥。

  • IPEK(Issuer Public Encryption Key):发卡行公共加密密钥,用于生成分发给终端设备的工作密钥。IPEK允许发卡行与终端设备之间进行安全的密钥交换。

  • TR31(ANS X9.24 Part 1):是美国国家标准与技术研究所(NIST)发布的规范,用于定义密钥管理和密钥交换的协议。TR31通过协商和分发密钥来确保安全通信和数据保护。

TR31 Key Block是一种远程导入密钥的方法(报文规范格式),可以导入MK/SK中的MK、PIK、MAK,或DUKPT中的IPEK。KBPK用于对Key Block加密,终端与后台具有相同的KBPK。 

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

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

相关文章

工服穿戴检测联动门禁开关算法

工服穿戴检测联动门禁开关算法通过yolov8深度学习框架模型,工服穿戴检测联动门禁开关算法能够准确识别和检测作业人员是否按照规定进行工服着装,只有当人员合规着装时,算法会发送开关量信号给门禁设备,使门禁自动打开。YOLO的结构…

Maven入门教程(一):安装Maven环境

视频教程:Maven保姆级教程 Maven入门教程(一):安装Maven环境 Maven入门教程(二):idea/Eclipse使用Maven Maven入门教程(三):Maven语法 Maven入门教程(四):Nexus私服 Maven入门教程(五):自定义脚手架 Maven项…

近年GDC服务器分享合集(四): 《火箭联盟》:为免费游玩而进行的扩展

如今,网络游戏采用免费游玩(Free to Play)加内购的比例要远大于买断制,这是因为前者能带来更低的用户门槛。甚至有游戏为了获取更多的用户,选择把原来的买断制改为免费游玩,一个典型的例子就是最近的网易的…

c++图论免费ppt,简单深度理解图论

本篇博文想分享一个ppt,是帮助大家简单深度理解c图论. 作者承诺:分享的东西没有病毒,是资料。 分享的东西一个是ppt,ppt里面是150页的,里面将带领大家简单深度理解c图论,还有一个就是里面例题的数据,大家可以按照数据…

Qt应用开发(基础篇)——输入对话框 QInputDialog

一、前言 QInputDialog类继承于QDialog,是一个简单方便的对话框,用于从用户获取单个值。 对话框窗口 QDialog QInputDialog输入对话框带有一个文本标签、一个输入框和标准按钮。输入内容可以字符、数字和选项,文本标签用来告诉用户应该要输入…

MyBatis-Plus学习笔记

1.MyBatis-Plus简介: MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus提供了通用的mapper和service,可以在不编写任何SQL语句的情况下,快速的实现对单…

优化爬虫请求:如何选择合适的爬虫ip轮换策略?

在进行爬虫任务时,使用隧道爬虫ip并采用合适的轮换策略可以提高稳定性和效率。选择合适的隧道爬虫ip轮换策略可以优化您的爬虫请求过程。 1、考量目标网站特点 不同网站对于频繁请求可能有不同限制或反爬机制。 了解目标网站是否存在IP封禁、验证码等问题&#xff…

swagger 接口测试,用 python 写自动化时该如何处理?

在使用Python进行Swagger接口测试时,可以使用requests库来发送HTTP请求,并使用json库和yaml库来处理响应数据。以下是一个简单的示例代码: import requests import json import yaml# Swagger API文档地址和需要测试的接口路径 swagger_url …

云原生Kubernetes:K8S概述

目录 一、理论 1.云原生 2.K8S 3.k8s集群架构与组件 二、总结 一、理论 1.云原生 (1)概念 云原生是一种基于容器、微服务和自动化运维的软件开发和部署方法。它可以使应用程序更加高效、可靠和可扩展,适用于各种不同的云平台。 如果…

2分钟搭建FastGPT训练企业知识库AI助理(Docker部署)

我们使用宝塔面板来进行搭建,更方便快捷灵活,争取操作时间只需两分钟 宝塔面板下安装Docker 在【软件商店中】安装【docker管理器】【docker模块】即可 通过Docker安装FastGPT 通过【Docker】【添加容器】【容器编排】创建里新增docker-compose.yaml以下…

oled--SSD1315驱动

OLED 接口方式(由硬件电路确定):6800、8080、spi、i2c. 常见的驱动芯片:ssd1306、ssd1315。 oled屏幕的发光原理不同于lcd,上电后无法直接显示,需要初始化后才能正常显示。 SSD1315手册资料 SSD1315是一款…

2023年05月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:字符串插入 有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的’\0’。)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。 时间限制:1000 内存…

怎样来实现流量削峰方案

削峰从本质上来说就是更多地延缓用户请求,以及层层过滤用户的访问需求,遵从“最后落地到数据库的请求数要尽量少”的原则。 1.消息队列解决削峰 要对流量进行削峰,最容易想到的解决方案就是用消息队列来缓冲瞬时流量,把同步的直…

C语言每日一练--Day(15)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:珠玑妙算 两数之和 💓博主csdn个人主页:小小uni…

jmeter 固定定时器

固定定时器(Constant Timer)是一个定时器元件,可以在线程组中的每个线程之间添加固定的延迟时间。固定定时器会对每个线程的执行进行一定的暂停。 聊一下和线程组中的调度器对线程组执行时长的影响: 相同: 都会影响线…

前端学习之轮播图

前端学习之轮播图 该案例涉及到定时器的使用&#xff0c;元素的活获取&#xff0c;函数的调用等知识的运用 显示图如下&#xff1a;可以点击图标跳转图片&#xff0c;也可以自动轮播 源码如下 <!DOCTYPE html> <html><head><meta charset"UTF-8&q…

数学建模:Yalmip求解线性与非线性优化问题

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 线性优化 使用 Yalmip 求解线性规划最优值&#xff1a; m i n { − x 1 − 2 x 2 3 x 3 } x 1 x 2 ⩾ 3 x 2 x 3 ⩾ 3 x 1 x 3 4 0 ≤ x 1 , x 2 , x 3 ≤ 2 \begin{gathered}min\{-x_1-2x_23x_3\} \…

Python|小游戏之猫捉老鼠!!!

最近闲(mang)来(dao)无(fei)事(qi)&#xff0c;喜欢研究一些小游戏&#xff0c;本篇文章我主要介绍使用 turtle 写的一个很简单的猫捉老鼠的小游戏&#xff0c;主要是通过鼠标控制老鼠(Tom)的移动&#xff0c;躲避通过电脑控制的猫(Jerry)的追捕。 游戏主体思考逻辑&#xff1…

es5的实例__proto__(原型链) prototype(原型对象) {constructor:构造函数}

现在看这张图开始变得云里雾里&#xff0c;所以简单回顾一下 prototype 的基本内容&#xff0c;能够基本读懂这张图的脉络。 先介绍一个基本概念&#xff1a; function Person() {}Person.prototype.name KK;let person1 new Person();在上面的例子中&#xff0c; Person …

C++:日期类

学习目标&#xff1a; 加深对四个默认构造函数的理解&#xff1a; 1.构造函数 2.析构函数 3.拷贝构造 4.运算符重载 实现功能 1.比较日期的大小 2.日期-天数 3.前/后置&#xff0c;-- 这里基本会使用运算符重载 定义一个日期类 class Date { public://1.全缺省参数的构造函数Da…