简体   繁体   English

一个私钥可以与几个公钥关联吗?

[英]Can one private key be associated with several public keys?

Ok, so my crpto lecturer in Uni posed this question at the end of the RSA key generation lecture as a brain teaser. 好的,所以我在Uni的crpto讲师在RSA密钥生成讲义的结尾提出了这个问题,作为一个脑筋急转弯。

I have been thinking about this and I think I have come up with a way ( I am aware its not practical and very vulnerable - But I would love for you guys to punch holes through it ): 我一直在考虑这个问题,并且我想出了一种方法(我知道它不切实际并且非常脆弱-但我希望你们能对此有所帮助):

  • Use RSA to generate public and private key pair. 使用RSA生成公钥和私钥对。

  • Make an additive hash function that taken in any input and adds the 制作一个可加进任何输入的加法哈希函数并添加
    ascii value of each character and gives that as an output. 每个字符的ascii值,并将其作为输出。 ( I am aware additive hash has horrible distribution for ex ABC , BAC , ACB all have the same hash output -- but theoretically this can be used as an advantage to solve our problem ) (我知道附加哈希在前ABC,BAC,ACB上都有可怕的分布,都具有相同的哈希输出-但是从理论上讲,这可以用来解决我们的问题)

  • Now take your public key and generate several possible keys by jumbling up the on and off bits. 现在,使用公共密钥并通过增大开和关位来生成几个可能的密钥。

  • Give these jumbled up keys to potential customers. 将这些混乱的钥匙交给潜在客户。

  • Put our hash function on the server. 将我们的哈希函数放在服务器上。

  • When customer puts in his jumbled up public key - Hash function 当客户输入混乱的公钥时-哈希函数
    calculates the hash - which should be similar to original public key generated by RSA. 计算哈希-应该类似于RSA生成的原始公钥。 Customer gets access. 客户获得访问权限。

Once again I am aware that this is very vulnerable and terrible. 我再次意识到这是非常脆弱和可怕的。 It cant be used in the real world. 它不能在现实世界中使用。 But does it answer the question my lecturer posed ? 但这是否回答了我的讲师提出的问题?

EDIT: 编辑:

Guys I am sorry for the confusion. 伙计们,我很困惑。 This question has nothing to do with collisions and expoiting the maths ( Those are definitely valid ways to do that - but they weren't what my lecturer was referring too - they were discussed in the lecture itself. ). 这个问题与碰撞和数学无关(这些绝对是实现此目的的有效方法-但它们也不是我的讲师所指的-在课程本身中进行了讨论。)。 The way my lecturer asked this question was - " come up with ways to make several public keys related to a single private key - nevermind how vulnerable your solution is ". 我的讲师问这个问题的方式是:“想出一种方法来制作与单个私钥相关的多个公钥,请不要介意您的解决方案有多脆弱。”

I think I know what your lecturer was getting at. 我想我知道您的讲师正在讲什么。 I'm not going to give you the full answer but I'll lead you along a few steps. 我不会给您完整的答案,但是我将引导您进行一些操作。 Obviously your lecturer wants you to study the math of RSA. 显然,您的讲师希望您学习RSA的数学。 In particular, look at the public and private exponents and how they are related. 特别要看一下公共和私人指数及其之间的关系。 Now, suppose you have an RSA modulus N, and RSA public exponent e, and an RSA private exponent d. 现在,假设您有一个RSA模数N,一个RSA公共指数e和一个RSA私有指数d。 Is there another exponent, say e + x, that works exactly the same way as e in the RSA math? 是否有另一个指数,例如e + x,与RSA数学中的e完全相同? The answer is yes, there is. 答案是肯定的。 In fact, there is an entire family of such exponents. 实际上,有这样一个指数的整个家族。 Now you have to discover what this x value is, and how it related to the math of RSA. 现在,您必须发现x值是什么,以及它与RSA的数学关系如何。

I don't want to spoil too much, but I think the answer your lecturer was waiting for is more related to the mathematical properties of finite groups. 我不想破坏太多,但我认为您的讲师正在等待的答案与有限群的数学性质有关。 Maybe see the definition of textbook RSA and see if you can find another public key that matches a given private key. 也许可以看到RSA教科书的定义,看看是否可以找到与给定私钥匹配的另一个公钥。 Fermat's Little Theorem might also be interesting. 费马小定理可能也很有趣。

在查找有限组时,您想阅读有关等价类的信息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 公钥和私钥API - Public and private API keys 如何使用公钥和私钥保护小型php API - How to secure a small php api with public and private key 处理基于公钥/私钥的API的空请求主体 - Handling empty request bodies for public/private key-based API 生成包含一个键和与该键关联的两个值的多维哈希 - generate a multidimensional hash which contains one key and two values associated with that key PHP的password_hash():公共一次性盐与私人固定盐 - PHP's password_hash(): public one-time salt vs. private fixed salt 如何通过一个键对哈希数组进行分组以及合并内部键和数组 - How to group array of hashes by one key and merge inner keys and arrays 有人可以详细说明其公钥和签名包含在区块链的交易中吗? - Can somebody elaborate whose public key and signature is included in a transcation in blockchain? 将多个值添加到 Ruby 中的键以及仅删除关联的一个值 - Adding multiple values to a key in Ruby as well as delete just one value associated 有关NDB密钥的几个问题 - Several questions about NDB keys 如何将多个哈希值合并到Perl中的一个哈希中? - How can I merge several hashes into one hash in Perl?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM