- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个想法,但我不知道在 Google 中使用的魔法词是什么 - 我希望在这里描述这个想法,也许有人会知道我在寻找什么。
假设您有一个数据库。大量数据。它是加密的。我正在寻找的是一种加密,由此可以解密,变量 N 必须在给定时间保持值 M(从第三方获得,如硬件 token ),否则无法解密。
所以想象一下 AES - 好吧,AES 只是一个 key 。如果你有 key ,你就在。现在想象一下 AES 以这样一种方式修改,即算法本身需要一个额外的事实,在 key 之上和之外 - 这个来自外部来源的额外数据,以及该数据随时间变化的地方。
这存在吗?它有名字吗?
最佳答案
在受信任的第三方的帮助下,这很容易做到。是的,我知道,您可能想要一个不需要的解决方案,但请耐心等待 - 我们会解决这个问题,或者至少接近那个问题。
无论如何,如果您有合适的可信第三方,这很容易:在使用 AES 加密您的文件后,您只需将您的 AES key 发送给第三方,让他们发送至 encrypt it with their own key , 将结果发回给您,并在将来的某个特定时间发布他们的 key 。那时(但很快),任何拥有加密 AES key 的人现在都可以解密它并使用它来解密文件。
当然,第三方可能需要很多 key 加密 key ,每个都在不同的时间发布。与其将它们全部存储在磁盘或其他东西上,更简单的方法是让它们根据 secret 主 key 和指定的发布时间生成每个 key 加密 key ,例如通过应用合适的 key-derivation function给他们。这样,可以为任何所需的发布日期或时间生成一个独特且(显然)独立的 key 。
在某些情况下,这种解决方案实际上可能是实用的。例如,“受信任的第三方”可能是防篡改的 hardware security module带有内置实时时钟和安全外部接口(interface),允许在任何发布日期加密 key ,但仅在已过去的日期解密。
但是,如果受信任的第三方是提供全局服务的远程实体,将每个 AES key 发送给他们进行加密可能不切实际,更不用说潜在的安全风险了。在这种情况下,public-key cryptography可以提供一个解决方案:而不是使用symmetric encryption加密文件加密 key (这将要求他们知道文件加密 key 或发布 key 加密 key ),受信任的第三方可以为每个发布日期生成一个公钥/私钥对并发布公共(public)部分 key 对,但在指定的发布日期之前拒绝透露私有(private)的一半。持有公钥的任何其他人都可以用它加密自己的 key ,但在相应的私钥被公开之前,没有人可以解密它们。
(另一种部分解决方案是使用 secret sharing 将 AES key 拆分为多个份额,并仅将一个份额发送给第三方进行加密。与上述公钥解决方案一样,这将避免将 AES key 泄露给第三方,但与公钥解决方案不同,它仍然需要加密者和受信任的第三方之间的双向通信。)
上述两种解决方案的明显问题是您(以及其他所有相关人员)确实需要信任生成 key 的第三方:如果第三方不诚实或被攻击者破坏,他们可以轻松地提前泄露私钥。时间。
然而,有一个聪明的方法 published in 2006 by Michael Rabin and Christopher Thorpe (并且在 this answer on crypto.SE 中由一位作者提到)至少部分解决了这个问题。诀窍是distribute the key generation在几个或多或少值得信赖的第三方网络中,即使有限数量的第三方不诚实或受到损害,在足够多的第三方同意之前,他们都无法获知私钥是时候释放它们了。
Rabin & Thorpe 协议(protocol)还可以防止受感染方的各种其他可能的攻击,例如试图防止在指定时间泄露私钥或导致生成的私钥或公钥不匹配。我并没有声称完全理解他们的协议(protocol),但是,鉴于它基于现有和深入研究的加密技术的组合,我认为没有理由不满足其规定的安全规范。
当然,这里的主要困难在于,要使这些安全规范真正发挥作用,您确实需要一个足够大的分布式 key 生成器网络,以至于没有一个攻击者可以合理地破坏其中的大部分。建立和维护这样的网络is not a trivial exercise .
关于encryption - 基于时间的加密算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11416803/
我正在尝试用 C 编写一个简单的加密程序。我的目标是将 abc(它可以是任何单词)翻译成 123。然后乘以 2 得到 246 然后再次翻译成文本,然后在屏幕上写 bdf。这是我的算法,它不能正常工作。
互联网上有很多关于加密的答案,但我一直无法找到我正在寻找的东西:使用 c# 提供的工具对字符串和文本文件进行加密的简单强加密。 我的主要问题是我不知道如何将 IV 保存到文本文件的开头或如何创建随机
C#“RSACryptoServiceProvider”加密算法是 Microsoft-CryptoAPI 的一部分吗? 通过在 .Net 中使用 CryptoAPI 而不是“RSACryptoSer
我正在编写适用于“流”的 XXTEA 加密算法的实现,即可以像这样使用:crypt mykey 输出。 其中一个先决条件是它根本无法访问文件(它只读取固定大小的 block ,直到找到 EOF)。该
嘿,这是我老师给我的一个加密例子。但是,我仍然搞不懂(Int)Message[i]是什么意思?那么程序在这条线上做什么呢?
嘿,这是我老师给我的一个加密例子。但是,我仍然搞不懂(Int)Message[i]是什么意思?那么程序在这条线上做什么呢?
嘿,我研究这个已经有一段时间了,我记得我的兄弟引导我完成了这个完全相同的算法。 基本上,它只是添加键中字符和短语的 ascii 值。 我可以用这个加密它: def encrypt(key, strin
我正在尝试将 BouncyCaSTLe 与 android 一起使用来实现 ECDH 和 EL Gamal。我已经添加了 bouncycaSTLe jar 文件 (bcprov-jdk16-144.j
我需要加密一个数字,我和这个加密的值将提供给客户询问 key ,所以我想尽量减少数字的数量并使它们都可以打印。 所以我希望结果要么全是数字,要么全是十六进制字符。 我正在使用的当前加密方法(对于非数字
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 5年前关闭。 Improve t
我正在制作 note taking web app它会在您键入时连续保存笔记。我正在发送差异以防止通过线路发送过多数据,这在注释为纯文本时工作正常。 然而,我添加了对加密笔记的支持,所以笔记只会以加密
我正在寻找一种与 JavaScript 和 Java 兼容的安全对称 key 加密算法。 我已经尝试实现一个,但我遇到了一些编码问题。 最佳答案 您不想使用 JavaScript 加密,especia
目录 1 MD5 1.1 算法定义 1.2 MD5算法不安全的原因 1.2.1 字典表很大 1
在查看一些旧的 Coldfusion 代码时,我发现了几个通过加密/解密函数使用 CFMX_COMPAT 算法加密的数据实例。 找了一阵子,一直没找到这是什么算法。文档提到它现在是最不安全的方法,但我
谁能告诉我 iOS 上 SUP 用来加密底层数据库的加密算法是什么? 它是否依赖于 SQLite EE(加密扩展),如果是,使用了 4 种可用算法中的哪一种? 我的猜测是某种 AES,但官方文档中没有
我一直有这个问题。 The specified cryptographic algorithm is not supported on this platform. Exception Details
我正在为一个项目实现 3Des 加密算法。 我使用此代码作为示例: http://www.java2s.com/Code/Java/Security/TripleDES.htm 它工作正常,但我需要发
我正在尝试使用 adobe type 1 字体加密算法来加密文本文件。但是,我不知道如何用汇编语言正确地实现算法。如果可以,请帮助我。 下面是adobe type 1字体加密算法: unsigned
如何添加/创建具有特定加密算法的 c/c++ OpenSSL 静态库?假设我不想实现 md5。如何创建没有 md5 的库? 最佳答案 在配置脚本中你可以指定no-选项,它会在没有你指定的密码的情况下构
我检查了 TripleDES。它的 block 大小是 64 位。 有没有针对8位 block 大小的算法? 谢谢 编辑:我不打算将其用于完美保护,而是用于以防万一的情况,即看到代码的人不应该找到明文
我是一名优秀的程序员,十分优秀!