CBK-D2-安全与架构工程.md

2024-05-29 23:36
文章标签 安全 工程 架构 md d2 cbk

本文主要是介绍CBK-D2-安全与架构工程.md,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CBK-D2-安全与架构工程

密码学和对称密钥算法

密码通信的基础知识

明文P-plaintext、加密encrypt、密文C-ciphertext、解密decrypt、密钥Key
多数情况下,密钥无非是一个极大的二进制数
每一种算法都有一个特定密钥控制key space,是一个特定的数值范围
密钥空间由位大小bit size决定,是密钥内二进制位0和1的数量
密码术
创建和执行秘密代码和密码的技艺
密码分析
如何打败代码和密码
密码数学
代价函数从耗费成本和或时间的角度衡量破解所需的代价
代码作用于单词和短语,而密码作用有字符、位和块
替换密码–频率分析
多表替换-周期分析的二阶式频率分析
单词密本–替换密码
如果使用得当是不可破解的
1.单次密本必须随机生成
2.单次密本必须处于物理保护之下,以防泄露
3.每个单次密本必须只使用一次
4.密钥必须至少与将被加密的消息一样长
大多数现代加密算法都执行某类块密码

私钥密码系统

密码可为已存储(静态)、通过网络传送(传输中/动态)和存在于内存(使用中/处理中)的敏感信息提供保密性、完整性、身份认证和不可否认性

密码学的基本目标

1.保密性
对称密码系统
使用一个共享秘密密钥
非对称密码系统
使用单独组合的公钥和私钥
2.完整性
确保数据没有在未经授权的情况下被更改
消息的完整性可使用数字签名,在消息传输时创建
完整性保障由公钥和私钥系统提供
3.身份认证
挑战-应答身份认证协议
4.不可否认性
由公钥或非对称密钥提供

现代密码学

通过复杂算法和长密码密钥来实现密码学的目标
对称加密算法
1.密钥分发是问题,通常带外交换
2.不提供不可否认性
3.算法缺乏可扩展性,无法用于多人之间
4.必须经常重新生成
5.运算速度快,比非对称算法快1000~10000倍,本身更适合硬件执行
非对称加密算法
公钥加密,私钥解密
私钥加签,公钥验签
运算速度缓慢,通常使用混合密码传输大量数据
提供保密性、完整性、身份验证、不可否认性
哈希算法
哈希函数无法推导消息本身
存在哈希碰撞
一个哈希函数为两个不同消息产生相同哈希值

几种常见的对称密码系统

GCM、CCM同时包含了保密性和数据真实性
经过验证的加密模式
ECB,CBC,CFB,OFB和CTR模式只提供了保密性
未经验证的模式
美国1977年发布数据加密标准DES
2001年12月被高级加密标准取代
64位块密码,5种运行模式-ECB,CBC,CFB,OFB,CTR
一次性在64位明文上进行计算生成64位密文
使用密钥长度56位,8位是奇偶校验位,但是实践中很少使用到
16轮加密
国际数据加密算法IDEA
良好隐私PGP安全邮件软件包
64位明文/密文块上执行128位密钥运算,被分解成52个16位子密钥
Blowfish
64位块上运行
允许密钥长度变化,从32位到448位
作者开放软件许可
已被许多商用软件产品和操作系统采用
Skipjack
美国政府托管加密密钥
64位块运行,80位密钥,支持4种运行模式
美国财政部和NIST
Rivest Ciphers
Ron Rivest创建的对称密码,称为RC家族,RC4,RC5,RC6
RC4 1987年开发,
只进行一轮加密,使用40-2048位长度可变密钥
被集成到WEP,WPA,SSL,TLS等,导致WEP,WPA,SSL目前不符合现代安全标准
TLS也不再允许把RC4用作流密码
RC5 与RC4完全无关,块大小可变,密钥0~2040位,被认为是RC2的改进版
RC6是RC5的下一版开发的块密码,128位块大小,128、192、256位对称密钥
高级加密标准AES
2001年11月 NIST发布AES/Rijndael
允许使用3中密钥强度:128,192,256位
只允许处理128位块,加密轮数取决于所选密钥长度
对称密钥管理
密钥管理实践规范
1.秘密密钥的创建
2.分发
3.存储
4.销毁
5.恢复
6.托管
创建和分发密钥
线下分发-受制于地理位置遥远
公钥加密
Diffie-Hellman 密钥交换算法
存储和销毁对称密钥
绝不将加密密钥与被加密数据保存在同一个系统
敏感密钥,考虑安排两个人各持一半片段
基于软件的密钥存储,引入软件机制造破坏的风险
基于硬件的密钥管理设备,复杂且成本高,能提供额外的保护
密钥托管和恢复
公平密码系统

####### 密钥被分成两个或多个片段,每个片段交给一个独立的第三方托管

####### 政府部门在得到合法授权后可以出示法庭命令证明,获取组合密钥

托管加密标准

####### 向政府或另一个授权代理提供了解密密文得技术手段–专门针对Clipper芯片提出的

####### N之取M的授权代理

托管密钥的合法用途

####### 密钥恢复代理RA recovery agent

####### 预防密钥丢失,相关人员离职等恢复密钥

密钥生命周期

除单次密本以外,所有密码系统的使用寿命都是有限的
安全专业人员在挑选加密算法时,必须重视密码生命周期
1.规定机构可接受的密码算法,如AES,RSA和3DES
2.根据被传输信息的敏感性,识别可与每种算法配套使用的可接受密钥长度
3.枚举可用的安全交易协议,如TLS
如果是为最近启动的业务系统选用安全密钥,没必要担心10年后的密钥安全性
如果是设计建造比原子弹还危害大的武器,有必要考虑10年后的保密性,比如考虑量子密码

PKI和密码应用

公钥密码系统-非对称密码

公钥和私钥
公钥可通过不受保护的通信自有共享
公钥系统使用的密钥必须比私钥系统更长,才能产生同等的强度
RSA
1977年发明,2000年公开
Merkle-Hellman算法,1984年被破解
密钥强度:对称128位=RSA3072位=椭圆曲线256位
ElGamal
对Diffie-Hellman的扩展,1985年
加密信息都被加长了一倍,不适合大量数据加密
椭圆曲线
ECC,1985年提出,密码强度强
Diffie-Hellman密钥交换
和RSA类似都是由素数数学原理支撑
是公钥密码的例子,
本身不是加密协议,而是密钥交换协议
依赖于大素数的使用
量子密码
当前仅限于理论研究,如果出现会导致量子霸权
带来更新、更复杂的密码算法
实验室已开发量子密钥分发QKD执行方案,尚未实用
量子计算可能已在密码分析攻击中秘密出现了
目前的密码算法的大量级加密可暂抵御量子霸权

哈希函数

消息摘要
是提取一条可能会比较长的消息,然后从消息内容中派生一个唯一的输出值
消息摘要为128位或更长
密码哈希函数的5个基本要求
输入可以任意长度
输入固定长度
哈希计算对任何输入都相对容易
哈希函数是单向的
哈希函数抗碰撞
几乎不可能找到可产生相同哈希值的两条消息
可以修改传输过程中的哈希值和消息,比较难实现
需要截取消息并修改消息
获取加密公钥或加签私钥,重新生成新消息,中间人攻击可以?
几种常见的哈希算法
安全哈希算法SHA
SHA2性能优于SHA3,也优于MD5
SHA2有4个变体-sha256,sha224, sha512,sha384
消息摘要5 MD5
如今不是那么安全,建议SHA2
RIPE消息摘要 RIPEMD
RIPE-160至今被认为是安全的,和RIPEMD-320一样
基于哈希的消息身份认证码HMAC
哈希值长度可变
可变长度哈希HAVAL
MD5修改版
使用1024位块,产生128,160,192,224,256位长度哈希值

数字签名

两个目的
1.可提供不可否认性保障
2.可抵御恶意篡改和无意改动,即完整性
是公钥加密法和哈希函数的组合作用
不仅可用于消息,还可用来鉴别从互联网下载的代码

这篇关于CBK-D2-安全与架构工程.md的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014956

相关文章

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

Maven 插件配置分层架构深度解析

《Maven插件配置分层架构深度解析》:本文主要介绍Maven插件配置分层架构深度解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Maven 插件配置分层架构深度解析引言:当构建逻辑遇上复杂配置第一章 Maven插件配置的三重境界1.1 插件配置的拓扑

MyBatisX逆向工程的实现示例

《MyBatisX逆向工程的实现示例》本文主要介绍了MyBatisX逆向工程的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录逆向工程准备好数据库、表安装MyBATisX插件项目连接数据库引入依赖pom.XML生成实体类、

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可