Scallion : 基于GPU的Onion域名生成工具

Scallion允许你使用OpenCL创建虚构的GPG密钥和.onion地址(用于Tor的 隐藏服务)。它可以在Mono(在Arch Linux上测试)和.NET 3.5+(在Windows 7和Server 2008上测试)上运行。

它目前处于测试阶段,并且正在积极开发中。尽管如此,我们认为它已经可以使用了。预期主要在性能,用户界面和安装简便性方面有所改进,而不是在用于生成密钥的整体算法方面有所改进。

常问问题

以下是一些常见问题及其解答:

  1. 为什么要生成GPG密钥?Scallion用于在Web of Trust的强大集中查找每个32位密钥ID的冲突,这表明32位密钥ID的不安全程度。在DEFCON上一个演讲视频),可以在https://evil32.com/上找到更多信息。
  2. 什么是有效字符?Tor .onion地址使用Base32,由所有字母和2到7(包括2和7)组成。它们不区分大小写。GPG指纹使用十六进制,由数字0-9和字母AF组成。
  3. 您可以使用比特币ASIC(例如Jalapeno,KnC)来加速此过程吗?可悲的是没有。尽管Scallion使用的过程在概念上是相似的(增加随机数并检查哈希),但细节有所不同(SHA-1与比特币的双SHA-256)。此外,比特币ASIC之所以能如此之快,是因为它们非常适合比特币挖矿应用。例如,这是数据表对于CoinCraft A-1,这是一种从未问世的ASIC,但可能表示通用方法。微控制器以比特币块的最后128位,前几位的哈希中间状态,目标难度以及要尝试的最大随机数的形式发送工作。ASIC选择插入随机数的位置,然后选择满足散列的块。Scallion必须在其他位置插入随机数,并且它检查模式匹配,而不仅仅是“低于XXXX”。
  4. 如何使用多个设备?运行多个Scallion实例。😄葱的搜索是概率性的,因此您不会重复使用第二个设备。真正的多设备支持不是很困难,但也不会增加太多。我已经在tmuxscreen中运行了多个葱实例,并取得了巨大的成功。您只要找到一个模式就可以手动中止所有作业(或编写一个shell脚本来监视输出文件,并在看到结果时将其全部杀死)。

依存关系

  • OpenCL和相关的驱动程序已安装和配置。请参阅您的发行版文档。
  • OpenSSL。对于Windows,包含预构建的x86 DLL
  • 仅在Windows上,VC ++ Redistributable 2008

编译Linux

先决条件

  • 为您的Linux发行版获取最新的Mono:http : //www.mono-project.com/download/
  • 安装通用依赖项: sudo apt-get update sudo apt-get install libssl-dev mono-devel
  • AMD /开源构建 sudo apt-get install ocl-icd-opencl-dev
  • Nvidia构建 sudo apt-get install nvidia-opencl-dev nvidia-opencl-icd
  • 最后 msbuild scallion.sln

Docker Linux(仅限nvidia GPU)

建立视窗

  • 在VS Express中为Desktop 2012打开’scallion.sln’
  • 构建解决方案后,我在调试模式下进行了所有操作。

多模式散列

Scallion支持通过原始正则表达式语法查找多个模式中的一个或多个。仅支持字符类(例如[abcd])。该.字符代表任意字符。洋葱地址始终为16个字符,GPG指纹始终为40个字符。您可以通过$在比赛的末尾放置一个后缀(例如DEAD$)。最后,管道语法(例如pattern1|pattern2)可用于查找多个模式。搜索多重模式(在合理的范围内)不会显着降低速度。许多正则表达式将在GPU上产生单个模式,并且不会降低速度。

带有示例的一些用例:

  • 生成前缀后跟数字以提高可读性: mono scallion.exe prefix[234567]
  • 一次搜索多个模式(nb -c导致葱即使被击中也能继续生成) mono scallion.exe -c prefix scallion hashes mono scallion.exe -c "prefix|scallion|hashes"
  • 搜索后缀“ badbeef” mono scallion.exe .........badbeef mono scallion.exe --gpg badbeef$ # Generate GPG key
  • 复杂的自我说明示例: mono scallion.exe "suffixa$|suffixb$|prefixa|prefixb|a.suffix$|a.test.$"

它是如何工作的?

在较高的层次上,Scallion的工作原理如下:

  • 在CPU上使用OpenSSL生成RSA密钥
  • 将密钥发送到GPU
  • 增加密钥的公开指数
  • 哈希键
  • 如果哈希密钥不是部分冲突,请转到步骤3
  • 如果密钥没有通过PKCS#1 v2.1建议的完整性检查(在CPU上检查),请转到步骤3
  • 带有部分碰撞的全新钥匙!

上面描述了基本算法。速度/性能是GPU和CPU上大规模并行化的结果。

速度/性能

重要的是,要认识到Scallion预先执行的是概率性搜索。实际时间可能与预测的时间有很大的差异。

初始RSA密钥生成由CPU完成。ivybridge i7可以使用单个内核每秒生成51个密钥。每个密钥可以提供价值1千兆ah的指数来挖掘,并且像样的CPU可以跟上目前实现的多个GPU。

SHA1哈希在GPU上完成。下面是我们测试过的多个GPU的哈希率(按制造商分组并按功率排序):

显卡速度
英特尔i7-2620M9.9 MH /秒
英特尔i5-5200U118 MH /秒
NVIDIA GT 52038.7 MH /秒
NVIDIA Quadro K2000M90 MH /秒
NVIDIA GTS 250128 MH /秒
NVIDIA GTS 450144 MH /秒
NVIDIA GTX 670480 MH /秒
NVIDIA GTX 9702350 MH /秒
NVIDIA GTX 9803260 MH /秒
NVIDIA GTX 1050(M)1400 MH /秒
NVIDIA GTX 10704140 MH /秒
NVIDIA GTX 1070 TI5100 MH /秒
NVIDIA GTX TITAN X4412 MH /秒
NVIDIA GTX 10805760 MH /秒
NVIDIA Tesla V10011646 MH /秒
AMD A8-7600 APU120 MH /秒
AMD Radeon HD5770520 MH /秒
AMD Radeon HD6850600 MH /秒
AMD Radeon RX 460840 MH /秒
AMD Radeon RX 470957 MH /秒
AMD Radeon R9 380X2058 MH /秒
AMD FirePro W91002566 MH /秒
AMD Radeon RX 4802700 MH /秒
AMD Radeon RX 5803180 MH /秒
AMD Radeon R9纳米3325 MH /秒
AMD Vega Frontier版7119 MH /秒

MH / s =每秒百万个哈希

值得注意的是,英特尔已经为其处理器发布了OpenCL驱动程序,可以在CPU上找到短暂的冲突。

要计算给定的部分碰撞所需的秒数(平均),请使用以下公式:

类型预计时间
GPG密钥2 ^(4 * length-1)/哈希速度
.onion地址2 ^(5 * length-1)/哈希速度

例如,在我的nVidia Quadro K2000M上,我看到的速度约为90 MH / s。以这种速度,我可以在大约1h 41m中生成一个八个字符的.onion前缀2^(5*8-1)/90 million = 101 minutes

工作小组人数

Scallion 将默认使用您的设备报告的首选工作群组大小。这是一个合理的默认值,但尝试使用工作群组可能会提高性能。

安全

Scallion生成的密钥与shallot生成的密钥非常相似。它们有异常大的公共指数,但它们通过openssl的RSA_check_key函数通过PKCS #1 v2.1推荐的全套安全检查。Scallion支持多种RSA密钥大小,有1024b、2048b和4096b的优化内核。其他的密钥大小也可以使用,但还没有测试过。

https://kalilinuxtutorials.com/scallion/
https://www.anwangli.com/257.html

作者: admin

Leave a Reply

Your email address will not be published. Required fields are marked *

联系我们

联系我们

邮箱: [email protected]

返回顶部