安全和加密

安全和加密需要注意的事项

讲到安全机制,我们信息安全防护的首要目标应该是保密性、完整性、可用性、可控制性、不可否认性。而在安全防护环节,物理安全(各种设备/主机、机房环境)、系统安全(主机或设备的操作系统)、应用安全(各种网络服务、应用程序)、网络安全(对网络访问的控制、防火墙规则)、数据安全(信息的备份与恢复、加密解密)等环节是尤其需要注意的。

受到攻击常出现的状况是:

假冒

篡改

否认

信息泄漏

拒绝服务

提升权限

设计安全机制的基本原则是:

使用成熟的安全系统

严格把控输入数据

外部系统是不安全的

最小授权

减少外部接口

缺省使用安全模式

安全不是似是而非

从STRIDE思考

在入口处检查

从管理上保护好你的系统

不安全的传统协议:

Telnet、FTP、POP3等待;不这全密码

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

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

密码算法和协议:

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

属于对称加密的有:DES(56位),  AES, Blowfish, Twofish, IDEA, RC6, CAST5

特性:加密、解密使用同一个密钥,效率高

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

缺陷:密钥过多

密钥分发

数据来源无法确定

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

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

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

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

功能:

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

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

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

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

算法:

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

单向加密:hash算法的工作原理是将任意数据缩小成固定大小的“指纹”

任意长度输入

固定长度输出

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

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

功能:数据完整性

常见算式:

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

常用工具:

md5sum|sha1sum  [ --check ] file

openssl, gpg

rpm -V

由上图可知:要想知道一个程序是否被改变,可以比对二者的sha1sum值

查看文件完整性的两种实施方式:

(1)被安装过的文件:

MD5单向加密

rpm --verify package_name (or -V)

(2)发行的软件包文件

GPG公钥签名

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*

Rpm --checksig pakage_file_name (or -K)

使用gpg实现对称加密:

(1)对称加密file文件

gpg -c file

ls file.gpg

(2)在另一台主机上解密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 xiaochun file

file file.gpg

复制加密文件到hostA主机

scp fstab.gpg hostA

在hostA主机解密文件

gpg -d file.gpg

gpg -o file -d file.gpg

删除公钥和私钥

gpg --delete-keys xiaochun

gpg --delete-secret-keys xiaochun

Eg:

[[email protected] bin]# gpg --gen-key

gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

gpg: directory `/root/.gnupg‘ created

gpg: new configuration file `/root/.gnupg/gpg.conf‘ created

gpg: WARNING: options in `/root/.gnupg/gpg.conf‘ are not yet active during this run

gpg: keyring `/root/.gnupg/secring.gpg‘ created

gpg: keyring `/root/.gnupg/pubring.gpg‘ created

Please select what kind of key you want:

(1) RSA and RSA (default)

(2) DSA and Elgamal

(3) DSA (sign only)

(4) RSA (sign only)

Your selection? 1

RSA keys may be between 1024 and 4096 bits long.

What keysize do you want? (2048) 1024

Requested keysize is 1024 bits

Please specify how long the key should be valid.

0 = key does not expire

<n>  = key expires in n days

<n>w = key expires in n weeks

<n>m = key expires in n months

<n>y = key expires in n years

Key is valid for? (0) 1

Key expires at Wed 20 Sep 2017 03:00:47 PM CST

Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: xiaohong

Email address:

Comment:

You selected this USER-ID:

"xiaohong"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O

You need a Passphrase to protect your secret key.

can‘t connect to `/root/.gnupg/S.gpg-agent‘: No such file or directory

gpg-agent[5795]: directory `/root/.gnupg/private-keys-v1.d‘ created

┌─────────────────────────────────────────────────────┐

│ Enter passphrase                                    │

│                                                     │

│                                                     │

│ Passphrase **********______________________________ │

│                                                     │

│       <OK>                             <Cancel>     │

└─────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────┐

│ Please re-enter this passphrase                     │

│                                                     │

│ Passphrase **********______________________________ │

│                                                     │

│       <OK>                             <Cancel>     │

└─────────────────────────────────────────────────────┘

We need to generate a lot of random bytes. It is a good idea to perform

some other action (type on the keyboard, move the mouse, utilize the

disks) during the prime generation; this gives the random number

generator a better chance to gain enough entropy.

在上面文字下方界面,你可以一直敲击键盘或移动鼠标,就可以了,

下面是在/root/.gnupg/下面生成了以下文件

用下面命令查看公钥

以同样的方法在另一台主机上生成公钥私钥对

导出公钥到xiaohong.pubkey

查看公钥内容

从主机A复制到主机B

然后,将从主机A导入的公钥也导入,由图可知,主机B有了两把公钥

为/boot/bin/for6.15.sh加密

认证协议

时间: 2024-11-06 07:25:22

安全和加密的相关文章

php7实现基于openssl的加密解密方法

还需要注意的是加密字符串长度问题,如果加密字符串长度太长需要进行分段加解密,如下代码: 加密:(公匙加密,私密一般用来解密) function encrypt($originalData){ $publicKeyFilePath = '/www/ceshi/rsa_public_key.pem'; extension_loaded('openssl') or die('php需要openssl扩展支持'); file_exists($publicKeyFilePath) or die('公钥的文

python实现网页登录时的rsa加密流程

对某些网站的登录包进行抓包时发现,客户端对用户名进行了加密,然后传给服务器进行校验. 使用chrome调试功能断点调试,发现网站用javascript对用户名做了rsa加密. 为了实现网站的自动登录,需要模拟这个加密过程. 网上搜了下关于rsa加密的最简明的解释: rsa加密是非对称加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥.公钥是可发布的供任何人使用,私钥则为自己

人工智能PK透明加密,数据安全保护谁能技高一筹

人工智能一直是全球的一大热点话题,从很久之前谷歌研发的人工智能机器人击败柯洁.李世石等众多围棋高手,到最近特斯拉CEO埃隆o马斯克投资的人工智能研究机构OpenAI研发的机器人击败了国外顶尖Dota 2玩家之一的Danil Ishutin.而重磅消息却是美国电商巨头亚马逊,已准备将人工智能技术用于商业服务中,计划将其用于云存储方面,用于保护用户数据的安全. 亚马逊的这一计划,主要是通过机器学习技术,自动识别.分类和保护用户保存在亚马逊云计算平台上的敏感数据.但引入人工智能技术之后,亚马逊的云存储

Java DES 加密和解密源码

Java密码学结构设计遵循两个原则: 1) 算法的独立性和可靠性. 2) 实现的独立性和相互作用性. 算法的独立性是通过定义密码服务类来获得.用户只需了解密码算法的概念,而不用去关心如何实现这些概念.实现的独立性和相互作用性通过密码服务提供器来实现.密码服务提供器是实现一个或多个密码服务的一个或多个程序包.软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器.安装和配置提供器,可将包含提供器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来

使用JAVA解压加密的中文ZIP压缩包

近来项目中需要对ZIP压缩包解压,然后将解压后的内容存放到指定的目录下. 该压缩包的特性: 使用标准的zip压缩格式(压缩算法没有深入探究) 压缩包中带有目录并且目录名称是中文 压缩时加了密码 因为jre中自带的java.util.zip.*包不支持中文及加密压缩,所以选择使用zip4j包. 下面是解压的实现代码: 1 public class UnZip { 2 private final int BUFF_SIZE = 4096; 3 4 /* 5 获取ZIP文件中的文件名和目录名 6 */

关于数据传输中加密解密那点事儿(一)

随着互联网的兴起,越来越多的信息和资源要通过网络传输完成:然而在这些数据传输中总有一些"无关人员"做一些窃听.盗取.篡改等危害数据安全的行为,所以我们要对数据进行加密处理,以保证数据的安全传输: 所以有了一下几种加密方式: 一.对称加密: 这种算法简单来说就是 数据的发送方和接收方都必须要有同一种密钥(加密数据所用到的密钥),在数据的传输中 数据与密钥都通过加密的方式传送: 特性:在数据加密中,数据被分成固定大的块,逐个加密:加密和解密速度也快: 缺陷:因为加密和解密使用同一种密钥,所

如何有效的对PDF文件进行加密保护

PDF是办公中保存资料数据文件不可或缺的一类电子文件工具软件,它的优势在于清晰的位图显示形式和良好的阅读体验,所以很多合同报告.电子书.技术文档.设计图纸等都越来越倾向这种存储方式.和普通的电子文档一样,如Word.Excel,PDF文件也存在信息安全泄漏风险,因此加密保护也是必不可少的.下面就来分享下如何对PDF进行权限设置和PDF文件加密操作. PDF格式的官方编辑器Adobe acrobat 软件为我们提供的口令加密包含"打开文档的口令"和"限制文档编辑打印口令&quo

MD5加密和RSA加密

1.MD5加密  MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),MD5算法的使用不需要支付任何版权费用. MD5的功能:     ①.输入任意长度的信息,经过处理,输出为128位的信息(数字指纹):    ②.不同的输入得到的不同的结果(唯一性):    ③.根据128位的输出结果不可能反推出输入的信息(不可逆),也就是只能加密,不能解密:  MD5的用途:     1.防止被篡改:    1)比如发送一个电子文档,发送前,我先得到MD5的

AJAX+REA实现前后台数据交互的加密解密

AJAX+REA实现前后台数据交互的加密解密 1.创建js文件Encryption.js /**  * 加密解密  */ /** RSA加密用 生成key */ function bodyRSA(){ /** 1024位的key参数写130,2014位的key参数写260 */ setMaxDigits(130); /** ajax 调用后台方法,取回公钥 */ var keyR ;     $.ajax({      url: "/GHGL/Key/pk",//请求后台的url,本例

Android使用KeyStore对数据进行加密

谈到 Android 安全性话题,Android Developers 官方网站给出了许多很好的建议和讲解,涵盖了存储数据.权限.网络.处理凭据.输入验证.处理用户数据.加密等方方面面 密钥的保护以及网络传输安全 应该是移动应用安全最关键的内容.Android 提供大量用来保护数据的加密算法,例如 Cipher 类中提供了 AES 和 RSA 算法,再例如安全随机数生成器 SecureRandom 给 KeyGenerator 提供了更加可靠的初始化参数,避免离线攻击等等. 而如果需要存储密钥以