加密技术及常见加密算法

有了互联网的同时给我们的日常生活带来了不少的便利,与此同时也给我们带来了不少的安全隐患,可能你在和别人通信的同时,通信数据就被别人截获了,所以就必须要有一种相应的加密技术,来保护我们的通信隐私。那么今天就大家来简单的了解一下加密技术及一些常见的加密算法。

1、为什么需要加密

1、不加密流量的易受攻击性

2、不加密密码/数据容易被嗅探

3、不加密数据容易被操作

4、不加密无法验证操作

5、不加密相当于邮寄明信片

2、不安全的传统协议

telnet、FTP、POP3等等;不安全密码

http、smtp、NFS等等;不安全信息

Ldap、NIS、rsh等等;不安全验证

3、NIST(美国国家标准与技术研究院)定义的安全属性

保密性:

数据保密性

隐私性

完整性:不可篡改

数据完整性

系统完整性

可用性

4、安全攻击: STRIDE

Spoofing(假冒)

Tampering(篡改)

Repudiation(否认)

Information Disclosure(信息泄漏)

Denial of Service(拒绝服务)

Elevation of Privilege(提升权限)

5、安全机制:加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证

6、安全服务

认证

访问控制

数据保密性

连接保密性

无连接保密性

选择域保密性

流量保密性

数据完整性

不可否认性

7、安全设计基本原则

使用成熟的安全系统

以小人之心度输入数据

外部系统是不安全的

最小授权

减少外部接口

缺省使用安全模式

安全不是似是而非

从STRIDE思考

在入口处检查

从管理上保护好你的系统

8、常用安全技术

认证

授权

安全通信

审计

9、密码算法和协议

对称加密

公钥加密

单向加密

认证协议

Linux系统:OpenSSL, gpg(pgp协议的实现)

10、对称加密:加密和解密使用同一个密钥

DES:Data Encryption Standard,56bits

3DES:使用DES加密三次

AES:Advanced (128, 192, 256bits)

Blowfish,Twofish

IDEA,RC6,CAST5

特性:

1、加密、解密使用同一个密钥,效率高

2、将原始数据分割成固定大小的块,逐个进行加密

缺点:

1、密钥过多

2、密钥分发

3、数据来源无法确认

11、非对称加密:

公钥加密:密钥是成对出现

公钥:公开给所有人;public key

私钥:自己留存,必须保证其私密性;secret key

特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

功能:

数字签名:主要在于让接收方确认发送方身份

对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方

数据加密:适合加密较小数据

缺点:密钥长,加密解密效率低下

算法:RSA(加密,数字签名),DSA(数字签名),ELGamal

生成一对钥匙:公钥/密钥,用密钥对中的一个加密,另一个解密

实现加密:

生成公钥/密钥对:P和S

公开公钥P,保密密钥S

发送者

使用接收者的公钥来加密消息M

将P(M)发送给接收者

接收者

使用密钥S来解密:M=S(P(M))

实现数字签名:

发送者

生成公钥/密钥对:P和S

公开公钥P,保密密钥S

使用密钥S来加密消息M

发送给接收者S(M)

接收者

使用发送者的公钥来解密M=P(S(M))

结合签名和加密:key(data+SA(hash(data)))+PB(key)

分离签名

12、单向散列

将任意数据缩小成固定大小的“指纹”

任意长度输入

固定长度输出

若修改数据,指纹也会改变(“不会产生冲突”)

无法从指纹中重新生成数据(“单向”)

功能:数据完整性

常见算法

md5: 128bits、sha1: 160bits、sha224、sha256、sha384、sha512

常用工具

md5sum | sha1sum  [ --check  ]  file

openssl、gpg

rpm  -V

13、密钥交换:IKE( Internet Key Exchange )

公钥加密:

DH (Deffie-Hellman):

DH:

1、A: a,p 协商生成公开的整数a, 大素数p

B: a,p

2、A:生成隐私数据 :x (x<p ),计算得出 a^x%p,发送给B

B:生成隐私数据 :y,计算得出 a^y%p,发送给A

3、A:计算得出 (a^y%p)^x = a^xy%p,生成为密钥

B:计算得出 (a^x%p)^y = a^xy%p, 生成为密钥

14、CA和证书

PKI: Public Key Infrastructure

签证机构:CA(Certificate Authority)

注册机构:RA

证书吊销列表:CRL

证书存取库:

X.509:定义了证书的结构以及认证协议标准

版本号

序列号

签名算法

颁发者

有效期限

主体名称

主体公钥

CRL分发点

扩展信息

发行者签名

15、证书获取

证书类型:

证书授权机构的证书

服务器

用户证书

获取证书两种方法:

使用证书授权机构

生成签名请求(csr)

将csr发送给CA

从CA处接收签名

自签名的证书

自已签发自己的公钥

16、安全协议

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 RFC( Request For Comments ) 4346

2008:TLS 1.2 当前使用

2015: TLS 1.3

功能:机密性,认证,完整性,重放保护

两阶段协议,分为握手阶段和应用阶段

握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套

件以及主密钥,后续通信使用的所有密钥都是通过MasterSecret生成

应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信

SSL/TLS

Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换

ChangeCipherSpec 协议:一条消息表明握手协议已经完成

Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,

fatal类型错误会直接中断SSL链接

warning级别的错误SSL链接仍可继续,只是会给出错误警告

Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等

HTTPS 协议:就是“HTTP 协议”和“SSL/TLS 协议”的组合。HTTP over SSL”或“HTTP over TLS”,对http协议的文本数据进行加密处理后,成为二进制形式传输

17、OpenSSL:开源项目

三个组件:

openssl: 多用途的命令行工具

libcrypto: 加密算法库

libssl:加密模块应用库,实现了ssl及tls

openssl命令:

两种运行模式:交互模式和批处理模式

openssl version:程序版本号

标准命令、消息摘要命令、加密命令

标准命令:

enc, ca, req, ...

对称加密:

工具:openssl enc, gpg

算法:3des, aes, blowfish, twofish

enc命令:man enc

加密:

openssl enc -e -des3 -a -salt -in testfile-out testfile.cipher

解密:

openssl enc -d -des3 -a -salt –in testfile.cipher-out testfile

openssl ?

单向加密:

工具:md5sum, sha1sum, sha224sum,sha256sum…

openssl dgst

dgst命令:man dgst

openssl dgst -md5 [-hex默认] /PATH/SOMEFILE

openssl dgst -md5 testfile

md5sum /PATH/TO/SOMEFILE

MAC: 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:

生成密钥对儿:man genrsa

生成私钥:

openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS

(umask 077; openssl genrsa -out key.pri –des 2048)

从私钥中提取出公钥:

openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE

随机数生成器:伪随机数字

键盘和鼠标

块设备中断

/dev/random:仅从熵池返回随机数;随机数用尽,阻塞

/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞

18、PKI:Public Key Infrastructure

CA

RA

CRL

证书存取库

建立私有CA:

OpenCA

openssl

证书申请及签署步骤:

1、生成申请请求

2、RA核验

3、CA签署

4、获取证书

19、文件完整性的两种实施方式

被安装的文件

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)

20、使用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:

在需加密数据的hostB主机上生成公钥/私钥对

gpg --list-keys

gpg --gen-key

在hostB主机上导入公钥

gpg --import wang.pubkey

gpg --list-keys

用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg

gpg -e -r lovefirewall file

file file.gpg

复制加密文件到hostA主机

scp fstab.gpg hostA:

在hostA主机解密文件

gpg -d file.gpg

gpg -o file  -d file.gpg

删除公钥和私钥

gpg --delete-keys lovefirewall

gpg --delete-secret-keys lovefirewall

时间: 2024-12-23 09:26:52

加密技术及常见加密算法的相关文章

Linux中常见的加密技术介绍

常见的加密技术: 对称加密:非对称加密:单向加密:SSL/TLS:秘钥交换 1.对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. 对称加密的常见算法:DES.3DES.AES.IDEA.RC6.CAST5等 (1)优点 加密.解密使用同一个密钥,效率高: (2)缺点 必须商定秘钥:数据传送前,双方必须商定好秘钥.线上商定,存在被窃取风险: 来源无法确认:如果钥匙被窃取,窃取者就可以冒充另一方进行通讯,接收者无法确认来源:

常见加密技术以及应用-----个人笔记

<?php //1:被泄密的事件:CSDN,天涯社区,冠希哥 //2:常见加密算法:md5(),Crypt(),Sha1(),URL(),Base64() //MD5()加密:单向加密        md5($str[,true]) $str="imooc"; echo md5($str);         //返回数字字母的组合 echo "<hr/>"; echo md5($str,true);    //这样会返回16位2进制数 //注: e

Java加密技术(二)——对称加密算法DES&AES

接下来我们介绍对称加密算法,最常用的莫过于DES数据加密算法. DES DES-Data Encryption Standard,即数据加密算法.是IBM公司于1975年研究成功并公开发表的.DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密. DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位. 通过java

常见数据库加密技术对比

数据库加密作为近年来兴起的数据库安防技术,已经被越来越多的人所重视.这种基于存储层加密的防护方式,不仅可以有效解决数据库明文存储引起的泄密风险,也可以防止来自内部或者外部的入侵及越权访问行为. 从技术手段上来看,现今数据库加密技术主要有三大类,分别是前置代理及加密网关方式.应用层加密方式以及后置代理方式.这三类技术各自的特点如何,彼此之间孰优孰劣,下文详尽介绍. 前置代理及加密网关技术 该技术思路是在数据库之前增加一道安全代理服务,对数据库访问的用户必须经过该安全代理服务,在此服务中实现如数据加

Java加密技术(四)非对称加密算法RSA

RSA  这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman. 这种加密算法的特点主要是密钥的变化,上文我们看到DES只有一个密钥.相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了.RSA同时有两把钥匙,公钥与私钥.同时支持数字签名.数字签名的意义在于,对传输过来的数据进行校验.确保数据在传输工程中不被修改. 流程分析: 甲方构建

Java加密技术(一)——BASE64与单向加密算法MD5&amp;SHA&amp;MAC

http://snowolf.iteye.com/blog/379860 加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了.     言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书.     如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) H

MD5和sha1加密算法--散列加密技术 MD5:128bit的大整数

在很多电子商务和社区应用中,我们都要存放很多的客户的资料,其中包括了很多的隐私信息和客户不愿被别人看到的信息,当然好有客户执行各种操作的密码,此时就需要对客户的信息进行加密再存储,目前有两种比较好的加密算法:MD5和sha1. 这两种加密算法都属于散列加密技术.所谓散列加密就是无论输入的字符串是什么,有多大,加密后都将变成唯一的定长的加密串. 首先介绍一下MD5,MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Secu

Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC

加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了. 言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书. 如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) HMAC(Hash Message Authentication Code,散列消息鉴别码)

Java加密技术(七)——非对称加密算法最高级ECC

ECC ECC-Elliptic Curves Cryptography,椭圆曲线密码编码学,是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制.在软件注册保护方面起到很大的作用,一般的序列号通常由该算法产生. 当我开始整理<Java加密技术(二)>的时候,我就已经在开始研究ECC了,但是关于Java实现ECC算法的资料实在是太少了,无论是国内还是国外的资料,无论是官方还是非官方的解释,最终只有一种答案--ECC算法在jdk1.5后加入支持,目前仅仅只能完成密钥的生成与解析. 如果想