linux下的加密解密学习

linux下的加密解密学习

加密/解密:
        加密协议:加密解密使用同一秘钥:3des,aes
        公钥加密:公钥私钥对
        数字签名,密钥交换
        
        RSA,DSA数据签名算法(DSS数据签名标准)

单向加密:
            md5,sha1,sha256,sh512(MD5输出128bit,SHA1输出160bit,SHA256输出256bit)

密钥交换:
            DH:Deffie-Hellman

具体过程参照下面的SSL握手

===================================================
    SSL:secure socket layer
            ssl:sslv3现版本
            IETF:tlsv1.0对位sslv3  tlsv1.2现在

ssl握手:
            客户端->服务端:客户端自身支持的算法,请求服务器数字证书
            服务端->客户端:服务器端支持加密算法,发送数字证书(客户端验证信息后,数字证书中得到服务端公钥,加密发送服务器)

客户端验证数据:1.服务器名字与证书名字是否一致;2.用本地缓存的对应信任CA公钥,解密证书,查看是否一致;3.检察证书内容是否被篡改,单向加密码验证;4.看证书是否到期;5看证书是否到期

客户端->服务端端:加密数据发给客户端,对称秘钥交换,之后对称秘钥加密通讯

数字证书:
                    CA:签发安全证书,确保数据安全性
    
===============================================
openssl:
            组成部分:
                    libcrypto:加密解密文件
                    libssl:ssl协议实验
                    openssl:多用途命令行工具,自定义

gpg:pgp规范的实现

openssl加密命令:
            加密文件(对称加密):
                    工具:openssl enc,gpg
                    算法:des,3des,aes,blowfish,twofish,idea,cast5

enc工具:
                    加密openssl enc -e -算法 -a -salt -in 加密文件 -out 输出文件  
                    解密openssl enc -d -算法 -a -salt -in 加密文件 -out 输出文件
                                        可通过openssl ?查看
                                                        -a表示文本编码输出
                                                                    -salt加随机数

TEST:

单向加密:
                    算法:md5,sha1
                    工具:openssl dgst,md5sum,sha1sum,sha224sum,sha256sum,sha384sum,

sha512sum
                    openssl dgst -算法 PATH  此处算法为上述算法且不限于上述算法,但不同于加密算法

mac码:用于表示数据完整性的值
                        机制:CBC-MAC
                        HMAC:md5或者sha1算法

生成用户密码:
                        openssl passwd -1 -salt 8位随机数
                        生成随机数:openssl rand -hex 4

公钥加密:
                        工具:gpg ,openssl rsautl
    
                生成密钥对:
                        操作过程:生成私钥,从私钥中提取公钥
                            openssl genrsa -out PATH NUM_BITS
                            括号内的命令:通过打开一个子shell进程进行
                                (umask 077;openssl genrsa -out PATH NUM_BITS)主要为了安全性考虑,子shell运行不影响原机环境
                        从私钥中提取公钥:
                            openssl rsa -in PATH -pubout
                                公钥加密:完成秘钥交换
                                私钥加密:完成身份验证

 随机数生成器:
                random( 安全系数较高), urandom

熵池:保存硬件中断产生的随机数

/dev/random:仅从熵池中返回随机数,当熵池中的随机数耗尽时,取随机数的进程将会被阻塞;
                        /dev/urandom:先从熵池中取随机数,当熵池中的随机耗尽时,就通过伪随机数生成器生成随机数;

 使用openssl构建私有CA:
                1.生成秘钥
                2.生成自签署签名
                        (1) 私钥用于签发证书时,向证书添加数字签名使用;
                        (2) 证书:每个通信方都导入此证书至“受信任的证书颁发机构”;

创建CA配置文件 :/etc/pki/tls/openssl.cnf (查看此文件可查看一下配置文件存放位置及相关信息)

工作目录:/etc/pki/CA/

1.建立私有秘钥文件:/etc/pki/CA/private/cakey.pem

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

2.生成自签署签名:从密钥从提取公钥及数字签名证书到/etc/pki/tls/openssl.cnf指定的certificate指定位置

# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days #

-new: 生成新的证书签署请求;
                                -key:私钥文件路径,用于提取公钥;
                                -days N: 证书有效时长,单位为“天”;
                                -out:输出文件保存位置;
                                -x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;

                            

                    3.提供辅助文件:提供帮助文件及输入序列号
                                touch /etc/pki/CA/index.txt
                                echo 01 > /etc/pki/CA/serial

 分发证书:

TEST:

 Openssh:

ssh:secure shell (监听tcp/22) 用于取代talnet(明文传输,监听tcp/23)

现在主流版本为V2

两种验证方式:

1.用户口令

2.密钥对验证

 Openssh:ssh开源软件

sshd: 服务器
                        ssh: 客户端
                        scp: 安全跨主机复制工具,基于ssh协议实现;
                        sftp:安全ftp

服务器配置文件:sshd: /etc/ssh/sshd_config
                        客户端配置文件:ssh: /etc/ssh/ssh_config

基于密钥认证:
            在客户端生成一对密钥,私自己留存;公钥通过私密方式保存至要登录的远程服务某用户的家目录的专用于ssh通信的文件;

生成秘钥 :ssh-keygen -t rsa
                 传输秘钥:ssh-copy-id -i ~/.ssh/id_rsa.put [email protected]

 scp远程复制命令:
                push: scp [-rp] /path/from/somefile [email protected]:/path/to/somewhere
                pull: scp [-rp] [email protected]:/path/from/somefile /path/to/somewhere

-P portnumber(一旦默认端口更改需加此参数)

 sshd服务器端的配置:
                /etc/ssh/sshd_config
                    directive value
                        Port 22           监听端口
                        AddressFamily any  监听地址(通过那个地址对外提供服务)
                        Protocol 2         版本协议

限制可登录用户:
                        PermitRootLogin : 是否允许管理员直接登录;
                        AllowUsers user1 user2 ...允许登陆白名单
                        AllowGroups grp1 grp2 ... 允许登陆组白名单
                        DenyUsers user1 ...       允许登陆黑名单
                        DenyGroups grp1 ...      允许登陆黑名单

仅监听需要监听的IP地址:
                        ListenAddress 0.0.0.0

最大允许登陆尝试数:

MaxAuthTries 6

ssh登陆log日志:

/var/log/secure

时间: 2024-11-03 20:52:16

linux下的加密解密学习的相关文章

Linux下磁盘加密

Linux下磁盘加密 LUKS(Linux Unified Key Setup)为Linux硬盘加密提供了一种标准,它不仅能通用于不同的Linux发行版本,还支持多用户/口令.因为它的加密密钥独立于口令,所以如果口令失密,我们可以迅速改变口令而无需重新加密真个硬盘.通过提供一个标准的磁盘上的格式,它不仅方便之间分布的兼容性,而且还提供了多个用户密码的安全管理.必须首先对加密的卷进行解密,才能挂载其中的文件系统. 工具:cryptsetup(默认已经安装) 常用参数:luksFormat.luks

UNIX/Linux下C语言的学习路线

一.工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具. 1.操作系统    在UNIX或Linux系统中学习C很方便,所以在开始您的学习旅程前请先选择一个UNIX或Linux操作系统,目前可供个人免费使用的UNIX或Linux系统有FreeBSD.RedHat Linux.SUSE Linux等,而且在安装包中还提供很多实用的工具,如:gcc, make等. 如果您一直使用Window

linux下rpm,yum学习

linux下RPM及yum学习 linux中程序管理程序主要分为两类 dpkg(Debian Packager):debian,Ubuntu,Knoppix        rpm(Redhat Package Manager):Redhat,Centos,Fedora linux通过管理程序实现程序的安装,但不管是dpkg还是rpm安装软件时若软件存在依赖性关系,则自动安装所需要软件及相关配置,为实现此功能,rpm需包含自己的数据库(/var/lib/rpm),将安装程序分别安装到指定位置,本次

linux下mysql数据库的学习

转载博客:http://freedomljtt.blog.163.com/blog/static/72294949201210145441701/ ubuntu12.04 卸载和安装mysql 卸载mysql 第一步 1 sudo apt-get autoremove --purge mysql-server-5.0 2 sudo apt-get remove mysql-server 3 sudo apt-get autoremove mysql-server 4 sudo apt-get r

关于Linux下的连接文件学习总结

1.连接文件区分为两种,一种类似windows下快捷方式,使用户能够快速连接到目标文件或目录. 另一种则通过文件系统中的inode连接来产生新文件名,而不是产生新文件. 两种方式分别称为符号/硬连接. 2. 每个文件都会占用一个inode,其中记录了文件的权限和属性等信息,而文件内容由inode指向的block来记录. 而想读取文件的内容,必须先经过文件所在目录block中记录的文件名来指向正确的inode号码才能读取. 所以文件名只与目录有关,但文件内容与inode相关. 3. 硬连接的由来:

Linux下C编程的学习_1

0x0:为什么写这个系列的文章 博客原本的定位是安卓游戏的破解,可是为什么写这系列的文章呢? 由于在破解过程中,我们是无法避免来敲代码的,恢复算法,模拟算法,游戏中对数据的解密.游戏中对保存在client金币的字段加解密,游戏中资源文件动态加解密释放.都离不开我们自己来通过分析之后.自己写出来代码. 当然,语言的选择有非常多.经常使用的为c,c++,python,java,lua,这些都是在游戏破解过程中所使用过的,我们精通一门语言的编写是非常有必要的,否则,仅仅是单纯地看着别人写的教程,对比着

linux下文件加密操作记录

为了安全考虑,通常会对一些重要文件进行加密备份或加密保存,下面对linux下的文件加密方法做一简单介绍: 一. ZIP加密1)文件加密使用命令"zip -e filename.zip filename" 即可出现输入密码的提示,输入2次密码. 此文件即被加密解压时候是需要密码的 下面开始为test.txt文件进行加密 [[email protected] ~]# cat test.txt this is a test!!! [[email protected] ~]# zip -e t

linux下文件加密方法总结

为了安全考虑,通常会对一些重要文件进行加密备份或加密保存,下面对linux下的文件加密方法做一简单总结: 方法一:gzexe加密这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息.它是使用系统自带的gzexe程序,它不但加密,同时压缩文件.示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 3

linux下目录及终端学习

linux目录按调用分为相对路径与绝对路径 相对路径:从当前路径下查找查找目标也可使用./调用当前目录下文件或者../调用上一层目录中文件,可通过pwd查看当前路径 绝对路径:从根目录出发查找文件. 执行cat /etc/passwd命令时由于引用绝对路径,将从根目录直接查找到etc目录,在查找到passwd文件.若采取相对路径,假设当前目录为etc文件,可直接执行cat passwd或者cat ./passwd查找passwd文件. linux下切换目录为cd命令,cd命令也支持相对路径与绝对