你是否有过网上刷卡购物的经历?你是否知道,素数是守护着你的钱财不被他人盗取的幕后英雄?
以前的密码存在什么问题?
假定我们用下面的方法传送信用卡号。首先,网上会出现加密提示:“请把卡号的每位数加2”。例如,卡号为17852153,则你需要输入“39074375”这组数字,并发送给信用卡公司。就算39074375这组数字被盗取了,因为它不是您真正的卡号,别人也无法恶意使用您的信用卡。
但是,这种方法具有极大的风险。假如有人不仅盗取了39074375这组数字,甚至连“把每位数字加2”的加密方法也盗取了的话,你的卡号就会泄露。
RSA密码公开了加密方法!?
如果使用由素数组成的RSA密码的话,你就不用担心卡号被窃取了。就算有人窃取了加密规则与加密密钥,还是几乎不可能解开密码。
假如使用RSA密码,通过网络向用户发送“11111111111”等大数(称为公开密钥,下面将具体介绍其加密方法)。用户可使用公钥加密算法,把信用卡号加密后传送给对方。
其实,11111111111是21649与513239这2个素数的乘积。只有知道这一信息的人才能破译该密码(21649与513239是秘密密钥)。
因为运营商知道11111111111的约数是21649与513239这两个素数,所以可以用它们解开密码,最终获悉信用卡号。但是,对于只知道“11111111111”这一数字的第三者来说,仅靠自己的力量几乎不可能算出11111111111的约数是多少,也就无从下手去破译密码了(下面将详细介绍)。实际使用RSA密码时,其公开密钥往往是几百位长的庞大素数乘积,找到它的约数是一件极其困难的事情。
RSA密码的公开密钥可在网络上对外公开。通过公开密钥,不仅可以保证密码的安全性,用户还可以自由方便地向运营商发送加密信息。可以说,互联网交易的安全性是建立在“分解出大整数的约数是极其困难的问题”这一基础上的。
RSA密码体制
我们来了解一下使用RSA密码向网购运营商发送信用卡号的体制。为了便于计算,我们暂且使用一个较小的数字。
我们用图中的公开密钥“55”来代替上文中提到的公开密钥“11111111111”。实际上,除了上文所提到的素数乘积之外,还有一个公开密钥,这里为“3”。蓝色数字表示公开密钥。同时,我们用55的约数“11与5”来代替上文中的秘密密钥“21649与513239”。红色数字为秘密密钥或由秘密密钥所推导出的数。在这个例子中,我们可以非常简单地找到约数。但是,在实际应用中,公开密钥都是几百位长的素数乘积,找到它的约数是一件极其困难的事情。
(本文发表于《科学世界》2013年第6期)
请 登录 发表评论