Openssl和AMT技术 TSL_PSK

  • Post author:
  • Post category:其他

TLS全称”transport  layer  security”指的是传输层安全,传输层是OSI参考模型的第四层,提供数据可靠或不可靠的传输,我们这里只讲可靠的传输.可以说现在没有绝对安全的网络,比方说Randy和Merry通信,网络上有个Hacker使用Sniffer,他很容易就能抓到他们之间通信的数据包,而且还可以对数据进行篡改,你想想,若是像国家银行这样的部门的数据被人嗅探走了进行篡改,那会是什么样的结果,岂不乱了套…所以我们要对传输的数据进行加密,这样会安全些…

对于PKI和PSK两种Provision方法有了一定的了解。随着学习的深入感觉AMT技术如果从两个大的方面来看的话,可以说是分为网络技术和嵌入式技术。对于ME的provision方法,可以说就是网络技术的综合运用。首先是建立一个安全的网络通信环境,然后是通过网络传输数据,对ME进行远程的配置。在本地端,ME可以说是一个嵌入式系统,如果从非常广的从面来看的话,BIOS也可以看为一个嵌入式操作系统。
  Intel提供了对于ME控制的API函数,我们如果掌握了对于ME的PROVISOION的方法之后,知道一定的编程方法之后,就可以对于ME进行一定的设置,可以实现一定的功能。如果要是非常厉害的话,就可以编写自己的AMT控制软件。如果我们只是从功能的层面来看的话,我们可以将AMT技术认为是远程控制的BIOS任务。个人感觉ME和BIOS之间有数据的通信,ME可以读取和修改BIOS当中的数据。在DTK工具当中,我们一般用SOL来读取BIOS当中的信息。在网络当中,有一类比较简单的PPP通信协议,可以实现数据的传输,这种协议比较简单,容易实现。AMT支持OOB通信,在OS崩溃或是没有OS的时候,也能够传输数据,需要ME有单独的TCP/IP协议栈,能够使他实现上述功能。
  PSK 全称是Pre-shared Key,是一种算法,主要用来建立网络上的安全的通信连接。在这种算法当中,包含了一个标准的TLS_PSK handshake。Intel AMT 作为Tls Server,配置Server作为TLS Client。
 
下面我们谈谈加密的方式….
 
单向加密:保证数据完成性…(双方进行通信的时候,防止被第三方将嗅探到的数据进行更改在发给受害者.所以要检查数据的完整性..)
对称加密:加密数据…(对数据进行加密,对称加密需要双方有共同的密码.使用密码变换机制.即使hacker捕获到数据包,也是一堆乱码.他要进行破解会得很长时间..)
非对称加密:身份验证,密钥交换..(Randy和Merry通信,Randy必须保证他是在和Merry通信,而不是冒充Merry的人,所以两人要进行密钥的交换,确保是对方后再通信.)
  
先简单介绍一下openssl的一些用法…
#openssl   version          (显示当前使用openssl版本信息..)
#openssl   version   -a    (除了显示当前openssl版本信息外,还显示加密算法..)
#openssl  ?                   (我们可以使用此命令来查看openssl支持的加密命令…)
#openssl  speed            (分别显示所有加密算法的速度,也可以指定某个算法.查看其加密速度..)
#openssl  ciphers          (显示常用的加密算法…)
    下面我们来举个加密档案的列子,比方说我们现在又个档案名字叫test,指定加密方式为des3,默认使用MD5…

#openssl  enc  -des3   -a  -sal

t  -in  test   -out   test.des3 (执行完此命令后输入密码,密码为redhat,记住test.des3是加密后的文件,后面指定加密方式,为了以后解密时用到..)
#rm   -rf   test
#openssl  enc  -d    -des3  -a  -salt  -in  test.des3  -out   test  (输入密码redhat,解密文件后输出到test文件中,然后我们用cat命令去查看会发现和以前test文件内容一样..)
#openssl   rand   -base64   5  (生成一个随机数…在创建密钥的时候用到..)
单向加密用来提取一段数据的特征码…
sha是指安全的哈希算法,sha1安全但是据算起来很慢…所以一般采用MD5

 
#sha1sum   FILENAME > FILENAME.SHA  (计算一个文件的效验码追加到FILENAME.SHA中)
#openssl   dgst   -sha1  FILENAME  (也是计算文件效验码,和上一个命令差不多,只是显示结果格式不同而已)
#sha1sum   –check  FILENAME.SHA  (可以查看FILENAME中的内容是否被改动过,这些我第一测试过,如果文件内容被改动执行结果会报错,否则就显示OK,证明没改动过..)

 
接下来我们配置一个CA服务器,这个至关重要,很多一些重要的机构中都要用到….
 
配置一个CA服务器…(这儿我们把CA服务器也当成客户机,方便测试用)
#cd  /etc/pki/CA
为CA服务器生成一个2048位的密钥追加到cakey.pem中…
#openssl  genrsa 2048 > private/cakey.pem 
CA服务器为自己签发证书,有效期限为3655天…
#openssl  req  -new  -x509  -key   private/cakey.pem  -out  .cacert.pem   -days   3655

编辑此文件找到[ CA_default ]
#Vim  /etc/pki/tls/openssl.cnf
将dir  =  ../../CA改成dir   =  /etc/pki/CA

创建工作目录和所需要的文件…
mkdir   ./newcerts
touch   ./{serial,index.txt}
向serial文件中写入一个编号,这里我们就以00开始…
echo  “00”  > ./serial

客户端的配置…
创建工作目录…
mkdir  /root/testcrt ;cd  /root/testcrt

为客户端生成一个1024位的密钥追加到test.key中…
openssl  genrsa   1024  > test.key

从客户端的私钥中提取公钥放到test.pub中…
openssl   rsa   -in   test.key  -pubout   -out   test.pub

用自己的密钥生成一个请求提交给CA服务器…
openssl   req   -new  -key  test.key  -out   test.csr

查看自己提交的请求,确认没有错误然后提交请求…
openssl   req   -in   test.csr   -noout    -text

CA签发来自客户机请求的证书

openssl   ca   -in   test.csr   -out    test.crt
查看签发的证书…
openssl   x509   -in   test.crt   -noout   -text