worm算法
1. 按传染性方式分类,计算机病毒可分为哪几种
分类
前言
根据多年对计算机病毒的研究,按照科学的、系统的、严密的方法,计算机病毒可分类如下:按照计算机病毒属性的方法进行分类,计算机病毒可以根据下面的属性进行分类:
按病毒存在的媒体
根据病毒存在的媒体,病毒可以划分为网络病毒,文件病毒,引导型病毒。网络病毒通过计算机网络传播感染网络中的可执行文件,文件病毒感染计算机中的文件(如:COM,EXE,DOC等),引导型病毒感染启动扇区(Boot)和硬盘的系统引导扇区(MBR),还有这三种情况的混合型,例如:多型病毒(文件和引导型)感染文件和引导扇区两种目标,这样的病毒通常都具有复杂的算法,它们使用非常规的办法侵入系统,同时使用了加密和变形算法。
按病毒传染的方法
根据病毒传染的方法可分为驻留型病毒和非驻留型病毒,驻留型病毒感染计算机后,把自身的内存驻留部分放在内存(RAM)中,这一部分程序挂接系统调用并合并到操作系统中去,他处于激活状态,一直到关机或重新启动.非驻留型病毒在得到机会激活时并不感染计算机内存,一些病毒在内存中留有小部分,但是并不通过这一部分进行传染,这类病毒也被划分为非驻留型病毒。
按病毒破坏的能力
无害型:除了传染时减少磁盘的可用空间外,对系统没有其它影响。 无危险型:这类病毒仅仅是减少内存、显示图像、发出声音及同类音响。 危险型:这类病毒在计算机系统操作中造成严重的错误。 非常危险型: 这类病毒删除程序、破坏数据、清除系统内存区和操作系统中重要的信息。这些病毒对系统造成的危害,并不是本身的算法中存在危险的调用,而是当它们传染时会引起无法预料的和灾难性的破坏。由病毒引起其它的程序产生的错误也会破坏文件和扇区,这些病毒也按照他们引起的破坏能力划分。一些现在的无害型病毒也可能会对新版的DOS、Windows和其它操作系统造成破坏。例如:在早期的病毒中,有一个“Denzuk”病毒在360K磁盘上很好的工作,不会造成任何破坏,但是在后来的高密度软盘上却能引起大量的数据丢失。
按病毒的算法
伴随型病毒,这一类病毒并不改变文件本身,它们根据算法产生EXE文件的伴随体,具有同样的名字和不同的扩展名(COM),例如:XCOPY.EXE的伴随体是XCOPY-COM。病毒把自身写入COM文件并不改变EXE文件,当DOS加载文件时,伴随体优先被执行到,再由伴随体加载执行原来的EXE文件。 “蠕虫”型病毒,通过计算机网络传播,不改变文件和资料信息,利用网络从一台机器的内存传播到其它机器的内存,计算网络地址,将自身的病毒通过网络发送。有时它们在系统存在,一般除了内存不占用其它资源。 寄生型病毒 除了伴随和“蠕虫”型,其它病毒均可称为寄生型病毒,它们依附在系统的引导扇区或文件中,通过系统的功能进行传播,按其算法不同可分为:练习型病毒,病毒自身包含错误,不能进行很好的传播,例如一些病毒在调试阶段。 诡秘型病毒 它们一般不直接修改DOS中断和扇区数据,而是通过设备技术和文件缓冲区等DOS内部修改,不易看到资源,使用比较高级的技术。利用DOS空闲的数据区进行工作。 变型病毒(又称幽灵病毒) 这一类病毒使用一个复杂的算法,使自己每传播一份都具有不同的内容和长度。它们一般的作法是一段混有无关指令的解码算法和被变化过的病毒体组成。
2. 计算机病毒有哪些类型
按照计算机病毒属性的方法进行分类,计算机病毒可以根据下面的属性进行分类。
一、根据病毒存在的媒体划分:
1、网络病毒——通过计算机网络传播感染网络中的可执行文件。
2、文件病毒——感染计算机中的文件(如:COM,EXE,DOC等)。
3、引导型病毒——感染启动扇区(Boot)和硬盘的系统引导扇区(MBR)。
二、根据病毒传染渠道划分:
1、驻留型病毒——这种病毒感染计算机后,把自身的内存驻留部分放在内存(RAM)中,这一部分程序挂接系统调用并合并到操作系统中去,它处于激活状态,一直到关机或重新启动
2、非驻留型病毒——这种病毒在得到机会激活时并不感染计算机内存,一些病毒在内存中留有小部分,但是并不通过这一部分进行传染,这类病毒也被划分为非驻留型病毒。
三、根据破坏能力划分:
1、无害型——除了传染时减少磁盘的可用空间外,对系统没有其它影响。
2、无危险型——这类病毒仅仅是减少内存、显示图像、发出声音及同类影响。
3、危险型——这类病毒在计算机系统操作中造成严重的错误。
4、非常危险型——这类病毒删除程序、破坏数据、清除系统内存区和操作系统中重要的信息。
四、根据算法划分:
1、伴随型病毒——这类病毒并不改变文件本身,它们根据算法产生EXE文件的伴随体,具有同样的名字和不同的扩展名(COM),例如:XCOPY.EXE的伴随体是XCOPY-COM。病毒把自身写入COM文件并不改变EXE文件,当DOS加载文件时,伴随体优先被执行到,再由伴随体加载执行原来的EXE文件。
2、“蠕虫”型病毒——通过计算机网络传播,不改变文件和资料信息,利用网络从一台机器的内存传播到其它机器的内存,计算机将自身的病毒通过网络发送。有时它们在系统存在,一般除了内存不占用其它资源。
3、寄生型病毒——除了伴随和“蠕虫”型,其它病毒均可称为寄生型病毒,它们依附在系统的引导扇区或文件中,通过系统的功能进行传播,按其算法不同还可细分为以下几类。
4、练习型病毒,病毒自身包含错误,不能进行很好的传播,例如一些病毒在调试阶段。
5、诡秘型病毒,它们一般不直接修改DOS中断和扇区数据,而是通过设备技术和文件缓冲区等对DOS内部进行修改,不易看到资源,使用比较高级的技术。利用DOS空闲的数据区进行工作。
6、变型病毒(又称幽灵病毒),这一类病毒使用一个复杂的算法,使自己每传播一份都具有不同的内容和长度。它们一般的作法是一段混有无关指令的解码算法和被变化过的病毒体组成。
五、破坏性
1、良性病毒
2、恶性病毒
3、极恶性病毒
4、灾难性病毒。
六、传染方式
1、引导区型病毒主要通过软盘在操作系统中传播,感染引导区,蔓延到硬盘,并能感染到硬盘中的"主引导记录"。
2、文件型病毒是文件感染者,也称为“寄生病毒”。它运行在计算机存储器中,通常感染扩展名为COM、EXE、SYS等类型的文件。
3、混合型病毒具有引导区型病毒和文件型病毒两者的特点。
4、宏病毒是指用BASIC语言编写的病毒程序寄存在Office文档上的宏代码。宏病毒影响对文档的各种操作。
七、连接方式
1、源码型病毒攻击高级语言编写的源程序,在源程序编译之前插入其中,并随源程序一起编译、连接成可执行文件。源码型病毒较为少见,亦难以编写。
2、入侵型病毒可用自身代替正常程序中的部分模块或堆栈区。因此这类病毒只攻击某些特定程序,针对性强。一般情况下也难以被发现,清除起来也较困难。
3、操作系统型病毒可用其自身部分加入或替代操作系统的部分功能。因其直接感染操作系统,这类病毒的危害性也较大。
4、外壳型病毒通常将自身附在正常程序的开头或结尾,相当于给正常程序加了个外壳。大部份的文件型病毒都属于这一类。
(2)worm算法扩展阅读:
为了能够复制其自身,病毒必须能够运行代码并能够对内存运行写操作。基于这个原因,许多病毒都是将自己附着在合法的可执行文件上。如果用户企图运行该可执行文件,那么病毒就有机会运行。病毒可以根据运行时所表现出来的行为分成两类。
非常驻型病毒会立即查找其它宿主并伺机加以感染,之后再将控制权交给被感染的应用程序。常驻型病毒被运行时并不会查找其它宿主。相反的,一个常驻型病毒会将自己加载内存并将控制权交给宿主。该病毒于背景中运行并伺机感染其它目标。
常驻型病毒包含复制模块,其角色类似于非常驻型病毒中的复制模块。复制模块在常驻型病毒中不会被搜索模块调用。病毒在被运行时会将复制模块加载内存,并确保当操作系统运行特定动作时,该复制模块会被调用。
例如,复制模块会在操作系统运行其它文件时被调用。在这个例子中,所有可以被运行的文件均会被感染。常驻型病毒有时会被区分成快速感染者和慢速感染者。快速感染者会试图感染尽可能多的文件。
3. 分布式存储极简艺术Minio解析
MinIO 对象存储系统是为海量数据存储、人工智能、大数据分析而设计,基于
Apache License v2.0 开源协议的对象存储系统,它完全兼容 Amazon S3 接口,单个对象的最大可达 5TB,适合存储海量图片、视频、日志文件、备份数据和容器/虚拟机镜像等。作为一个开源服务,MinIO 在设计上汲取了Glusterfs的相关经验不教训,系统复杂度上作了大量简化,目前大小只有40+M,部署只需要一个命令即可完成!另外,minio舍弃了传统分布式存储扩容所需要的迁移流程,采用联盟模式添加集群的方式,极大简化了扩容流程;除此之外,minio还具有纠删编码、比特位保护、单写多读(worm)、下面来依次简要解析一下Mioio的特点及具体实现:
元数据和数据一起存放在磁盘上。元数据以明文形式存放在元数据文件里(xl.json)。假定对象名字为key_name, 它所在桶的名字是bucket_name, disk路径就是/disk,那么存储路径就是:/disk/bucket_name/key_name,windows下C盘存放桶名为test,对象名为minio.exe示例如图:
其中part.1是实际存储数据(单机模式为原生数据,分布式为纠删码分块),xl.json是如下所示的json字符串:
在同一集群内,MinIO 自己会自劢生成若干纠删组,用于分布存放桶数据。一个纠删组中的一定数量的磁盘发生的故障(故障磁盘的数量小于等于校验盘的数量),通过纠删码校验算法可以恢复出正确的数据。MinIO 集成了 Reed-Solomon 纠删码库,MinIO 存储对象数据时,首先把它分成若干等长的片段(对于大对象,默认按 5MB 切片),然后每一个片段会纠删算法分成若干分片,包括数据分片不校验分片,每个分片放置在一个纠删组的某个节点上。对象的每一个数据分片、校验分片都被“防比特位衰减”算法所保护。
MinIO 会根据对象名(类似于文件系统的全路径名),使用 crc32 哈希算法计算出一个整数。然后使用这个整数除以纠删组的个数,得到一个余数。这个余数,可以作为纠删组的序号,这样就确定了这个对象所在的纠删组。MinIO 采用 CRC32 哈希算法,不 glusterfs 的Davies Meyer哈希算法(性能、冲突概率不md4, md5相近)不一样的是,CRC32算法的哈希值分布较不均匀,但运算速度极快,高出 md4 数倍。相对于容量均衡,MinIO 更看重数据的写入速度。
纠删组如何配置?
官方文档说明如下:
也就是说纠删组的总大小只能从这7中情况中根据你提供的盘的个数(或者说路径个数)来自动选取最大值的,我们 不能灵活地配置m+k纠删存储格式。但这样说又不是很准确 ,因为虽然不能配置任意的m+k,但是在系统已经选取好擦除编码集的的个数后(也就是m+k),可以使用storage class存储类来自定义m和k的数量,默认是1:1的。
存储类:
MinIO支持配置两种存储类别,精简冗余类别和标准类别,默认是标准类别(1:1),可以在启动MinIO服务器之前使用设置的环境变量来定义这些类。使用环境变量定义每个存储类别的数据和奇偶校验磁盘后,您可以 在上传对象时通过请求元数据字段设置对象的存储类别x-amz-storage-class 。然后,MinIO服务器通过将对象保存在特定数量的数据和奇偶校验磁盘中来兑现存储类。具体配置和使用可以参考官方文档 https://github.com/minio/minio/tree/master/docs/erasure/storage-class
传统的扩展方式的劣势
通过增加节点来扩展单集群,一般需要进行数据均衡,否则群集内各存储节点会因负载不均而出现新的瓶颈。除了数据均衡操作的时机这个问题以外,在均衡过程中一般需要仍存储使用率高的节点吐使用率低的节点迁移数据。当集群扩容后,大量已经写入的文件落点会出现改变,文件需要迁移到真实的落点。当存储系统容量比较大时,则会发生大量的文件/对象进行迁移,迁移过程可能由于占用大量资源而导致上层应用性能下降。而且当文件/对象迁移过程中,机器故障可能会导致一些意想不到的情冴,尤其是有大量业务的时候。当然针对此类问题,Gluterfs之类的文件系统有一些比较复杂的处理办法。
不支持扩展优势