客户端加密的有效用例有哪些?

2024-03-15

我刚刚读到斯坦福大学 Javascript 加密库 http://crypto.stanford.edu/sjcl/ (jsfiddle 示例 http://jsfiddle.net/kRcNK/),它完全用 JavaScript 支持 SHA256、AES 和其他标准加密方案。该库看起来非常漂亮,但我不知道它的合理用例。

As 一些问题 https://stackoverflow.com/questions/4121629/password-encryption-at-client-side已经指出,客户端加密并不是将安全数据传递到服务器的安全方法。应改用 HTTPS。那么,是否有任何项目可以受益于或需要客户端加密?


使用案例1

怎么样本地存储 http://dev.w3.org/html5/webstorage/#dom-localstorage?您可能想要存储一些数据,但要对其进行加密以使计算机的其他用户无法访问它?

例如:

  • 用户通过 HTTPS 连接到服务器。
  • 服务器对用户进行身份验证。
  • 服务器提供特定于该用户的加密密码。
  • 用户在本地做一些事情。
  • 一些数据存储在本地(使用密码加密)。
  • 用户走失
  • 用户稍后返回站点。
  • 用户通过 HTTPS 连接。
  • 服务器对用户进行身份验证。
  • 服务器提供用户的加密密码。
  • 客户端JS使用加密密码来解密本地数据。
  • 用户使用现在已解密的内存中本地数据在本地执行某些操作。

如果您有一个胖客户端,需要跨会话使用大量(敏感)数据,并且由于大小而无法从服务器提供数据,这可能会很有用。我想不出有那么多适用于此的例子......

当应用程序的用户生成敏感数据并且该数据不需要(或不应)发送到(或存储在)服务器上时,它也可能很有用。

作为一个应用示例,您可以将用户的信用卡详细信息存储在本地,加密并使用 JS 将其自动输入到表单中。您可以通过存储数据服务器端并以这种方式提供预先填充的表单来完成此操作,但通过这种方法,您不必在服务器上存储信用卡详细信息(在某些国家/地区,有严格的信用卡详细信息)有关法律)。显然,在用户计算机上加密存储信用卡详细信息是否比在服务器端存储存在更多或更少的安全风险,这是有争议的。

很可能有一个更好的应用示例......

我不知道有任何现有项目使用这种技术。

用例2

通过密码共享来提高 HTTPS 的性能怎么样?

例如:

  • 用户通过 HTTPS 连接到服务器。
  • 服务器对用户进行身份验证。
  • 服务器提供特定于该用户的加密密码。
  • 然后服务器重定向到 HTTP(它的开销比 HTTPS 少得多,因此在性能方面会好得多)。
  • 由于服务器和客户端都有加密密码(并且该密码是通过安全连接共享的),因此它们现在都可以发送和接收安全加密的敏感数据,而无需使用 HTTPS 加密/解密整个请求的开销。这意味着服务器可以提供仅加密敏感部分的网页。然后客户端可以解密加密部分。

这个用例可能不太值得,因为 HTTPS 通常具有可接受的性能水平,但如果您需要提高一点速度,则会有所帮助。

用例 3

主机证明存储 http://en.wikipedia.org/wiki/Host_Proof_Storage。您可以加密客户端数据,然后将其发送到服务器。服务器可以存储数据并共享数据,但在不知道客户端私钥的情况下,无法解密。这被认为是诸如此类服务的基础lastpass http://lastpass.com/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

客户端加密的有效用例有哪些? 的相关文章

  • 调用“DOMNodeInserted”事件时添加元素

    我想在每个 喜欢 按钮 chrome 扩展 之后添加一个元素 由于帖子被添加到新闻提要而不刷新页面 我必须添加一个事件侦听器 DOMNodeInserted 但是当我尝试把after 里面的功能 它不起作用 Code contentArea
  • Typescript:按值检查对象是否存在于数组中

    我有这个数据 roles roleId 69801 role ADMIN roleId 69806 role SUPER ADMIN roleId 69805 role RB roleId 69804 role PILOTE roleId
  • 使用selenium IDE提取部分文本并将其放入变量中

    有人可以告诉我应该使用哪个命令来使用 Selenium Ide 从文本中仅提取数字 694575 并将其放入变量中以供进一步使用 这是带有文本的 div div class loginBoxTitle Edit Exhibition Cen
  • 使用 Javascript 在 Imacros 中循环

    我如何使用 javascript 循环 imm imacros 脚本 我搜索了一下 发现了这个 for i 0 i lt n i iimPlay marconame iim 但当我使用它时 我的浏览器 Firefox 18 挂起 for i
  • 为什么 jQuery 点击事件会多次触发

    我这里有这个示例代码http jsfiddle net DBBUL 10 http jsfiddle net DBBUL 10 document ready function creategene click function confir
  • Flask wtf.quick_form 运行一些 javascript 并设置表单变量

    我正在创建博客文章 到目前为止已经使用普通的 html 表单完成了 我所做的一个有趣的想法是运行 javascript onclick 并使用页面中的额外数据在表单中设置一个隐藏变量 这很好地传递到服务器并通过 request form 获
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • 如何记录返回的事件发射器

    如何记录所发出的事件stream返回于MyFunc 与 JSDoc MyFunc description param Object opts description return Stream description function My
  • 如何改变HTML5视频的播放速度?

    如何更改 HTML5 中的视频播放速度 我查过视频标签的属性 https www w3schools com html html5 video asp在 w3school 但无法做到这一点 根据这个网站 http www chipwreck
  • 使react-leaflet能够离线使用

    我一直在使用反应传单 https github com PaulLeCam react leaflet图书馆 到目前为止运作良好 现在我希望网站预加载尽可能多的图块 以便网络应用程序 也是 PWA 可以在没有互联网的情况下使用 我找到了一些
  • iframe 重新加载按钮

    我浏览了很多网站 但似乎没有一个能正常工作 或者我不明白它们 我想要一个刷新某个 iframe 的简单按钮 该按钮将位于父页面上 并且 iframe 名称为 Right 有很多方法可以做到这一点 假设这个iframe markup 我们可以
  • AJAX:检查字符串是否为 JSON?

    我的 JavaScript 有时会在这一行崩溃 var json eval this responseText 当争论时会导致崩溃eval 不是 JSON 在进行此调用之前有什么方法可以检查字符串是否为 JSON 我不想使用框架 有什么方法
  • 如何从顺序键盘导航中删除 Vuetify 附加图标

    在带有 Vuetify 的 Vue js 应用程序中 我有一组用v text field并且其中有一个append icon为了切换文本可见性 如下所示
  • 如何滚动到div内的元素?

    我有一个滚动的div我想在点击它时发生一个事件 它会强制执行此操作div滚动以查看内部元素 我写的JavasCript是这样的 document getElementById chr scrollIntoView true 但这会在滚动时滚
  • WebRTC:通道、轨道和流与 RTP SSRC 和 RTP 会话之间的关系

    来自 Mozilla 网站 https developer mozilla org en US docs Web API Media Streams API https developer mozilla org en US docs We
  • ng-model 和值组合不适用于输入文本框

    我有两个输入文本框 我需要组合在两个文本框中输入的值并将其显示在第三个文本框中 如果我只使用value在第三个文本框中 Box 1
  • 如何在 SVG 元素上使用箭头标记?

    我需要在 d3 js 中创建一个箭头 但我找到的只是带有节点图的示例 我需要的是简单地制作一个从 A 点到 B 点的箭头 我尝试实现以下示例中的部分代码 http bl ocks org 1153292 http bl ocks org 1
  • 我可以使用 jQuery 动态创建文件(及其内容)吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 这是我的 HTML 代码 ul li
  • 如何更改订阅值?使用 rxJS

    我正在创建一个计时器 需要你的帮助 我刚刚学习 Angular 和 rxJS 对此我有一些疑问 我正在创建一个具有启动 停止 暂停 重置功能的计时器 并且 btn Reset 必须将我的计时器 暂停 到 300 毫秒 怎么做 D 我的启动定
  • 在 javascript 中使用 xPath 解析具有默认命名空间的 XML

    我需要创建一个 XML xPath 解析器 所有解析都必须在客户端进行 使用 JavaScript 我创建了一个 javascript 来执行此操作 在默认名称空间发挥作用之前 一切看起来都正常 我根本无法查询具有默认命名空间的 XML 我

随机推荐

  • Objective C 从另一个文件访问全局变量[重复]

    这个问题在这里已经有答案了 可能的重复 Cocoa Objective C 中的全局变量 https stackoverflow com questions 338195 global variables in cocoa objectiv
  • 用于遗留代码的 EDMX 和用于新开发的 Code First 在一个 MVC 项目中一起使用

    情况如下 我们有一个大型 MVC 项目 在 EF5 0 上采用数据库优先方法 对象上下文构造函数 namespace xxx Models public partial class xxxEntities ObjectContext reg
  • 更新被拒绝,因为当前分支的提示位于提示后面:其远程对应分支。集成远程更改(例如[重复]

    这个问题在这里已经有答案了 更新被拒绝 因为当前分支的尖端落后 提示 它的远程对应物 集成远程更改 我试图将本地 octopress 博客推送到远程分支 但上面的说法是错误的 另一个是 我是否必须管理或推送本地更改来源或起源分支 当我执行
  • 如何在 React JSX 中除最后一个元素之外的每个元素后面添加 array.map 中的逗号

    如何在数组的每个元素后面添加尾随逗号以创建如下列表 INV INV INV INV 请注意 最后一个元素没有尾随逗号 目前正在迭代列表array map var List React createClass render function
  • 使用蓝牙耳机启动语音识别无法正常工作

    我需要使用具有语音识别功能的蓝牙耳机 在 S3 S4 和 Samsung Grand 等某些设备上几乎可以正常工作 然而 当我在 Nexus 7 上尝试同样的操作时 我得到了 BluetoothHeadsetServiceJni Faile
  • C++中bool数据类型的比较

    The bool数据类型通常表示为0 as false and 1 as true 然而 也有人说true值可以用除以下以外的值表示1 如果后面的语句是true 那么下面的表达式可能是不正确的 bool x 1 if x 1 Do some
  • 将图标与按钮标签内的文本顶部对齐

    如何将按钮标签内的图标与文本顶部对齐 它当前位于文本的左侧 我不知道怎么办 这是代码 div class nav div
  • VS2012 中的 BeforeBuild 和其他目标发生了什么?

    我试图让一些预构建步骤在 Visual Studio 2012 中的 C 项目中工作 但它们不会被调用 虽然我很确定相同的技术在 Visual Studio 2010 中也可以使用 命令行构建的行为完全相同 这是项目文件的结尾 该文件是使用
  • json_encode() 返回 false

    这是我第一次面对数组结果布尔值的 var dumping json encode 我有一个由反序列化产生的数组 我 var dumped 它并确保它是一个有效的数组 结果如下 这只是一部分 而不是整个调试视图 array size 3 id
  • 如何直接访问azure应用程序服务实例

    我是天蓝色的新手 我有一个 Asp Net MVC 应用程序托管在 azure 应用程序服务 上 有两个实例 我的应用程序使用本地缓存 有时我需要清除这个缓存 但问题是 当我清除缓存时 我实际上只针对一个特定实例执行此操作 而其他实例仍然保
  • Symfony2创建服务[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 symfony2 文档中曾经有关于如何创建服务 my mailer 的操作方法 但我似乎无法在任何地方
  • MySQL 8.0.11 由于 caching_sha2_password 连接错误

    当我尝试连接到 MySQL Workbench 上的服务器时 收到错误消息 您的连接尝试无法以 localhost 3306 身份从主机到服务器的用户 root 认证插件caching sha2 password无法加载 指定的模块无法找到
  • WiX 安装程序:使用 xslt 和 heat.exe 来更新属性

    我正在尝试为 Windows 服务创建 WiX 安装程序 并且我读到需要将所有文件的 KeyPath 设置为 no WiX 脚本中的 exe 除外 我目前正在使用 Heat exe 生成目录和文件结构 这是我的命令 WIX bin heat
  • 绘制路径大于最大位图尺寸

    我想画一条比canvas getMaximumBitmapWidth and or canvas getMaximumBitmapHeight 在可缩放的视图内 特别是在较旧的设备 Android 9 及更早版本 上 这会导致 路径太大而无
  • 当标签已存在于远程时​​,Git 强制推送标签

    我已经将标签推送到遥控器上 当另一个用户创建相同的标签并尝试推送时 推送将失败 因为该标签已存在于远程上 但我想如果我这么做了 f force tag push 它应该可以工作 但我所看到的并非如此 我想我必须这样做 Create tag
  • 是否应该迁移变更集的用户名和时间戳?

    以下文字关于OpsHub 迁移实用程序页面 https visualstudiogallery msdn microsoft com 28a90a17 d00c 4660 b7ae 42d58315ccf2表示用户名和时间戳将嵌入到迁移的变
  • 在 BIDS 中使用存储过程作为 OLE DB 源

    我正在测试 SSIS 包和存储过程 因为我只是一个初学者 我需要做的是使用在源数据库上安装的存储过程来返回数据集 然后我需要一个 ssis 包来使用存储过程返回的数据集作为 OLE DB 源来填充第二个目标表 基本上我有两张桌子 测试源 测
  • 可变参数模板的可扩展性

    我正在使用 C 11 开发一个大规模软件基础设施 该基础设施广泛使用了可变参数模板 我的问题如下 这种方法的可扩展性如何 首先 可变参数模板可以采用的参数数量是否有上限 其次 当使用许多参数时 并且 通过扩展 这些参数的许多组合将产生模板化
  • 在 Java 中用 Scala 中的 Option 包装返回 null 的方法?

    假设我有一个方法session get str String String但你不知道它会返回一个字符串还是一个 null 因为它来自 Java 在 Scala 中是否有更简单的方法来处理这个问题而不是session get foo null
  • 客户端加密的有效用例有哪些?

    我刚刚读到斯坦福大学 Javascript 加密库 http crypto stanford edu sjcl jsfiddle 示例 http jsfiddle net kRcNK 它完全用 JavaScript 支持 SHA256 AE