linux解密,Linux杀毒软件

linux加解密框架(二)算法注册

本文基于以下软硬件假定:

架构:AARCH64

内核版本:5.14.0-rc5

内核对加解密算法的管理

加解密算法可分为对称算法、非对称算法、hash算法、mac算法以及aead算法等不同的种类。对称算法包括aes、des、3des、sm4、rc4、blowfish等,hash算法包括md5、sha1、sha256、sha512、sha3、sm3等。

同一种算法可以有多种不同的实现,如aes算法可以由纯软件实现,可以由cpu架构的加解密指令加速,还可以通过独立的加解密硬件加速等。此外,有些算法还有不同的加解密模式,基础加解密算法可以与相关的模式进一步组合,形成新的算法实例。

为了支持以上需求,内核分别为其抽象出了算法类型、普通算法、基础算法以及算法模板。其中算法类型用于表示某一类算法,如对称算法使用crypto_skcipher结构体表示,hash算法用crypto_ahash表示等。内核统一使用crypto_alg结构体表示所有的算法实现,并用一个全局链表来管理所有注册到crypto core中的crypto_alg,以下为其示例结构:

内核使用算法名(cra_name)来表示某一特定的算法,而使用算法驱动名(cra_driver_name)来表示算法的特定实现。不同的crypto_alg可以含有相同的cra_name,但其cra_driver_name是唯一的。用户可以使用cra_name或cra_driver_name来调用相关算法,为了在用户使用cra_name参数时选择最优的算法实现,内核对每种crypto_alg都定义了一个优先级。当给定cra_name还有多种不同实现时,则选择其中优先级最高的算法实现。

内核还支持基础对称加解密算法(指该算法在加解密时只操作单个block,而不涉及与block数据组合相关的加解密模式)。它们可通过算法模板(template),与不同的算法模式组合成完整的加解密算法。如aes算法可与ecb、cbc、ctr模式分别组合成ecb(aes)、cbc(aes)和ctr(aes)算法,des算法也可与ecb、cbc、ctr模式组合为ecb(des)、cbc(des)和ctr(des)算法等。内核通过特定的标志CRYPTO_ALG_TYPE_CIPHER来标识这类算法。

最后,为了保证注册算法的正确性,当新算法被注册到crypto core之前,内核会先对其进行自测。为此在自测成功之前,这些算法会由crypto_larval管理,它包含了larval算法和adult算法,当自测成功后,才将adult算法标记为tested,并销毁其对应的larval算法。

数据结构

2.1 crypto_alg结构体

该结构体是加解密算法的基础结构体,主要用于描述算法的通用属性,如算法名称、算法驱动名称、分组大小、数据对齐值等。当一个算法被注册到加解密核心中时,crypto_alg将会通过该节点挂到全局的算法链表crypto_alg_list上。此后,加解密核心就可以通过遍历该链表查找该算法。

2.2 skcipher_alg结构体

以下为该结构体的定义:

设置密钥回调函数、加密回调函数、解密回调函数、算法初始化回调函数、算法退出回调函数、算法支持的最短密钥长度、算法支持的最长密钥长度、算法支持的iv长度、对于块密码算法,该值等于block size、若算法在并行处理多个块时效率更高,则为chunksize的整数倍,否则等于chunksize、基础算法结构体。

2.3 crypto_larval结构体

该结构体在算法注册时用于其自测流程,其结构体定义如下:

算法注册时的临时算法结构体、算法注册时最终使用的实际算法结构体、用于算法自测同步操作的完成量。

加解密算法注册流程

加解密算法注册的主要工作为将对应算法加入全局算法链表中,并触发算法自测流程。由于在自测完成之前,该算法还不能被调用,因此会为其分配一个crypto_larval结构体,用于其在自测时的管理。

3.1算法校验

crypto_check_alg函数用于校验待注册算法的合法性,如其对齐值、block size等是否位于合理范围。

3.2 __crypto_register_alg实现

该函数首先检查该算法是否已注册,且已注册算法链表中是否有重名的算法,若检查通过则为其分配并初始化一个算法自测使用的crypto_larval结构体。然后将该算法与larval临时算法都添加到全局算法链表中。

3.3 crypto_wait_for_test流程

该函数会通过通知方式触发该算法的自测流程,然后等待自测完成。

3.4算法自测流程

加解密核心通过cryptomgr_init函数注册加解密算法相关的通知,该通知主要用于触发算法自测和模板示例创建工作。

4特定算法类型的注册接口

由于不同算法类型会在crypto_alg基础上封装其自身的算法结构体,因此它们也相应地封装了其对应的算法注册接口,我们在注册某特定算法时,通常都是使用该算法类型对应的注册接口完成。

5基础对称加解密算法注册

基础对称加解密算法指单次加密或解密操作固定为一个block的加解密算法,该算法一般会通过加解密模板,与特定的加解密模式功能生成组合算法。

以内核中的通用aes加解密基础算法aes-generic为例,其注册流程如下:

指示该算法为基础cipher算法、设置基础cipher算法的属性和回调函数。其中crypto_aes_encrypt和crypto_aes_decrypt在单次调用中只能加解密一个block。

linux文件加密解密命令linux文件加密

linux压缩文件怎么加密?

方法一:用tar命令对文件加密压缩和解压

压缩:

tar-zcf-filename|openssldes3-salt-kpassword|ddof=filename.des3

此命令对filename文件进行加码压缩生成filename.des3加密压缩文件,password为加密的密码。

方法二:用zip命令对文件加密压缩和解压

zip-refilename.zipfilename回车,输入2次密码

linux系统配置文件里的用户名和密码怎么加密?

做一个虚拟账户就解决了:步骤如下:

1、建立虚拟用户口令库文件口令库文件中奇数行设置用户名,偶数行设置口令#vi/etc/vsftpd/logins.txt注意,一下是4行upload这个是帐户名upload这个是密码downloaddownload

2、生成vsftpd的认证文件#db_load-T-thash-flogins.txt/etc/vsftpd/vsftpd_login.db设置认证文件只对用户可读可写#chmod600/etc/vsftpd/vsftpd_login.db

3、建立虚拟用户所需的PAM配置文件#vi/etc/pam.d/vsftpd.vuauthrequired/lib/security/pam_userdb.sodb=/etc/vsftpd/vsftpd_loginaccountrequired/lib/security/pam_userdb.sodb=/etc/vsftpd/vsftpd_login注意:以上2行中最后的2个文件名vsftpd_login和第2个步骤中的数据库名字必须一致!

4、建立虚拟用户所要访问的目录并设置相应权限#mkdir/home/ftpsite#useradd-d/home/ftpsitevirtual(用户名)#chownvirtual:virtual/home/ftpsite#chmod700/home/ftpsite/

5、设置vsftpd.conf配置文件guest_enable=YESguest_username=virtualpam_service_name=vsftpd.vu

6、设置主配置文件在vsftpd.conf文件中添加用户配置文件目录设置user_config_dir=/etc/vsftpd_user_conf#servicevsftpdrestart

7、建立用户配置文件目录使用mkdir命令建立用户配置文件目录#mkdir/etc/vsftpd_user_conf为虚拟用户建立单独的配置文件,用户配置文件名称与用户名相同touch/etc/vsftpd_user_conf/uploadtouch/etc/vsftpd_user_conf/download

8、每个FTP虚拟用户都可以独立设置其权限vi/etc/vsftpd_user_conf/uploadanon_world_readable_only=NO可读可下载anon_upload_enable=YES可上传anon_mkdir_write_enable=YES可创建和删除文件夹anon_other_write_enable=YES可文件改名和删除文件local_root=/home/ftpsite/upload指定upload的宿主目录download_enable=NO禁止下载(注意:请先到/home/ftpsite下面去创建upload文件夹)

linux发送文件命令?

1.uuto命令

uuto命令可将文件传送到远端的UUCP主机,并在完成工作后,以邮件通知远端主机上的用户。

2.uupick命令

uupick命令是用来处理传送进来的文件。

3.tftp命令

tftp命令用于传输文件,tftp是简单的文字模式ftp程序,它所使用的指令和FTP类似。

4.ncftp命令

ncftp命令用于传输文件,当不指定用户名时,ncftp命令会自动尝试使用匿名账户anonymous去连接远程FTP服务器,不需要用户输入账号和密码

5.ftpshut命令

ftpshut命令在指定的时间关闭FTP服务器

6.ftpwho命令

ftpwho命令用于显示目前所有以FTP登入的用户信息,执行这项指令可得知目前用FTP登入系统的用户有哪些人,以及他们正在进行的操作。

7.ftpcount命令

ftpcount命令用于显示目前以FTP登入的用户人数。

8.bye命令

bye命令用于中断FTP连线并结束程序。

9.ftp命令

ftp命令设置文件系统相关功能

linux如何给文件授权?

答具体方法如下

需求1:新建除了root之外的新用户,并且新用户具有root用户的相关功能

1.首先修改/etc/sudoers文件具有写入的权限

chmod777/etc/sudoers

2.修改/etc/sudoers

vim/etc/sudoers,定位到如下行:

##Allowroottorunanycommandsanywhere

rootALL=(ALL)ALL

复制并增加一行,将root改为自定义的用户名,然后保存关闭文件

3.执行以下命令使文件生效

chmod440/etc/sudoers

4.切换到新用户进行其它操作

su-xxxx

#################################################分割线############################################################

需求2:切换到新用户之后,在/opt系统目录下创建新目录,并且将目录的拥有权授权给新用户

1.创建目录folder1

sudomkdirfolder1

2.创建成功后将folder1的所有这及所属分组分配给新用户

sudochown用户名:密码folder1/

3.之后ll命令查看当前目录的归属

linuxzip加密默认使用什么算法?

winzip8.0及更早的版本使用的是私有加密算法,是不公开的WinZip9.0有一种AES算法

如何在Linux系统中生成、加密和解密随机密码

在Linux系统中,生成、加密和解密随机密码是一个重要的安全实践。本文将介绍如何使用命令行工具轻松完成这些任务。

首先,我们关注随机密码生成。PWgen是一个强大工具,通过命令行可自定义密码长度、复杂度和字符类型,生成随机唯一密码。例如,要生成10个字符的密码,只需在终端输入"pwgen 10"即可。

另一方面,makepasswd命令同样用于生成随机密码,但提供更灵活的长度选项。要生成长度为50的密码,使用"makepasswd 50"命令。

密码加密环节中,crypt库和salt方法提供了额外的安全层。salt是随机数据,用于防止字典攻击。mkpasswd命令是用于加密密码的工具,它生成与特定salt关联的哈希值。例如,使用"mkpasswd tecmint"命令加密"tecmint"密码。

对于密码哈希存储和验证,SHA-512是常用选择。要生成SHA-512哈希,输入"mkpasswd-m sha512 tecmint"。

在Linux中加密字符串时,使用aes-256-cbc算法和salt进行加密,确保数据传输安全。使用openssl命令实现,例如加密字符串" idccoupon-is-a-Linux-Community"。

解密加密的字符串,同样使用openssl,指定解密算法和密码。如需要解密加密字符串,请使用相应的命令,替换哈希值。

总之,Linux提供丰富的工具支持密码管理,从生成到加密,确保数据安全。希望这些技巧能帮助您在日常工作中更安全地使用密码。如有其他建议或技巧,欢迎分享,让我们共同提升安全实践。

阅读剩余
THE END