利用区块链实现不可变且安全的 IP 地址保护
1. IP 地址相关基础信息
1.1 发送者声誉
IP 地址的评级基于从该地址发送的电子邮件以及该地址的其他活动,这被称为“发送者声誉”。常见的获取发送者评分的公司如 SenderScore.org 。该评分衡量电子邮件程序的健康状况,能让邮箱了解来自这些 IP 地址的邮件情况。
分配发送者评分时考虑的因素包括:
- 是否在垃圾邮件投诉黑名单中
- 是否向未知用户发送邮件
- 是否在白名单中
- 订阅者参与度
- 向垃圾邮件陷阱发送邮件的数量
IP 声誉需要时间来积累,初始时地址会受到高度怀疑,随着时间推移进行可信通信可降低怀疑度。网络上域名的分类(如行业、教育、金融、约会或赌博)也会影响 IP 声誉评分。
清理 IP 地址和恢复声誉评分需要:
- 清理邮件列表,移除所有退回的邮件
- 移除与 IP 声誉相关的所有垃圾邮件投诉
- 向新的安全列表发送稳定的内容
电子邮件声誉基于电子邮件服务器,而网络声誉基于整个域名。电子邮件网络和互联网服务提供商(ISP)都可以查询发送者评分,以确定是否将某个地址列入黑名单。IP 声誉和域名声誉也有所不同,IP 声誉可通过维护静态地址更好地控制,而域名声誉方面,网络更看重域名品牌而非 IP 地址本身。
1.2 动态和静态 IP 地址
IP 地址块分配给 ISP,特定 ISP 负责分配不同的 IP 地址。静态地址随时间保持不变,动态地址会因一些小变化(如重启路由器)而改变。动态和静态 IP 地址各有优缺点,如下表所示:
| 类型 | 优点 | 缺点 |
| — | — | — |
| 动态 | 自动配置、设备数量无限制、无额外费用 | 停机时间更多、地理位置定位不准确、远程访问受限 |
| 静态 | 简单的服务器托管、方便的远程访问、可靠的通信、轻松的文件传输 | 成本更高、设置复杂、存在潜在安全弱点 |
1.3 互联网协议类型
互联网协议有 IPv4 和 IPv6 两种。IPv4 于 1983 年部署,IPv6 于 1999 年开始使用。IP 地址是二进制数字,但为方便人类阅读可存储为文本。例如,32 位的 IPv4 地址以十进制形式写成四个用点分隔的数字,每个数字范围是 0 到 255,如 1.160.10.240 。IPv6 地址是 128 位,以十六进制形式写成并用冒号分隔,如 3ffe:1900:4545:3:200:f8ff:fe21:67cf 。
2. 相关工作
- Fukushima 等人讨论了如何使用 IP 地址识别高风险恶意行为者,但未讨论标记为恶意的 IP 地址分配给新用户的潜在影响。
- Chalaemwongwan 等人探讨了泰国如何使用区块链数字 ID 提供安全的政府身份识别系统,但未讨论将数字 ID 用于在区块链上存储 IP 数据的情况。
- Bocu 讨论了从 IP 地址发送垃圾邮件对该 IP 地址声誉的影响,但未提出去中心化解决方案,也未讨论声誉对未来 IP 地址接收者的影响。
3. 提出的解决方案
3.1 区块链的类型及优势
区块链网络可以保护组织的身份,抵御中央 IT 服务的入侵。将可识别信息放在区块链上,组织可以获得可靠且不可变的解决方案来记录其可识别信息。
区块链有公共和私有两种类型。公共区块链允许任何人加入网络,私有区块链仅对授权实体开放,由单个实体(如私人公司)控制,其优点是节点数量有限,使交易成本更低。此外,区块链也可以是公共和私有区块链的混合体。
区块链在安全方面有诸多好处:
- 去中心化
- 提供验证
- 极难被黑客攻击
- 可以是公共或私有的
每个计算机(节点)都有一份账本副本,多个节点出现故障时网络仍可正常运行。数据得到备份,保持不变,并提供可靠的独立验证。区块链上的数据是去中心化、加密的,并由网络进行交叉检查,有潜力提高数据完整性和数字身份的安全性。区块链还可以通过使用主节点和数字 ID 来保障数据安全。
3.2 区块链防止身份盗窃和欺诈的方式
3.2.1 主节点验证用户身份
主节点可以充当“中介和担保人”,但运行主节点成本较高,不同加密货币对维护主节点有不同的准则。主节点可以执行工作量证明中其他矿工无法执行的任务,有助于保护身份。例如 Dash 服务是最早使用主节点的服务之一。
主节点的好处包括:
- 独立验证
- 记录未花费的交易输出
- 允许用户进行匿名支付
- 去中心化治理
主节点可以完全负责批准交易,如 Dash 网络中的 InstaSend 服务。每个主节点都保存着区块链的完整记录,区块链上的政治或技术决策可以进行投票。为避免 Sybil 攻击(集中力量创建许多虚假账户),主节点需要拥有超过 1000 Dash 。一些使用主节点的交易所如 Block Net 和 Exscudo 。Block Net 实现了第二层区块链互操作性,确保网络上交易和交换的安全,用户对个人数据拥有自主权。Exscudo 将中心化和去中心化相结合,支持使用区块链保障资金安全,其中心化交易所的访问层是去中心化的区块链。
3.2.2 数字 ID 的使用
数字 ID 附加到每笔交易上,能为区块链网络上的交易带来数字和法律确定性。数字 ID 可以分配给单个用户,适用于单个区块链或多个区块链的互操作系统。它可以在转移资金后无需更新身份,还能让私有区块链(如大型 ISP 的区块链)向公共区块链开放,同时保护用户身份。在提出的模型中,某人的国家身份信息通过区块链存储在手机上,只有高级官员才能查看区块链上的信息,且每次查看信息的交易都会记录在分布式账本上。
4. 实现过程
4.1 系统概述
IP 地址可以轻松查找,其位置、ISP、组织和地址类型等信息可以得到确认。IP 地址、ISP、组织、国家、州和城市等信息记录在网络上,可以从使用 Solidity 添加的 IP 地址列表中轻松检索。所有信息都与合约地址相关联存储,通过分配的 ID 可以一次性或按属性检索这些信息。
4.2 代码实现
为了获取 IP 地址信息,在 Windows 操作系统的命令提示符中运行 nslookup 命令查询了 10 个不同的网站。
编写了一个模板 Ownable 合约,只有合约所有者才能向合约写入数据。合约所有权可以通过 msg.sender(合约部署者)实例化,有转移所有权、放弃所有权、检查账户所有权的功能,以及一个名为 onlyOwner 的修饰符,可限制子合约中函数的使用权限。
// Ownable 合约
contract Ownable {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
_owner = msg.sender;
emit OwnershipTransferred(address(0), _owner);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == msg.sender, "Ownable: caller is not the owner");
_;
}
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
}
// IPAddresses 合约
contract IPAddresses is Ownable {
event Message(string message);
struct IPData {
string ipAddress;
string internetServiceProvider;
string organization;
string addressType;
string country;
string state;
string city;
}
IPData[] public ips;
function storeIPInfo(string memory ip, string memory intsp, string memory org, string memory addrType, string memory country, string memory state, string memory city) public onlyOwner {
IPData memory newIP = IPData(ip, intsp, org, addrType, country, state, city);
ips.push(newIP);
emit Message("IP data added successfully");
}
function getIPAddress(uint256 index) public view returns (string memory, string memory, string memory, string memory, string memory, string memory, string memory) {
IPData memory ip = ips[index];
return (ip.ipAddress, ip.internetServiceProvider, ip.organization, ip.addressType, ip.country, ip.state, ip.city);
}
// 其他获取单个字符串的函数
function getISP(uint256 index) public view returns (string memory) {
return ips[index].internetServiceProvider;
}
function getOrganization(uint256 index) public view returns (string memory) {
return ips[index].organization;
}
// 其他函数...
}
4.3 实验证据和分析
选择了 10 个不同的随机但常见的 URL,使用 nslookup 命令查找它们的 IP 地址,并通过 whatismyipaddress.com 收集每个 IP 地址的数据,包括 IP 地址、ISP、组织、地址类型、国家、州和城市。
将合约从 Remix(一个用于 Solidity 的在线集成开发环境)部署到 Ropsten 网络,使用 Metamask(谷歌浏览器插件)进行部署。部署后,在 ropsten.etherscan.io 上验证合约。验证通过后,使用 ropsten.etherscan.io 上的输入字段将 10 组 IP 地址数据写入合约。
通过 storeIPInfo() 函数将数据添加到区块链后,可以通过函数调用访问所有数据,也可以通过 GetIPData() 函数一次性获取所有数据。每个 IP 地址的数据通过按添加顺序分配的整数 ID 进行访问。
实验结果表明,区块链可以存储 IP 地址信息,并通过 Solidity 合约进行访问。这些信息永久安全存储,可通过合约访问。未来,这个过程可以自动化,更多的个人和企业可以安全地保存和访问在线资源数据。还可以使用 Web 图形用户界面以更有条理的方式显示信息。
5. 结论
当 IP 地址重新分配给新用户时,前用户形成的声誉仍然与该 IP 地址相关。集中式数据库和数据的集中控制在数据安全方面存在诸多挑战。因此,区块链是存储 IP 地址信息、防止 IP 地址被欺诈使用和保护其过往使用记录的有力解决方案。通过主节点和数字 ID 的使用,网络声誉可以更加安全和不可变。如实验所示,Solidity 合约提供了一种防篡改且可访问的方式来存储这些数据。总之,区块链为更安全地存储 IP 地址信息提供了途径,并展示了一种实用的存储方法。
6. 实验流程总结
6.1 数据收集
- 选择 10 个不同的随机但常见的 URL。
-
在 Windows 操作系统的命令提示符中运行
nslookup命令,查找这些 URL 的 IP 地址。 -
通过
whatismyipaddress.com收集每个 IP 地址的数据,包括 IP 地址、ISP、组织、地址类型、国家、州和城市。
6.2 合约部署与验证
- 使用 Remix(一个用于 Solidity 的在线集成开发环境)编写合约。
- 使用 Metamask(谷歌浏览器插件)将合约部署到 Ropsten 网络。
-
在
ropsten.etherscan.io上验证合约。
6.3 数据写入与访问
-
验证通过后,使用
ropsten.etherscan.io上的输入字段将 10 组 IP 地址数据通过storeIPInfo()函数写入合约。 -
数据添加到区块链后,可以通过函数调用访问所有数据,也可以通过
GetIPData()函数一次性获取所有数据。每个 IP 地址的数据通过按添加顺序分配的整数 ID 进行访问。
以下是实验流程的 mermaid 流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(选择 10 个 URL):::process --> B(运行 nslookup 命令查找 IP 地址):::process
B --> C(通过 whatismyipaddress.com 收集数据):::process
C --> D(使用 Remix 编写合约):::process
D --> E(使用 Metamask 部署合约到 Ropsten 网络):::process
E --> F(在 ropsten.etherscan.io 上验证合约):::process
F --> G(使用 ropsten.etherscan.io 输入字段写入数据):::process
G --> H(通过函数调用访问数据):::process
7. 未来展望
7.1 自动化处理
目前的数据录入过程是手动的,未来可以实现自动化。通过编写脚本定时从在线资源(如
whatismyipaddress.com
)获取 IP 地址数据,并自动将其添加到区块链中。这样可以提高效率,减少人工操作的错误,同时能够及时更新 IP 地址信息。
7.2 多区块链支持
当前的实验主要基于 Ropsten 网络,未来可以将数据直接添加到以太坊主网或其他区块链网络中。不同的区块链网络具有不同的特点和优势,支持多区块链可以增加数据的存储选择和安全性。
7.3 可视化展示
使用 Web 图形用户界面(GUI)以更直观的方式展示 IP 地址数据。可以创建表格、图表等形式,让用户更方便地查看和分析数据。例如,将不同国家、组织的 IP 地址数量进行统计并以柱状图展示。
7.4 数据共享与合作
可以建立一个基于区块链的 IP 地址数据共享平台,多个组织和个人可以在平台上共享和交换 IP 地址信息。通过智能合约实现数据的授权访问和共享规则,确保数据的安全性和隐私性。
8. 总结
8.1 核心要点回顾
- IP 地址的声誉对其使用至关重要,包括发送者声誉的评估因素以及 IP 声誉和域名声誉的区别。
- 动态和静态 IP 地址各有优缺点,互联网协议有 IPv4 和 IPv6 两种类型。
- 区块链具有去中心化、验证性强、安全等优势,可以用于保护 IP 地址信息,防止身份盗窃和欺诈。
- 通过主节点和数字 ID 可以进一步增强区块链的安全性。
- 实验证明了可以使用 Solidity 合约将 IP 地址信息存储在区块链上,并实现数据的安全访问。
8.2 重要意义
随着互联网的发展,IP 地址的安全和管理变得越来越重要。传统的集中式数据库在数据安全和完整性方面存在诸多问题,而区块链提供了一种可靠的解决方案。通过区块链存储 IP 地址信息,可以确保数据的不可篡改和可追溯性,为网络安全和身份验证提供有力支持。同时,实验展示的方法具有一定的实用性和可扩展性,为未来的 IP 地址管理和应用提供了新的思路。
8.3 行动呼吁
希望更多的开发者、企业和研究人员关注区块链在 IP 地址保护领域的应用。可以进一步探索和优化实验中的方法,开发更多的工具和应用,推动区块链技术在网络安全领域的广泛应用,共同构建一个更加安全、可信的互联网环境。
总之,利用区块链实现不可变且安全的 IP 地址保护是一个具有重要意义和广阔前景的研究方向,值得我们持续关注和深入探索。
超级会员免费看
32

被折叠的 条评论
为什么被折叠?



