Everything you care about in one place

Follow feeds: blogs, news, RSS and more. An effortless way to read and digest content of your choice.

Get Feeder

chaoge123456.github.io

小生很忙

Get the latest updates from 小生很忙 directly as they happen.

Follow now 25 followers

Latest posts

Last updated almost 5 years ago

区块链隐私与门罗币

almost 5 years ago

摘要:最近接触了一些与区块链相关的知识,主要与区块链隐私相关,感觉挺有趣,在此记录一下。本文主要梳理了区块链系统的隐私问题,并以门罗币为例,阐述了交易匿名化的解决方案。文章概览区块链系统概述区块链隐私问题门罗币隐私保护机制区块链系统概述  区块链本质上相当于一个去中心化的账本数据库,以P2P网络作为通信载体,依赖密码学确定所有权和保障隐私。相对于传统的数据库,其核心特征是不可篡改。实现区块链需要解决的两个关键问题是:如何组织数据以确保不被篡改,即数据结构。这里的数据结构有两层含义,一层含义是指区块内部的交易数据的组织形式,常见的组织形式包括Merkle树、Merkle Patircia树等;另一层含义是指区块与区块之间的组织形式,常见的组织形式包括链式结构(比特币)、树状结构(以太坊)、DAG图结构(IOTA)。如何在分布式环境中对账本状态的更新达成共识,即共识机制。共识机制使得参与区块链系统的各个节点都可以参与到记账权的竞争当中,获得记账权的节点将会获得相应的奖励,同时系统中的节点都可以对新加入链中的区块进行验证。常见的共识机制包括Proof of work、Proof of stake等。  以比特币为例,整个区块链系统的运行机制可以简述为:首先客户端发起一笔交易,将该交易广播至比特币网络中的任意节点,节点在收到交易后需要验证交易是否合法。如果验证不通过,节点将拒绝该交易,并向发送者返回交易被拒绝的消息;如果验证通过,节点会将该交易放入自己的交易池中,并向网络中继续传播。各节点从各自的交易池中打包交易,并通过加入随机数进行计算。最先计算出符合要求哈希值的节点打包的区块有效,即获得记账权。然后,该节点将计算得到的区块广播到区块链网络中,其他节点接收到新的区块后会进行验证。验证成功后将新区块连接到自己的链中,同时删除自己交易池中已经被打包的交易记录,重新开始新一轮的生产区块过程。区块链隐私问题  区块链系统中的隐私一般是指用户的身份隐私、位置隐私以及交易内容隐私,我认为造成区块链系统中的隐私问题的原因主要有三个:为了鼓励更多用户参与共识,早期的区块链系统不会对加入的节点进行认证,这就为攻击者窃取隐私数据创造了机会。攻击者可以共享系统中的交易数据、嗅探网络流量,从而挖掘出关于用户的敏感信息。为了增强区块链系统的拓展性,通常将其部署在开放网络环境当中。这就使得攻击者可以任意部署节点,监听网络中各节点隐私信息以及网络通信信息。相关研究表明,攻击者可以对区块链地址及 IP 地址对应关系进行分析,揭露用户与实际物理位置的对应关系。为了更加高效的对交易记录进行验证,区块链系统中的交易记录通常是完全公开的,没有采取额外的保护措施。交易记录通常能够反映一些敏感信息,有可能泄露用户的隐私。例如用户购物的交易记录能够反映用户的消费水平、生活状态等。  为了解决区块链系统中的隐私问题,以下从三个角度来对当前的防御机制进行总结:对应于导致隐私问题的第一个原因,我们可以通过在区块链系统中加入节点认证机制限制恶意节点的加入。基于这一想法,研究人员提出了私有链和联盟链的架构,这些架构可以适用于对隐私需求更高的一些场景。(应用案例:Hyperledger...

开发环境配置

about 5 years ago

摘要:最近实验室给配了一台新设备,这几天一直在忙着装系统、搭环境。虽然这装系统、搭环境也不是啥难事,但是零零碎碎的细节很是恼人,在此记录一下我在这个过程中遇到的一些问题,供大家参考。同时,也给大家分享一些有趣的应用和工具。文章概览系统选择应用分享系统选择  对于开发者而言,Linux系统拥有众多优秀的性能,我也一直尝试着将Linux作为主力使用的操作系统。但是,目前很多痛点问题在Linux场景下没有很好的解决方案,比如很多常用的软件没有Linux版本,因此之前我的电脑使用的是win10和Arch Linux双系统,在做不同的任务时可能需要在两个系统之间进行切换。之所以选择Arch Linux是因为Arch Linux拥有非常丰富的软件库,结合wine,能够很好的解决部分场景的痛点问题。但是Arch Linux的更新策略很激进,滚动更新的模式可能会让你的系统出现各种类型的bug。在平稳运行半年之后,我的Arch还是挂了,推测应该是显卡驱动的原因,一直没能修复好,因此只得作罢。之后,我又回归了windows系统。在windows场景下搭建Linux开发环境一般有三种方式:虚拟机、docker、WSL,前两种方式之前都尝试过,也不太符合我的需求,因此这次选择了WSL。我将所有的开发环境部署在WSL中,IDE安装在windows宿主机,IDE可以识别WSL中的编译环境。使用一段时间后,体验非常好,WSL能够满足我在开发场景中所有的需求,在性能方面也接近原生Linux。  因此,我准备在新机器上继续沿用windows+WSL的环境。由于新配的机器有一块nvidia的显卡,所以在装系统之前,我查阅了以下相关资料,WSL2已经支持显卡接口调用。但是,我忽略了一个关键细节:只有Build 20145或更高预览版的win10下的WSL2才支持显卡调用。装好系统之后,我才发现这一问题,所以装完之后又将系统升级到最新的预览版。接着需要在windows宿主机上安装显卡驱动程序,根据官网的操作一路安装下去,遇到了很多bug,???然最后也算是装好了,但是总感觉不够稳定。这些功能目前还在测试阶段,所以不推荐作为主力开发环境。win11已经支持上述功能,等正式发布之后,可以再尝试上述功能。  以防万一,我还是安装了一套Linux环境,这次使用的是ubuntu。ubuntu的社区很强大,各种资料文档也十分丰富,一旦出现问题,可以找到很多解决方案进行参考。双系统的安装过程这里就不赘述了,网上都能找到很多参考资料。接下来,介绍几个我在Linux系统中经常使用的软件工具。应用分享i3wm:linux 平铺式窗口管理器,强力推荐。zsh:功能强大且美观的Linux终端,安装过程可以参考这篇博客。ranger:是一款终端下的文件管理器,具有vim式的操作方式。12345678sudo apt install...

口令安全问题研究

about 5 years ago

摘要:身份认证是确保信息系统安全的第一道防线,口令是应用最为广泛的身份认证方法。尽管口令存在众多的安全性和可用性缺陷,大量的新型认证技术陆续被提出,但由于口令具有简单易用、成本低廉、容易更改等特性,在可预见的未来仍将是最主要的认证方法。之前阅读了一些该领域的文章,也复现了一些常见的口令猜测算法,该博文进行一些总结。文章概览口令安全问题分析PCFG口令猜测算法实现Markov口令猜测算法实现口令安全问题分析  对于一个安全问题,往往可以从攻击者和防御者两个角度来考虑,以下分别从这两个角度对口令安全问题进行分析和总结。攻击者  对于口令安全问题而言,攻击者的目的是利用各种手段快速方便的获取用户的口令信息,从而获得进入相关系统的权限。首先,攻击者需要对该问题进行分析,找到突破口。对口令安全造成威胁的因素主要有以下两种:系统(或网络应用)的口令安全机制,主要体现在以下几个方面。口令生成策略:目前很多网站的口令生成策略一般要求字母+数字+特殊字符的组合,口令长度8位以上。如果网站的口令生成策略要求很低,会导致用户倾向于选择更为简单、便于记忆的口令组合,会加剧口令被攻击者成功猜测的风险。口令强度评估:良好的口令强度评估机制可以帮助用户选择更为安全的口令,增加攻击者猜测的成本。但是出于技术难度或者用户体验等方面的考虑,目前的口令强度评估机制仍然存在很大的问题。口令认证机制:由于口令传输阶段不涉及人的因素,研究的问题主要是基于口令的身份认证协议,问题容易刻画,目前这方面的研究较为成熟,攻击者很难从这个角度来突破。口令存储机制:如果系统采用明文方式存储用户口令,一旦口令文件被泄漏,会造成很大的安全威胁。一般情况下,采用较为先进的hash函数来生成口令文件。hash函数的???向性和碰撞约束特性能够保证即使口令文件被泄漏,攻击者也难以恢复用户的口令。用户脆弱口令行为,主要体现在以下几个方面。用户的倾向性口令构造模式:用户倾向于用特定的模式来构造口令,这种构造模式可能与其所处文化环境、语言特点有关,并且具有群体特征。这些线索可以帮助攻击者缩小口令猜测范围,提高攻击效率。口令重用:面对大量需要管理的帐号,口令重用是很多用户常见的做法。口令重用可以使得攻击者在获得已知用户口令的情况下,提取用户口令构造特征,从而推测用户未知口令。基于个人信息构造口令:为了便于记忆,用户在构造口令时往往会掺入个人相关信息。攻击者可以结合已知的用户信息和相关口令构造模型来猜测用户口令。  通过以上分析可知,用户脆弱口令行为是造成口令安全风险的主要原因,同时系统(或网络应用)中脆弱的口令生成策略和口令强度评估机制也为攻击者成功攻击创造了条件。其实,口令猜测攻击的思路很简单,即提交不同的口令直到认证成功为止。但是,其难点在于如何提高攻击的成功率和效率。因此,口令猜测算法的研究专注于深入挖掘用户脆弱口令行为,针对不同场景构建高效的口令猜测算法。根据攻击过程中是否利用用户个人信息,口令猜测算法可分为漫步攻击和定向攻击。漫步攻击是指攻击者不关心具体攻击对象是谁,其唯一目标是在允许的猜测次数下,猜出越多口令越好。启发式方法:没有严密的理论体系,很大程度依靠零散的“奇思妙想”,比如构造独特的猜测字典,采用精心设计的猜测顺序等。概率统计方法:基于概率统计思想,对口令的组成结构进行分析,从而得到概率模型,比如概率上下文无关方法(PCFG)、Markov、NLP。深度学习方法:核心思想是利用深度学习模型强大的端到端的学习能力,自动提取口令集合潜在的分布特征,从而指导猜测口令的生成,比如PassGAN、FLA。定向攻击是指攻击者利用与攻击相关的个人信息以增强口令猜测的针对性。口令重用信息:利用用户在其他网站中泄漏的口令来推测用户口令构造特征,这类攻击方法包括TarGuess、pass2path。人口学相关信息:这类信息包括用户的姓名、年龄、生日、性别、邮箱、手机号以及家庭成员信息,这类攻击方法包括Targeted-Markov、Personal-PCFG、TarGues  总的来说,口令猜测算法的发展趋势是由漫步攻击慢慢过度到定向攻击,因为定向攻击的更有针对性且效率更高。除此之外,利用深度学习方法来进行口令猜测也是未来的发展趋势之一。因为传统的口令猜测算法大多建立在特定规则和概率统计的基础上,可能无法全面的体现口令的分布特征,深度学习模型强大的表示能力为解决这一问题提供了可能性。防御者  从攻击者的分析来看,造成口令安全风险的主要原因是用户的安全意识不足,其次是由于系统(或网络应用)的口令安全策略不严格造成的。由于用户的安全意识等人为因素是无法控制的,所以防御者构建口令安全防御机制主要是立足于口令强度评估等安全策略。口令强度评估机制需要准确的告诉用户,当前构造的口令是否安全,所以这就需要口令强度评估机制足够的健壮。目前的口令强度评???机制主要有以下三类:基于规则的口令强度评价方法:口令强度依据长度和所包含的字符类型而定,比如NIST PSM。基于模式检测的口令强度评估方法:检测口令各个子段所属的构造模式,然后对各个模式赋予相应的分数,得到该口令的总分数,即为强度值,比如zxcvbn。基于攻击算法的口令强度评估方法:使用攻击算法对给定口令进行攻击,根据攻击的难易程度进行强度判定,比如PCFG-based PSM、Markovbased PSM。基于相似度检测的口令强度评估方法:vec-PPSM(口令重用)。  目前的口令强度评估的研究相对来说不是很成熟,提出的很多评估方法都没能得到大规模的应用。目前大部分的口令强度评估机制都是基于漫步猜测攻击,未考虑到用户个人信息对口令安全性的影响,这一领域值得探索的方向是设计基于定向攻击者模型的口令强度评估机制。PCFG口令猜测算法实现  PCFG是一种完全自动的、建立在严密的概率上下文无关法基础之上的漫步口令猜测算法,该算法的核心思想是将每一条口令看作是由字母段L、数字段D、特殊字符段S根据一定的模式互相组合而成的。我们可以通过对大量的口令数据进行分析,统计出这些口令可能的组合模式,从而利用该模式生成更多的口令,进行口令猜测。实现细节  该算法的实现主要包括三个部分:口令集预处理、口令集训练、口令猜测,使用的编程语言为python3.7,具体细节如下所示:口令集预处理:实验中所使用的口令集为MySpace,去掉了包含非ASCLL或者空格的口令,剩余口令总数为41251。然后将这些口令随机拆分为训练集和测试集,分别存放在trainword.txt和testword.txt文件中。代码中设置了参数eps可以对训练集和测试集的分配比例进行调节,本文将eps设置为0.4,即测试集占口令总数的40%(16500)。除此之外,在随机拆分训练集和测试集时,设置了随机种子seed,方便实验结果的复现。口令集训练:口令集训练的目的是统计出口令模式频率和字符组件频率。对于字符组件频率的统计,论文中提到的方法只统计了数字段和D和特殊S。在实现过程中,我也统计了字母段L的频率,同时字母段L将作为字典参与口令猜测过程。(根据测试集生成的口令模式一共有1134种)口令猜测:口令猜测的过程类似于树的遍历,这里采用类似于深度优先遍历的方法。分别对所有的口令模式频率表和字符组件频率表由大到小进行排序,从频率最高的口令模式开始进行口令猜测,根据字符组件频率表依次生成该模式下所有可能的口令,然后在进行下一个口令模式的猜测。对于每个生成的口令,需要计算其可能出现的概率,如果该概率值大于预设的阈值(比如0.000000001),则可以将其输出并与测试集中的口令进行比对。反之,则将该口令丢弃。实验中所有的猜测口令都存放在guess文件夹下对应的口令模式文件中。实验结果...