我想阻止路由器上的站点。
我想在阻止站点后为路由器生成新密码。
我想要这个新密码进行加密。
但是要解密,我希望它需要2到8个小时才能解密。
有什么解决方案可以解决我的问题?
这样做的原因是我想把自己锁在外面。通过生成一个我无法记忆的随机密码并进行加密,可以确保我无法登录。正如
Joseph Sible-Reinstate Monica
所评论的那样:我认为这里的实际目标是OP试图将精力集中在重要的事情上,从而阻止访问分散注意力的站点,并且需要锁定自己
相关内容:如何在指定时间之前对自己隐藏代码?
在超级用户上。
#1 楼
锁时难题似乎是您想要的(例如,请参阅此示例。)。一个基本的构造方法是通过“ RSA组中的重复平方”。
让$ p,q $为大素数,让$ N = pq $。
目标是,对于固定$ t> 0 $,计算$ 2 ^ {2 ^ t} \ bmod N $。
有两个“明显的” “的方式,具体取决于您是否知道$ N $的因式分解。
如果您知道$ N $的因式分解,则可以首先计算$ 2 ^ t \ bmod \ varphi(N)= 2 ^ t \ bmod(p-1)(q-1)$,然后通过重复平方计算$ 2 ^ {2 ^ t \ bmod \ varphi(N)} $。此操作的复杂度最多是$(\ mathbb {Z} / N \ mathbb {Z})$中的$ O(\ log N)$乘积。
如果不知道因式分解$ N $,则有一些猜测[1],必须“直接”完成$ 2 ^ {2 ^ t} \ bmod N $的计算(并且不能真正并行化)。
一个人可以做到这一点通过反复平方得到$(\ mathbb {Z} / N \ mathbb {Z})$内的$ 2t $乘法的复杂度。
$ t \ in \ mathbb {N} $任意大,使您可以根据需要将其设置为“困难”。
请注意,如果某人想忽略此内容,则总是可以将$ N $分解(因此,这并不是“任意困难”),但是适当地使$ N $分解,可以让您对$ 2 ^ {2 ^ t} \ bmod N $的计算难度进行精细控制(相比之下,这是“更简便的选择”)。
然后可以使用$ 2 ^ {2 ^ t} \ bmod N $作为任何对称密钥加密方案的基础(或首先将其哈希到任何合适的域中)。
然后您的算法可能如下所示:
要加密某些内容,请生成RSA实例,计算$ 2 ^ {2 ^ t} \ bmod N $,使用此值(或其哈希值)加密某些内容,然后仅存储$(N ,t)$。
要解密,请重新计算$ 2 ^ {2 ^ t} \ bmod N $,然后使用您使用加密的任何“基本方案”进行解密。
的好处是,您可以自由地“调整”参数$ t $以使其花费多长时间才能解密。
[1]有关更多信息,建议您研究可验证的延迟函数,但我对这个领域不太熟悉。
评论
$ \ begingroup $
因此,如果您不重复使用N,则只需选择足够大的p和q,以便分解N也需要2到8个小时。通常情况下,您会选择一百万年内无法计算的N。
$ \ endgroup $
– gnasher729
20年4月19日在9:19
$ \ begingroup $
感谢@Mark。我不太了解,但是通过您对时间锁定难题的引用,我已经能够弄清楚这一点。 :D
$ \ endgroup $
–马特斯·雷宾(Mateusz Rybin)
20-04-19在9:48
$ \ begingroup $
@ gnasher729您可以这样做,但“缺点”是分解可以高度并行化。因此,需要2-8个核心小时\\ neq $ 2-8个挂钟小时。取决于您针对一种选择进行的优化比另一种更为合适。
$ \ endgroup $
–马克
20-04-19在18:54
$ \ begingroup $
@ gnasher729您至少需要2到8个小时,所以一百万年就可以了
$ \ endgroup $
– Hagen von Eitzen
20-4-20在18:42
#2 楼
有点离题,但我认为您缺少了一些东西:5 $扳手方法。解密密码可能需要2到8个小时,但重置路由器需要20秒(很抱歉,没想到这个快捷方式,但是您可能会在某个时候想到。)
大多数路由器都具有某种形式的父母控制。您可以将它们设置为特定时间,这样在工作时间内就无法访问这些网站。
或者您可以练习。不久前我遇到了焦点问题,对我来说有效的方法是让自己每个小时(上午10:00,上午11:00等)有5分钟的时间
您只需在便笺上写一个20个字符的密码即可到路由器背面。您所需要的只是一个阈值,在该阈值上需要花费太多精力来更改设置。如果您必须手动输入密码,那很麻烦。
或者让其他人输入密码
您当前的解决方案可以解决症状,而不是解决问题:)而且可能有更好的方法和浪费的方法从字面上将路由器CPU爆破2-8小时达到最大能量。
评论
$ \ begingroup $
路由器重新启动后,它的配置仍然会阻止该站点,因此您的快捷方式将无法使用。
$ \ endgroup $
– Jeff Learman
20年5月13日在17:48
$ \ begingroup $
@JeffLearman Reset!=重新启动。每个路由器都应具有硬件按钮,以完全重置其所有设置。
$ \ endgroup $
–罗比
20-05-13在23:15
$ \ begingroup $
糟糕!对! h!
$ \ endgroup $
– Jeff Learman
20年5月14日在12:50
#3 楼
您可以使用标准的算法来生成随机密钥,而不必使用自定义的加密算法和/或实现,而是只存储部分密钥,然后丢弃其余密钥。要恢复完整的密钥,您将需要蛮力破解钥匙的缺失部分。通过丢弃更多或更少的位,您可以调整暴力破解将花费多长时间。
,以便可以使用标准的暴力破解工具(例如Hashcat),可以存储密钥的哈希(或(仅缺少的部分)以该工具可以理解的格式,并使用掩码填充键的已知部分。
但是要实现问题的基本目标,您可以跳过完全加密,只丢弃部分生成的密码,然后强行使用。
因此设置新密码的过程将变为:
生成随机密码
配置路由器以使用新密码
哈希密码
存储一部分密码,并哈希
并破解它:
强行进行散列,使用掩码填充密码的存储部分
评论
$ \ begingroup $
您很可能会很幸运,并且在第一次尝试时就猜出了密码,这不能保证张贴者至少需要2个小时。
$ \ endgroup $
– b-爵士乐
20-4-20在16:50
$ \ begingroup $
你是对的。也就是说,无论尝试使用哪种加密算法,都始终可以在尝试登录到调制解调器时在第一次尝试时正确猜出该密码。就像我的方案一样,这是非常不可能的,假设您的哈希算法足够快,那么您每秒可以进行数百万次尝试,并相应地调整未知位数。
$ \ endgroup $
–SvdB
20年4月20日在17:16
$ \ begingroup $
如果您最多要延迟8个小时,那么您可能需要我在80种可能的可能性中进行猜测,其中检查一种可能性非常困难以至于要花费6分钟,或者28800000种可能性每个花费一毫秒。在所有情况下,在不到2小时内获胜的概率为25%。我们可以将其变成嵌套的难题:您解决此类难题最多需要8分钟。使用该解决方案,您可以解密消息“恭喜!下一个密码以....开头”,并为您解决下一个难题。嵌套60个这样的谜题。总时间为4小时,而在不到2小时内获胜的可能性不大。
$ \ endgroup $
– Hagen von Eitzen
20年4月20日19:00
#4 楼
您可以存储密码的哈希,然后在想要恢复它时,哈希每个密码组合,直到找到正确的密码。必须选择密码长度和哈希函数,以便花了适当的时间对其进行暴力破解。密码太长或哈希函数太慢,您将无法在合理的时间内处理所有组合。
评论
$ \ begingroup $
该策略有一些缺点:(1)解密时间分布相当均匀,在这种情况下,暴力破解者可能会很幸运,并且比预期的要快得多地解决它。例如,如果他们想要2到8个小时,并且将其调整为最多需要8个小时,那么暴力破解者有25%的机会在不到2个小时的时间内得到它,这非常重要。 (2)这是高度可并行化的,例如允许某人通过雇用第二个工人将时间缩短一半。 (3)哈希冲突可能会产生错误的解决方案,这在这里并不是理想的特性。
$ \ endgroup $
–纳特
20-4-20在18:35
$ \ begingroup $
@Nat是否可以通过使用诸如SHA256之类的加密哈希函数来处理(3)?维基百科说“在这种情况下,找到两个具有相同散列值的不同消息是不可行的”。
$ \ endgroup $
– 5ndG
20-4-20在19:40
$ \ begingroup $
是的,对于许多标准的密码哈希函数而言,冲突不会太普遍。通过使用保证避免在密码空间上发生冲突的算法,可以完全避免该问题。
$ \ endgroup $
–纳特
20-4-20在20:06
#5 楼
考虑到您需要延迟的原因,我是否可以建议使用一种更简单的模拟方法?购买定时的厨房锁(通常用于阻止人们吃零食,饼干或吸烟等)。 )。尽管大多数密码都非常昂贵,但您四处看看都可以找到价格合理的密码。
生成并使用一个太长而难以记住的随机密码(例如20个字符)。
将此密码打印在一张
删除所有数字副本,包括从浏览器的密码管理器中删除。
将折叠后的纸张放入定时厨房定时器中,并将其设置为8小时(或您想要的时间长短)。
这很容易,避免了复杂的编程,可让您在每次需要时重用密码,并解决了您的问题!
如果您准备花费一整天的时间,那么有一种更便宜的方法。将纸张放在信封中,然后邮寄给自己!张贴几个信封,以防丢失(可能发生)。假设您所在国家/地区的邮政服务运作良好。
#6 楼
最简单的方法是找到部分已知的哈希原像。例如,您有一个长度为$ n $符号的密码,您知道其中的$ k $,然后可以通过以下方式调整这些参数,即强行使用密码属于您的时间限制。下面是python示例代码。为了简单起见,密码仅包含数字符号。添加/删除符号将使蛮力时间大约改变10倍。
import hashlib
import itertools
plaintext = "0209485034786395866562345"
init = "0209485034786395866" #the initial part which is known
s = hashlib.sha256()
s.update(bytes(plaintext,'utf-8'))
ciphertext = s.digest()
number_of_symbols = len(plaintext) - len(init)
res = ''
tail = ''
for x in itertools.product(map(str, range(10)), repeat = number_of_symbols):
tail = ''.join(x)
m = hashlib.sha256()
m.update(bytes(init+tail,'utf-8'))
res = m.digest()
if res == ciphertext:
print(init+tail)
break
此方法是由比特币推动的。
#7 楼
您可以使用诸如Keepass之类的密码存储程序。创建存储的密码数据库时,可以指定用于加密数据库的算法的迭代次数。
例如,每次打开或将数据库保存到PC上时,Keepass都可以自动计算延迟1秒所需的数字。
您可以将这些数字乘以10.000,以创建一个密码数据库,该数据库将花费近3个小时的时间打开(并保存它(如果您修改密码)。
#8 楼
在我看来,最简单的方法可能只是对您的密码进行加密-应该完全有可能设置一个脚本来对您的密码进行加密,然后一次又一次地加密一百万次,或者一万亿次,或者任何需要的加密。这种重复的变体已经在某些“商业”加密中使用,但是可能会降低某些特定密码的强度,但这在这里似乎不是问题-您可以使用比Rot13更复杂的任何东西来达到相同的效果。#9 楼
取一个大的随机密码并将其散列。比将整个散列在一起更好,因为它可以导致更一致的破解工作。我平均将单个密码调整了4个小时,因此我们有很大的机会在较短的时间内完成该操作。
如果我们将其分解为几个类似的问题,那么很快我们就不会很幸运。
p.s重置路由器并重新配置它而无需解密密码,可能只需要花费几分钟时间。
#10 楼
如果您的问题实际上是“您想暂时关注一些重要的事情”,那么我认为您应该重新考虑加密方案是否真的是解决原始问题的下一个逻辑步骤。精心地将自己束缚在直筒外套中可能会使您从最初关心的“重要事项”中分散注意力。(在上面的XKCD漫画中,替换为“编写程序” ”中的“设计并实施精心设计的密码策略。”)
理想的做法是服从对问题的自我声明:“您不会分心!”但这说起来容易做起来难。
然后有逻辑:“强制检查信息提要,而我的收件箱实际上使我不那么开心。”
恐惧也是一个很好的激励因素。 “如果我不专注于这个重要的事情,那么我会自欺欺人和/或丢掉工作和/或使我的重要同伴失望……最终使我感到不高兴。”
监督是另一回事:“我会偷偷摸摸,但是这个人在房间里,将为我的过犯作证。”进入办公室,或创建/查找共享工作区。为了节省与汽车相关的成本,同时又能控制自己,我想想象有一个无形的相机可以随时观察我,并做出相应的反应(并为此微笑)。 :您意识到扔掉其他所有东西确实会更快乐;以灵魂的抗议为证据,“重要的事情”真的并不重要。您现在就做那件事-即使在最坏的情况下,您受到他人的审判,并且失去了家庭和妻子。但是,这种分心-现在不再是分心,而是您的优先考虑-仍然使您比这些事物/人更快乐。
评论
那有道理吗?您到底想达到什么目的?路由器应该希望不泄露密码,而加密应该希望保证没有密钥的人(即除您之外的所有人)无法切实地解密密码。所以...您只是在阻碍自己访问无论如何已经合法知道并且拥有密钥的密码。另一方面,您很可能会在这8个小时之内封锁某个网站,如果您做不到的话,这很糟糕...您是故意尝试使用可以在2到8个小时内解密的内容,还是仅会持续至少那么长时间的内容?
我认为这里的实际目标是,OP会暂时专注于一些重要的事情,从而阻止访问分散注意力的站点,并且需要将自己锁定在外,以便他们在查看它们时不会只是解除对其的阻止。
您确实应该更新问题以解释您的目标(即最后两个评论)。很难理解您当前的书写方式(IMO)。
看来这似乎是一个XY问题...如果您的目标是让自己保持一段时间(或随机的)时间,那么完成此任务的方法要简单得多,而不必花一台服务器就可以让服务器持续运行。满负荷。