千家信息网

互联网中安全和加密的示例分析

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍互联网中安全和加密的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!安全和加密安全机制信息安全防护的目标保密性 Confidentiality完
千家信息网最后更新 2025年12月02日互联网中安全和加密的示例分析

这篇文章主要介绍互联网中安全和加密的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

安全和加密

安全机制

信息安全防护的目标保密性      Confidentiality完整性      Integrity可用性      Usability可控制性    Controlability不可否认性  Non-repudiation安全防护环节物理安全:各种设备/主机、机房环境系统安全:主机或设备的操作系统应用安全:各种网络服务、应用程序网络安全:对网络访问的控制、防火墙规则数据安全:信息的备份与恢复、加密解密管理安全:各种保障性的规范、流程、方法

安全

安全: STRIDESpoofing 假冒     发邮件冒充       telnet 127.0.0.1 25       25端口为邮件工作端口,连接的软件为Postfix,监听ESMTP,对应25端口       helo magedu.com       mail from(以谁的身份发送):mayun@alibaba.com       rcpt to(发送给谁):wang       data(内容)       以.结束dig命令可以做名字解析  -t 可以查到邮件服务器的地址,邮件地址的类型为mx例:    dig  -t mx 163.com   telnet 163mx00.mxmail.netease.com 25 即可连通网易邮箱Tampering 篡改Repudiation 否认Information Disclosure 信息泄漏 (密码泄露)Denial of Service 拒绝服务Elevation of Privilege 提升权限

安全设计基本原则

使用成熟的安全系统以小人之心度输入数据外部系统是不安全的最小授权减少外部接口缺省使用安全模式安全不是似是而非从STRIDE思考在入口处检查从管理上保护好你的系统

安全算法

常用安全技术    认证      授权    审计    安全通信加密算法和协议    对称加密    公钥加密    单向加密    认证协议

对称加密算法

对称加密:加密和解密使用同一个密钥 key1==key2data明文 --->加密(key1)--->data'密文--->(key2)--->data    DES:Data Encryption Standard,56bits         (密钥长度56位,7个字节,逐渐淘汰,不太.安全)    3DES:将DES加密三次    AES:Advanced (128, 192, 256bits)    Blowfish,Twofish 商用    IDEA,RC6,CAST5特性:    1、加密、解密使用同一个密钥,效率高    2、将原始数据分割成固定大小的块,逐个进行加密缺陷:    1、密钥过多    2、密钥分发    3、数据来源无法确认

非对称加密算法

key1 != key2公钥加密:密钥是成对出现    公钥:公开给所有人;public key    私钥:自己留存,必须保证其私密性;secret key特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然功能:    数字签名:主要在于让接收方确认发送方身份    对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方    数据加密:适合加密较小数据缺点:密钥长,加密解密效率低下算法:    RSA(加密,数字签名)    DSA(数字签名)    ELGamal

非对称加密

public key 公钥:公开secret(private) key 私钥:私有 基于一对公钥/密钥对    •用密钥对中的一个加密,另一个解密实现加密:    •接收者        生成公钥/密钥对:P和S        公开公钥P,保密密钥S    •发送者        使用接收者的公钥来加密消息M        将P(M)发送给接收者    •接收者        使用密钥S来解密:M=S(P(M))alice(Pa,Sa)--->bob(Pb,Sb)公钥和私钥成对使用,alice的公钥私钥成对使用,bob的公钥私钥成对使用    一个数据用对应的公钥加密,就必须用对应的成对的私钥解密    反过来,如果用对应的私钥加密,就必须用成对的公钥解密理解:如果用alice的公钥(Pa)加密,就必须用alice的私钥(Sa)解密      如果用alice的私钥(Sa)加密,就必须用alice的公钥(Pa)解密

非对称加密

实现数字签名:    私钥加密 = 数字签名(确认数据来源)    •发送者        生成公钥/密钥对:P和S        公开公钥P,保密密钥S        使用密钥S来加密消息M        发送给接收者S(M)•接收者        使用发送者的公钥来解密M=P(S(M))结合签名和加密分离签名
rpm -K /misc/cd/Packages/tree-1.6.0-10.e17.x86.64.rpm 检查数据来源是否安全每个公司发布包的时候都有数字签名,进行了私钥加密,如果想要确定包的数据来源,就必须使用公钥,进行解密验证包是由哪家公司发布的,系统默认没有公钥,需要导入rpm --import /misc/cd/RPM-GPG-KEY-CentOS-7  导入公钥获得公钥以后即可验证包的数字签名/etc/yum.repos.d/base.repo yum源配置文件中gpgcheck=1 安装某个包的时候要验证包的数子签名,=0则不检查 将密钥的路径写进配置文件,第一次安装包的时候,会导入密钥导入公钥的两种方式:1. rpm --import   导入公钥2.在yum源配置文件中,添加gpgkey路径

RSA和DSA

RSA:公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的,RSA取名来自开发他们三者的名字,后成立RSA数据安全有限公司。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码***,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥DSA (Digital Signature Algorithm):1991年7月26日提交,并归属于David W. Kravitz前NSA员工,DSA是Schnorr和ElGamal签名算法的变种,被美国NIST作为SS(DigitalSignature Standard),DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,只用于签名,它比RSA要快很多DSA只能实现数字签名,无法实现数据加密

单向散列(单向hash算法)

将任意数据缩小成固定大小的"指纹"    •任意长度输入    •固定长度输出    •若修改数据,指纹也会改变("不会产生冲突")    •无法从指纹中重新生成数据("单向")功能:数据完整性常见算法    md5: 128bits、sha1: 160bits、sha224 、sha256、sha384、sha512常用工具    •md5sum | sha1sum [ --check ] file        md5sum fstab > fstab.md5        md5sum -checkfstab.md5 检测md5值     •openssl、gpg    •rpm -V  检测包是否发生修改
hash(data) => digest 摘要 hash算法得到的摘要,不可逆推回数据,单向的数据如果不变,通过hash得到的摘要digest也是固定的如果数据发生改变,得到的摘要则会发生改变结论:数据不同,摘要必不同摘要相同,摘要必相同固定的hash算法,得到的摘要也是固定大小(长度)md5  128bit  数据不同128bit的值不同hash算法 经常用来做数据完整性的检查,检查数据是否被更改

数字签名

原文件利用hash运算(md5)得到128bit的数字摘要(hash值)使用Sa加密得到的hash值,形成数字签名,将原文附加在后面,得到完整的新的文件使用Pb加密生成的新文件,得到密文,发送给对方  确保无法被第三方截获,并确认数据来源使用Sb解密收到的密文,得到数字签名和原文件对原文件做hash运算(md5),得到128bit的数字摘要使用Pa解密数字签名,得到发送来的数字摘要对比两个数字摘要是否一致一致,则原文没有被篡改即实现的数据的安全传输,又实现了数据来源的确认

综合对称加密,非对称加密,和单向散列三种算法,实现加密

key{data +Sa[hash(data)]}+Pb(key) ==>将数据做hash运算,得到数字摘要(digest)       # 单向散列hash算法 使用a的私钥将数字摘要(digest)做数字签名     # 非对称加密算法使用对称加密将原文数据和数字签名进行加密    # 对称加密算法将对称密钥,使用b的公钥进行加密对方可以使用Sb解开对称密钥,得到对称密钥中的数据

应用程序:RPM

文件完整性的两种实施方式被安装的文件    •MD5单向散列    •rpm --verify package_name (or -V)发行的软件包文件    •GPG公钥签名    •rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*    •rpm --checksig pakage_file_name (or -K)

密钥交换

密钥交换:IKE( Internet Key Exchange )    公钥加密:    DH (Deffie-Hellman):生成会话密钥,由惠特菲尔德·迪菲(Bailey Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)在1976年发表参看:https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchangeDH:1>A: g,p 协商生成公开的整数g, 大素数p  B: g,p2>A:生成隐私数据 :a (a

A:计算得出 [(g^b%p)^a] %p = g^ab%p,生成为密钥 B:计算得出 [(g^a%p)^b] %p = g^ab%p,生成为密钥

使用gpg实现对称加密

对称加密file文件    gpg -c file  对文件进行加密    ls file.gpg  生成加密文件在另一台主机上解密file    gpg -o file -d file.gpg

使用gpg工具实现公钥加密

在hostB主机上用公钥加密,在hostA主机上解密在hostA主机上生成公钥/私钥对    gpg --gen-key在hostA主机上查看公钥    gpg --list-keys在hostA主机上导出公钥到wang.pubkey    gpg -a --export -o wang.pubkey从hostA主机上复制公钥文件到需加密的B主机上    scp wang.pubkey hostB:

使用gpg工具实现公钥加密

在需加密数据的hostB主机上生成公钥/私钥对    gpg --list-keys    gpg --gen-key在hostB主机上导入公钥    gpg --import wang.pubkey    gpg --list-keys用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg    gpg -e -r wangxiaochun file    file file.gpg

使用gpg工具实现公钥加密

复制加密文件到hostA主机    scp fstab.gpg hostA:在hostA主机解密文件    gpg -d file.gpg    gpg -o file -d file.gpg删除公钥和私钥    gpg --delete-keys wangxiaochun    gpg --delete-secret-keys wangxiaochun

中间人

CA和证书

PKI:Public Key Infrastructure    签证机构:CA(Certificate Authority)    注册机构:RAc 中间人,他会帮你把申请的证书提交给真正的CA    证书吊销列表:CRL    证书存取库:X.509:定义了证书的结构以及认证协议标准    版本号           主体公钥    序列号           CRL分发点    签名算法         扩展信息    颁发者           发行者签名    有效期限    主体名称

证书获取

证书类型:    证书授权机构的证书    服务器    用户证书获取证书两种方法:•使用证书授权机构    生成证书请求(csr)    将证书请求csr发送给CA    CA签名颁发证书•自签名的证书    自已签发自己的公钥

A将公钥Pa发送给CA,CA验证身份,成功会用自己的私钥签名公钥Sca(Pa)并追加信息:CA的信息,A的信息和有限期 得到证书,将证书发送给A,A从而有了证书A和B事先已经拿到了CA的公钥


所有的机器都必须有rootCA的公钥,rootCA进行自签名Srootca(Prootca)+Prootca,自己证明自己

安全协议

SSL:Secure Socket Layer,TLS: Transport Layer Security    1995:SSL 2.0 Netscape    1996:SSL 3.0    1999:TLS 1.0 国际规范    2006:TLS 1.1 IETF(Internet工程任务组) RFC 4346    2008:TLS 1.2 当前使用    2015:TLS 1.3    功能:机密性,认证,完整性,重放保护两阶段协议,分为握手阶段和应用阶段    握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成    应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信

SSL/TLS

SSL/TLS工作在应用层和传输层中间,把应中层数据加密,到达传输层的时候已经被加密了

SSL/TLS

Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换ChangeCipherSpec 协议:一条消息表明握手协议已经完成Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等HTTPS 协议:就是"HTTP 协议"和"SSL/TLS 协议"的组合。HTTP over SSL"或"HTTP over TLS",对http协议的文本数据进行加密处理后,成为二进制形式传输

HTTPS结构

HTTPS工作过程

OpenSSL

OpenSSL:开源项目三个组件:    openssl:多用途的命令行工具,包openssl    libcrypto:加密算法库,包openssl-libs    libssl:加密模块应用库,实现了ssl及tls,包nssopenssl命令:    两种运行模式:交互模式和批处理模式    openssl version:程序版本号    标准命令、消息摘要命令、加密命令    标准命令:enc, ca, req, ...

openssl命令

对称加密:    工具:openssl enc, gpg    算法:3des, aes, blowfish, twofishenc命令:帮助:man enc加密:openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher解密:openssl enc -d -des3 -a -salt -in testfile.cipher -out testfileopenssl ?-a base64编码salt 盐:将密码顺序打乱,随机生成(也可指定),再进行加密-in 跟加密文件-out 跟输出结果例:加密openssl enc -e -des3 -a -salt -in f1.txt -out f1.txt.enc

openssl命令

单向加密:工具:md5sum, sha1sum, sha224sum,sha256sum…    openssl dgstdgst命令:    帮助:man dgst    openssl dgst -md5 [-hex默认] /PATH/SOMEFILE    openssl dgst -md5 testfile   生成摘要    md5sum /PATH/TO/SOMEFILEMAC: Message Authentication Code,单向加密的一种延伸应用,用于实现网络通信中保证所传输数据的完整性机制CBC-MAC    HMAC:使用md5或sha1算法生成用户密码:    passwd命令:    帮助:man sslpasswd    openssl passwd -1 -salt SALT(最多8位)    openssl passwd -1 -salt centos生成随机数:    帮助:man sslrand    openssl rand -base64|-hex NUM    NUM: 表示字节数,使用-hex,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2公钥加密:    算法:RSA, ELGamal    工具:gpg, openssl rsautl(man rsautl)数字签名:    算法:RSA, DSA, ELGamal密钥交换:    算法:dh    DSA:Digital Signature Algorithm    DSS:Digital Signature Standard    RSA:

openssl命令

生成密钥对儿:man genrsa  生成RSA公钥私钥对生成私钥    openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS                    输出一个私钥文件,要求指定私钥程度(位数)    (umask 077; openssl genrsa -out test.key -des 2048) 使用对称密钥生成口令    例: (umask 066;openssl genrsa -out app.key -des 1024)         -des 生成密钥的的密码,忘记无法破解,可以重新生成    openssl rsa -in test.key -out test2.key 将加密key解密        例:openssl rsa -in app.key  -out app1.key从私钥中提取出公钥    openssl rsa -in PRIVATEKEYFILE -pubout -out PUBLICKEYFILE    openssl rsa -in test.key -pubout -out test.key.pub          例:openssl rsa -in app.key -pubout -out app.key.pub随机数生成器:伪随机数字    键盘和鼠标,块设备中断    /dev/random:仅从熵池返回随机数;随机数用尽,阻塞    /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞

OpenSSL

PKI:Public Key Infrastructure    CA    RA    CRL    证书存取库建立私有CA:    OpenCA    openssl证书申请及签署步骤:    1、生成申请请求    2、RA核验    3、CA签署    4、获取证书

创建CA和申请证书

创建私有CA:    openssl的配置文件:/etc/pki/tls/openssl.cnf    三种策略:match    匹配              optional 可选              supplied 提供    match:要求申请填写的信息跟CA设置信息必须一致    optional:可有可无,跟CA设置信息可不一致    supplied:必须填写这项申请信息,1、创建所需要的文件    touch /etc/pki/CA/index.txt 生成证书索引数据库文件    echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号2、 CA自签证书    生成私钥    cd /etc/pki/CA/    (umask 066; openssl genrsa -out private/cakey.pem 2048)生成自签名证书    openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem    -days 3650 -out /etc/pki/CA/cacert.pem选项说明:    -new: 生成新证书签署请求    -x509:专用于CA生成自签证书    -key: 生成请求时用到的私钥文件    -days n:证书的有效期限    -out /PATH/TO/SOMECERTFILE: 证书的保存路径3、颁发证书在需要使用证书的主机生成证书请求    给web服务器生成私钥    (umask 066; openssl genrsa -out /data/test.key 2048)    生成证书申请文件    openssl req -new -key /data/test.key -out /data/test.csr将证书请求文件传输给CACA签署证书,并将证书颁发给请求者    openssl ca -in /tmp/test.csr -out /etc/pki/CA/certs/test.crt -days 100    注意:默认要求 国家,省,公司名称三项必须和CA一致查看证书中的信息:    openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates    openssl ca -status SERIAL 查看指定编号的证书状态4、吊销证书    在客户端获取要吊销的证书的serial    openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,吊销证书:openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前,才需要执行    echo 01 > /etc/pki/CA/crlnumber更新证书吊销列表    openssl ca -gencrl -out /etc/pki/CA/crl.pem查看crl文件:    openssl crl -in /etc/pki/CA/crl.pem -noout -text

搭建CA架构实操

实验前准备:1.SELINUX关闭2.IPTAB关闭3.时间校验使用openssl搭建CA搭建完成用户向CA申请证书 vim /etc/pki/tls/openssl.cnf   文件详细配置openssl的范例配置文件一台电脑可以搭建多个CA[ ca ]            #为默认CAdefault_ca      = CA_default [ CA_default ]   #定义默认CA的相关信息dir             = /etc/pki/CA       # 默认CA中相关数据的存放路径,dir为变量指的路径certs           = $dir/certs        # 存放发布的证书crl_dir         = $dir/crl          # 存放证书吊销的列表的文件database        = $dir/index.txt    # 存放索引,数据库 (需要手工创建)new_certs_dir   = $dir/newcerts     # 存放新证书路径,新颁发的证书,存放在此目录certificate     = $dir/cacert.pem   # CA自己的证书,rootCA只能自签名serial          = $dir/serial       # 当前序列号,每颁发一个证书都要给它加编号,                                    # 下一个证书颁发的编号到几了,写到此文件                                    # 需要手动创建 crlnumber       = $dir/crlnumber    # 证书吊销列表的编号crl             = $dir/crl.pem           # 证书吊销列表的文件存放的路径private_key     = $dir/private/cakey.pem # CA私钥存放路径RANDFILE        = $dir/private/.rand     # 随机数default_days    = 365                   # 证书默认有效期default_crl_days= 30                    # CRL吊销列表有效值default_md      = sha256                # 默认hash算法preserve        = nopolicy          = policy_match          #颁发证书的策略[ policy_match ]    定义颁发证书的策略搭建CA的时候,需要提交CA的相关信息countryName             = match         # 国家  stateOrProvinceName     = match         # 省份organizationName        = match         # 组织(公司名)organizationalUnitName  = optional      # 部门commonName              = supplied      # 服务器名称或网站域名emailAddress            = optional      # 邮箱国家,省份,组织 三项申请用户必须和CA保持一致[ policy_anything ]  可选,可一样可不一样
CA服务器1.创建所需的文件  touch /etc/pki/CA/index.txt 生成证书索引数据库文件  echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号2.CA自签证书,生成私钥  cd /etc/pki/CA/  (umask 066;openssl genrsa -out private/cakey.pem 2048) #生成私钥文件3.利用私钥,给自己生成一个自签名的证书  openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650  req   表示申请   -new  新证书  -x509 加x509    表示自签名,不加表示普通证书  -key  private/cakey.pem  指定私钥  -out  cacert.pem         生成的证书路径  -days 3650    有效期  写入国家两个字符:CN  省份:beijing  城市:beijing  公司:adong  部门:devops  服务器名称:ca.adong.com  邮箱:... 用户申请证书 1.生成私钥   cd /data/app   (umask 077;openssl genrsa -out app.key 1025) 2.利用私钥生成证书申请文件   openssl req -new -key app.key -out app.csr   申请内容 国家,省份和公司必须和CA保持一致   国家:CN   省份:beijing    城市:bj   公司:adong   部门:devops   服务:app.adong.com   ... 3.将用户申请的证书文件上传到CA服务器   scp app.csr root@192.168.38.100:/etc/pki/CA 4.CA给用户颁发证书   openssl ca -in app.csr -out certs/app.crt -day 100   ca 颁发证书   -in app.csr 证书申请文件   -out certs/app.crt 最终生成的证书,放在/etc/pki/CA/certs目录下  (crt证书文件)   确定提交信息,是否正确,正确y回车即可 5.验证证书是否有效   openssl ca -status 01    Using configuration from /etc/pki/tls/openssl.cnf    01=Valid (V)  #V表示有效
系统默认不允许一个用户申请多个证书cat /etc/pki/CA/index.txt.attrunique_subject = yes  #唯一的申请主题                      #意思是一个主机只能申请一个证书改为no,即可申请多个证书在CA主机申请证书(umask 077;openssl genrsa -out app2.key 1024)openssl req -new -key app2.key -out app2.csropenssl ca -in app2.csr -out /etc/pki/CA/certs/app2.crt -days 100cat /etc/pki/CA/index.txtV   191210091002Z       01  unknown /C=CN/ST=beijing/O=adong/OU=devops/CN=app.adong.comV   191210111559Z       02  unknown /C=CN/ST=beijing/O=adong/OU=devops/CN=ca.app2.com吊销证书openssl ca -revoke /etc/pki/CA/newcerts/02.pemcat /etc/pki/CA/index.txtV   191210091002Z       01  unknown /C=CN/ST=beijing/O=adong/OU=devops/CN=app.adong.comR   191210111559Z   190901111924Z   02  unknown /C=CN/ST=beijing/O=adong/OU=devops/CN=ca.app2.com或者使用命令验证openssl ca -status 02Using configuration from /etc/pki/tls/openssl.cnf02=Revoked (R)被吊销的证书改为Revokde(R)需要生成公开的证书吊销列表,通知其他用户此证书已被吊销创建证书吊销列表目录echo 01 > /etc/pki/CA/crlnumber更新证书吊销列表openssl cs -gencrl -out /etc/pki/CA/crl.pem

以上是"互联网中安全和加密的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0