对用户信息使用客户端加密的好处
Benefits of using client-side encryption for user information
最近,我发现一个网站,其中用户的 phone 号码部分可见,您必须单击 link 才能显示其余部分。 link 有一个加密的 ID,javascript 函数用于提取 phone 号码。
这可能看起来很有趣,但我看不出使用这样的东西有什么好处,因为我可以轻松地调用该函数并提取 phone 数字。此功能是否仅用于防止搜索引擎将用户信息编入索引?
如果你很好奇,这就是函数:
function d(num){
num=num.substring(2);
var c=parseInt(num[0]);
var n="";
var i=c+1;
while(i<num.length)
{
n+=num[i];
c=parseInt(num[i+1]);
i+=c+1;
i++;
}
return n;
}
link 的 ID 如下所示:X_31320224932121817272269264130*********
是的,这是混淆而不是加密。它是完全独立的这一事实使得它不可能是除此以外的任何东西。
首先,它似乎没有使用任何显式密钥。将看似对称的密钥集成到数据中并不能确保数据安全——即使它确实使用了真正的密码,如 AES。
其次,这似乎不符合 Kerckhoff's principle,其中规定加密方案应该是安全的,即使攻击者知道该方案。由于任何人都可以在没有密钥的情况下执行该功能并获得正确的结果,这显然违反了该原则。你当然可以争辩说,如果没有密钥,该方案将永远违反这一原则。
我唯一能想到的就是防止搜索引擎使用的(简单的)网络爬虫。
最近,我发现一个网站,其中用户的 phone 号码部分可见,您必须单击 link 才能显示其余部分。 link 有一个加密的 ID,javascript 函数用于提取 phone 号码。
这可能看起来很有趣,但我看不出使用这样的东西有什么好处,因为我可以轻松地调用该函数并提取 phone 数字。此功能是否仅用于防止搜索引擎将用户信息编入索引?
如果你很好奇,这就是函数:
function d(num){
num=num.substring(2);
var c=parseInt(num[0]);
var n="";
var i=c+1;
while(i<num.length)
{
n+=num[i];
c=parseInt(num[i+1]);
i+=c+1;
i++;
}
return n;
}
link 的 ID 如下所示:X_31320224932121817272269264130*********
是的,这是混淆而不是加密。它是完全独立的这一事实使得它不可能是除此以外的任何东西。
首先,它似乎没有使用任何显式密钥。将看似对称的密钥集成到数据中并不能确保数据安全——即使它确实使用了真正的密码,如 AES。
其次,这似乎不符合 Kerckhoff's principle,其中规定加密方案应该是安全的,即使攻击者知道该方案。由于任何人都可以在没有密钥的情况下执行该功能并获得正确的结果,这显然违反了该原则。你当然可以争辩说,如果没有密钥,该方案将永远违反这一原则。
我唯一能想到的就是防止搜索引擎使用的(简单的)网络爬虫。