首页 > 其他分享 >学习笔记10

学习笔记10

时间:2023-04-24 10:25:09浏览次数:42  
标签:10 令牌 秘密 存储 笔记 口令 学习 密钥 使用

第21章 存储秘密

21.1 磁盘

  • 存储秘密的一个很直接的办法是把秘密存储在计算机的硬盘上或其他永久存储介质上,这是可行的,但是任何使用此电脑的人都能使用该密钥。
  • 一个更好的解决方案是让 Alice把密钥存储在她的PDA或智能手机上。这些设备很少会借给别人使用,而且无论去哪里都会随身携带,但这些小型设备很容易丢失或失窃。

21.2 人脑记忆

  • 将密钥直接存储在人的大脑中,我们可以记住一个口令,并用这个口令加密其他密钥。
  • 人类记忆口令的能力是相当差的,但是好的口令应该是不可预测的,它包含大量的熵。
  • 我们可以使用密码短语来设置口令,但即便是使用密码短语,我们也是很难记住的。

加盐和扩展

  • 盐就是一个随机数,与加密的口令存放在一起,最好采用256位的盐。
  • 扩展一定是很长的计算。令\(p\)是密码口令,\(s\)是盐。使用任意保密性强的散列函数\(h\),计算:
  • \[x_0 = 0 \]

  • \[x_i = h(x_{i-1}||p||s) \; \; \; \; for \; i = 1, \cdots, r \]

  • \[K = x_r \]

  • 用\(K\)作为密钥来实际加密数据。参数\(r\)是计算迭代的次数,只要实际情况允许,\(r\)值应该尽可能大。
  • 加盐和扩展的方法也体现了密钥协商中前向安全性的思想。生成会话的长期密钥可能被泄露,但是之前的通信都可以保证其安全性。
  • 当攻击者同时攻击大量口令时,盐能够防止他利用规模扩大而节约计算量。
  • 当我们把盐加入到扩展函数中时,所有的盐都是随机值,因此每个用户会使用不同的盐值。现在攻击者将不得不对每个文件计算一次扩展函数,而不是对每个口令计算一次。对于攻击者来说增加了很大的计算量。

21.3 便携式存储

  • 存储秘密的另一个办法是在计算机之外存储。最简单的存储方式是把口令写在一页纸上,这种技术仅仅适用熵比较低的口令和密码短语。
  • 一个更先进的存储方法是便携式存储。它可以是一张存储芯片卡、一张磁条卡、一个USB盘或是任何其他种类的数字存储设备。数字存储系统总是能存储至少256位的密钥,因此我们可以排除低熵的口令。便携式存储变得非常像一个密钥,无论谁得到它,都能够拥有访问权,因此需要安全地放置。

21.4 安全令牌

  • 一个更好但也更贵的解决方案是使用我们称为安全令牌的设备。令牌的外部形状可以千变万化,从智能卡到iButton、USB加密狗或PC卡。它的主要性质是有一个永久性存储器(例如,没电时仍能保存数据的内存)和一个CPU。
  • 安全令牌主要作为一个便携式存储设备来工作,但它在安全性上又有几点改进。安全令牌对输入口令的操作具有次上的限制,同时也能抵抗物理干扰。
  • 安全令牌目前是最好也最实用的存储密钥的方法之一。它们相对便宜,并且足够小,方便携带。
  • 用户行为是实际使用中需要注意的一个问题。

21.5 安全UI

  • 如果令牌本身有一个安全的内置UI,我们就能得到更多的安全性。考虑一个有内置键盘和显示屏的安全令牌,那么口令或PIN就能够直接输入令牌而不需要信任外部的设备了。
  • 为了阻止密钥的泄露,我们必须把涉及密钥的密码学过程嵌入令牌,这就要求在令牌中有应用专用(application-specific)的代码。
  • 在现实中,带有安全UI的令牌对大多数应用来说太昂贵了,也许功能最相近的产品是个人数字助理(PDA)和智能电话。

21.6 生物识别技术

  • 我们可以在安全令牌中加入生物识别技术,类似指纹扫描或者虹膜扫描。
  • 虽然指纹扫描仪很容易被欺骗,但是在安全性要求不高的方案中是可以考虑应用的。

21.7 单点登录

  • 只使用一个主口令,然后用它来给不同应用中的不同口令加密。
  • 所有的应用必须与单点登录系统对话,只要应用需要口令,都不应该询问用户,而是由单点登录程序来完成。

21.8 丢失的风险

  • 如果安全令牌或者密钥丢失,就会引起严重的后果。
  • 我们可以保存密钥的两个副本,一个容易使用,另一个更可靠。如果容易使用的系统忘记了密钥,可以从可靠存储的系统中恢复它。

21.9 秘密共享

  • 有一种密码学解决方案能够帮助我们存储密钥,它叫作秘密共享(secret sharing),该方法是把这个秘密分成几个不同的分块,它可能以这样的方式来处理:例如,用5个分块中的3个就可以恢复秘密。那么你可以把分块分给IT部门的每个高级成员,他们中的任何3个人都能恢复秘密。这种方式的技巧就是任意两个人在一起绝对不会知道关于密钥的任何事情。
  • 但是在现实生活中,秘密共享方案很少被使用,因为此方案太过复杂。不但应用起来复杂,更重要的是,管理和操作也很复杂。

21.10 清除秘密

21.10.1 纸

  • 要清除写在纸上的口令一般是把这张纸销毁。一种可能的方法是烧掉这张纸,然后把灰烬碾成粉末,或者是用水把灰烬混成纸浆,把纸切成碎片也是一种选择。

21.10.2 磁存储介质

  • 磁介质是很难清除的,一个比较好的处理方法是用随机数据重复地重写秘密,有以下几点注意要求:
    • 每次重写应该使用新的随机数据,
    • 一定要在存储秘密的实际位置重写,
    • 要保证每次重写是写到磁盘上,而不是写到磁盘缓存中,
    • 清除自秘密数据之前开始,且到它之后结束一段区域。
  • 使用消磁机来清除磁带或磁盘从理论上说是可行的。然而,现代的高密度磁盘存储介质能够抵抗消磁,因此这不是一个可靠的清除方法,实际上,用户根本弄不到消磁机,因此这也是不现实的。

21.10.3 固态存储

  • 用随机数据重复地重写秘密是仅有的一种实际解决方案,但也不是很完美的方案。
  • 只要不再使用某种固态设备,最好的方法就是销毁它。

标签:10,令牌,秘密,存储,笔记,口令,学习,密钥,使用
From: https://www.cnblogs.com/acacacaac/p/17348605.html

相关文章

  • Vue学习笔记之Node Sass version 8.0.0 is incompatible with 4.0.0错误
    输入以下两个命令:npmuninstallnode-sassnpmi-Dsass注:Mac环境如果进行了系统升级,需要重新安装Xcode,执行命令xcode-selectinstall不然会出现如下的错误Mac解决gyp:NoXcodeorCLTversiondetected!报错 如果出现python2的错误gypverb`which`failedE......
  • HTML入门学习笔记
    HTML学习笔记详解01初识HTMLHTMLHTML,英文全称为HyperTextMarkupLanguage,中文翻译为超文本标记语言,其中超文本包括:文字,图片,音频,视频,动画等目前目前主流使用的是HTML5+CSS3HTML的优势主流浏览器都支持微软GOOGLE苹果市场的需求跨平台(类似JVM)W3C标准......
  • HTML-CSS笔记
    HTML一、网页的基本结构和基础1、html基础<!doctypehtml><html> <head> <!--可以通过meta标签来设置网页的字符集,避免乱码的问题--> <metacharset="UTF-8"/> <title>网页的基本结构</title> </head> <body> <!-- 迭代 网页的版本......
  • LCA(最近公共祖先)学习笔记
    前言没想到干完lca的时间比tarjan的还要长(我不能这么弱下去了!!)前置知识dfs序这东西有点类似于时间戳(dfn),但是它分为两部分(回溯之前和回溯之后)。并且dfs序还分为两种。这里只介绍一倍的dfs序。如上图,蓝色代表左端点,红色代表右端点,(学过Tarjan的都知道),蓝色其实就是这棵树的dfn(......
  • 深度学习--初识卷积神经网络
    深度学习--初识卷积神经网络1.LeNet-580年代,正确率达到99.2%5/6层输入层:32*32第一层:卷积层6@28*28第二层:下采样层6@14*14第三层:卷积层16@10*10第四层:下采样层16@5*5第五层:全连接层120第六层:全连接层84输出层:高斯连接层102.AlexNet2012年,8层网络结构5个卷......
  • 促进护理治疗中的决策表现:基于上下文数字游戏的翻转学习方法
    促进护理治疗中的决策表现:基于上下文数字游戏的翻转学习方法(Facilitatingdecision-makingperformancesinnursingtreatments:acontextualdigitalgame-basedflippedlearningapproach)★★实验结果实验组、对照组和两维度分析:对照组学生:使用传统翻转学习;实验组学生:使......
  • argc和argv学习
    转自:https://stackoverflow.com/questions/3024197/what-does-int-argc-char-argv-mean1.介绍argc:c是指count,传参个数,至少为1,表示执行的文件名;argv:v指vector,即传参向量。#include<iostream>intmain(intargc,char**argv){std::cout<<"Have"<<ar......
  • C++ 学习 第八天
    今日内容:匿名函数 动态数组 匿名函数:lambda表达式:捕获列表:[捕获列表]{cout<<endl;}捕获列表捕获的是父作用域下的属性,如果[]为空,默认不补货 值捕获父作用域下所有的属性,只捕获值,不捕获属性本身(只读不写)值捕获父作用域下所有的函数,但是引用捕获父作用域下......
  • 10.数制转化
     问题分析: 十进制整数转换为R进制整数的基本方法是:“除R取余”。具体做法为:对于十进制数整数,用R连续除要转换的十进制整数及各次所得之商,直除到商等于0时为止,则各次所得之余数即为所求R进制整数由低位到高位的值。这个过程可以写成一个简单的循环。    一般而言,对于......
  • CountDownLatch 学习笔记
    1.概念CountDownLatch是在JDK1.5的时候被引入的,位于java.util.concurrent并发包中,CountDownLatch叫做闭锁,也叫门闩。允许一个或多个线程一直等待,直到其他线程执行完成后再执行。2.工作原理CountDownLatch通过一个计数器来实现的。计数器的初始化值为线程的数量。每当一个线程......