区块链钱包安全汇总
Posted 安全大哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链钱包安全汇总相关的知识,希望对你有一定的参考价值。
一:钱包发生过那些安全事件?\\
1、“私钥丢失”
部分用户使用钱包时,会习惯性将私钥截图保存在手机,但当手机出现了丢失或者损坏,助记词可能永远无法复原;部分用户有一定安全意识,会将助记词手写一份,但当该份助记词丢失时,助记词也可能无法复原。
2、“伪装客服骗取私钥”
攻击者伪装为客户潜伏在社群中,当有用户出现转账或者提取收益求助时,攻击者及时联系用户协助其处理,通过耐心的解答,发送伪装成去中心化网桥的工单系统,让用户输入助记词解决其交易异常,攻击者拿到私钥后盗取资产,拉黑用户。
3、“恶意软件”
黑客以某些加密货币资源的名义,将应用程序添加到Google Play商店,或者通过网络钓鱼的方式,欺骗用户下载该应用程序,该应用程序实则为一个恶意软件,当下载、启动该应用程序后,攻击者即可控制受害者电话或者手机,然后允许攻击者窃取帐户凭据,私钥等更多信息,导致钱包被盗。
4、“钱包升级”
攻击者通过社会工程学收集到用户邮箱,确定用户经常使用的钱包app,对其定向攻击,发送伪造的官方app升级邮件,下载后使用与官方无异,但是会收集用户信息,私钥助记词等。
5、“二维码盗币事件”
攻击者将预先准备好的恶意二维码发送给用户,攻击者诱导用户使用钱包扫描二维码进行转账,用户输入指定金额后确认转账交易(实际运行的是用户approve授权给攻击者USDT的过程),随后用户钱包大量USDT丢失(攻击者调用TransferFrom转走用户USDT)。
6、“在线云平台账号被盗”
多数人将秘钥/助记词通过截屏、拍照或者拷贝粘贴,然后同步保存在云端,例如通过邮件、QQ、微信、网盘、笔记等进行传输或存储,攻击者会通过攻击这些云端平台账号,从而盗取私钥/助记词。
7、“获取空投盗币事件”
攻击者伪造成交易平台或者DeFi/NFT项目,攻击者通过媒体社群发起可明显薅羊毛的空投活动,攻击者诱导用户使用钱包扫描二维码或者签署交易领取空投, 随后受害者账户大量资金被转走。(攻击者在空投交易中写授权,使得受害者将资金授权给攻击者预先写好的地址)
8、“网络钓鱼窃取私钥”
攻击者通过克隆一个知名区块链项目,通过精心设计成同原始真实项目一模一样的假项目钓鱼网站,对于精心设计的这个钓鱼网站,普通用户无法辨别真假,通过各种渠道发布这些信息,以假乱真,这样即可轻易引诱用户访问钓鱼网站并引导他们输入帐户密码或密钥,盗取用户钱包中数字资产。
9、“其他钓鱼攻击”
攻击者利用各种热点,比如nft发售、nft预售、合约升级,项目更换网站、特价nft、中签等为由,发送钓鱼邮件,内含精心模仿的官方网站、预售平台,app下载链接等,用户稍不留意就会掉入攻击陷阱。
二:如何保护自己的钱包安全?
私钥安全存储方法
-
私钥尽量手抄,并且需要有私钥备份。
-
确保助记词的准确性,多次校验。
-
不要截屏、拍照、拷贝、粘贴,都会将数据同步到云端。
-
不要使用邮件传输或存储私钥。
-
不要将私钥导入未知的第三方网站。
-
不要在被偷看,监控状态下显示私钥,输入密码等。
-
不要将私钥发送给任何人。
-
不要使用社交网络传递,如:QQ,微信,信息根本不安全。
-
不要明文存储在电脑,电脑可能有木马等软件。
-
大额资产建议用硬件钱包。
资金转存方式
-
转账时确认转移地址和所在链是否正确
-
分批次转移资金,小额资金转移确认收到后,再正常转移资金
-
地址转账时可能出现字符错误,建议使用二维码转账
-
大额资产与常用资产分类, 大额资产存入硬件钱包,小额常用资产存入在线钱包。
安全意识
-
不要点击来源不明的网站,一定要对官网进行反复验证
-
浏览器及时更新,使用人数较多的钱包插件,极少使用的插件可能会读取数据
-
手机电脑安全更新,及时进行数据备份,不要进行越狱及root破解
-
在官方渠道下载正版软体,手机做好备份预案
-
明确交易签名内容,避免资金被莫名授权和转移
-
选择大的邮箱厂商Gmail、outlook等,陌生邮件不要点击,不要轻易打开可疑的链接和附件
-
你的熟人可能被攻击 比如TG让你发资金或者链接
-
切勿相信一切以索取私钥为理由的空投代币行为。
-
如果钱包私钥曾泄露需要立即停止使用该钱包
-
使用独一无二的账户密码,使用密码管理器软件比如1password、lastpass。
-
尽可能不要连接公共Wi-Fi。
-
避免让别人知道你的生物纹(指纹,眼纹,声纹,脸纹等等)。
区块链钱包之创建钱包地址
(一)区块链钱包之生成助记词
(二)区块链钱包之创建钱包地址
(三)区块链钱包之加密算法简介
(四)区块链钱包之创建比特离线交易(BTC交易)
(五)区块链钱包之创建以太坊交易(ETH交易)
区块链钱包分为很多种,主要分为比特系和以太系,他们的生成方式不同,这里主要介绍这两种钱包的地址创建方式。
钱包创建流程
生成钱包地址BTC和ETH分别有自己的方法,也就是有自己的库。
BTC 系列
导入Gradle依赖
api group: 'org.bitcoinj', name: 'bitcoinj-core', version: '0.15.10'
public static DeterministicKeyChain generateRootKey(List<String> keywords) {
DeterministicSeed seed = new DeterministicSeed(keyWords, null, "", 0);
return DeterministicKeyChain.builder().seed(seed).build();
}
public static DeterministicKey generateKeyByPath(DeterministicKeyChain chain, String path) {
List<ChildNumber> childNumbers = HDUtils.parsePath(path);
return chain.getKeyByPath(childNumbers, true);
}
/*
注意btc和btctest的params不同,这里主要区别是Params里的addressHeader不同,
btc的addressHeader为0,btctest的addressHeader为111
*/
private static String generateBtcAddress(DeterministicKey key, String type) {
NetworkParameters params = null;
if("btc".equals(type)) {
params = MainNetParams.get();
} else if("btctest".equals(type)) {
params = TestNet3Params.get();
}
Address address = Address.fromKey(params, key, Script.ScriptType.P2PKH);
if (address instanceof LegacyAddress) {
LegacyAddress legacyAddress = (LegacyAddress) address;
String addressStr = legacyAddress.toBase58();
return addressStr;
}
return "";
}
ETH 系列
导入Gradle依赖
api 'org.web3j:core:4.6.0-android'
// key生成方式和上面一样
private static String generateEthAddress(DeterministicKey key) {
Credentials credentials = Credentials.create(key.getPrivateKeyAsHex());
String address = credentials.getAddress();
return address;
}
验证
输入助记词
选择钱包币种
这个就是上面说的path。
这里就是根据我们的助记词生成的根私钥派生出各个节点的钱包地址
希望我的分享能帮助到大家
以上是关于区块链钱包安全汇总的主要内容,如果未能解决你的问题,请参考以下文章