IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 密钥导出函数KDF -> 正文阅读

[数据结构与算法]密钥导出函数KDF

KDF概述

KDF全称(Key derivation function) 密钥导出函数。
密码学中,密钥导出函数是指使用伪随机函数从主密钥master_key中导出一个或多个密钥key。KDF可用于将密钥扩展到更长的密钥或获得所需格式的密钥。密钥加密哈希函数是用于密钥推导的伪随机函数的流行示例。

KDF执行方法

实现 key stretching [1] 的方法,具体就是从一个 master key,password 或者 passphrase 派生出一个或者多个密钥,派生的过程,使用PRF(Pseudo Random Function 伪随机函数)可以是某种哈希算法。

  • [Key stretching]
    密钥延长算法(一种更慢的哈希算法),用于将初始密钥转换成增强密钥,在计算过程中刻意延长时间或者消耗空间,这样有利于保护弱密码。

密钥派生算法

  1. PBKDF2 (CPU-Hard algorithm)
    原理介绍
    PBKDF2简单而言就是将salted hash进行多次重复计算,这个次数是可选择的。
    PBKDF2是基于密码派生出密钥的算法,需要消耗很多算力,为了是防止暴力破解加密。
  2. Scrypt (Memory-Hard algorithm)
    Scrypt 也是一种 password-base KDF 算法,比起 PBKDF2 需要消耗更多的资源,从而有效防止了专有硬件 ASIC/ FPGA 的暴力破解。Scrypt 内部用的还是 PBKDF2 算法,不过内部会长时间地维护一组比特数据,这些数据会在生成复杂的 salt 的过程中反复加密(Salsa20,一种流密码)得到。网上流行说,以太坊的PoW共识算法是利用Scrypt实现的,但事实上,以太坊自己实现了一套哈希算法,叫做Ethash。

简而言之,PBKDF2是算力型,而Scrypt是资源消耗型算法。

KDFs的使用

我们下面针对密钥延伸( key stretching )对KDF进行下一步的描述:

KDF也用于从秘密密码或密码短语导出密钥的应用程序,密码通常不具有直接用作加密密钥的所需属性。在这样的应用中,通常建议将密钥导出功能故意缓慢,以阻止对密码或密码输入值的暴力攻击或字典攻击。

这种使用可以表示为DK = KDF(Key,Salt,Iterations),
其中DK是派生密钥;
KDF是密钥导出函数;
Key是原始密钥或密码;
Salt是作为密码盐的随机数;
Iterations是指子功能的迭代次数。

使用派生密钥代替原始密钥或密码作为系统的密钥。盐的值和迭代次数(如果不固定)与散列密码一起存储或以加密消息的明文形式发送。

暴力攻击的难度随着迭代次数的增加而增加。迭代计数的实际限制是用户不愿容忍登录计算机或看到解密消息的可察觉延迟。使用salt可以防止攻击者预先计算派生密钥的字典。

KDF流程图

Extraction-then-Expansion(E-E) Key Derivation Procedure
在这里插入图片描述

参考地址

https://blog.csdn.net/sjrgckym/article/details/78195845
https://www.cnblogs.com/mengsuenyan/p/13160157.html#toc
https://www.jianshu.com/p/9b579b80afa4

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:24:08  更:2021-09-06 11:25:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:55:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码