设为首页 收藏本站
查看: 806|回复: 0

[经验分享] linux下加密解密之OpenSSL

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-23 08:52:49 | 显示全部楼层 |阅读模式
一、为什么要加密
    在网络这个大森林里面,所有的数据传输都是不安全的,在数据传输中必须要给数据加密,以防止被别人劫持盗取

二、数据在网络中怎么传输
    数据从发送出去到目的地都经过了哪些步骤?
    1、ISO国际标准组织定义了数据在网络传输中的七层模型:数据从 应用层--会话层--表达层--传输层--网络层--数据链路层--物理层 逐层封装传输,数据到达最底层后传送出去,到达目标主机后在从底层往上层传输并逐层解压封装。
    2、在TCP/IP定义的四层模型里,数据传输也是一样的道理,应用层--传输层--网络层--物理层。但是这里面并没有定义数据安全方面的内容,在网络的发展过程里,就产生了给数据加密解密的SSL层(ssl并不是真的一个层,只是在应用层与传输层之间给数据规定加载协议的一个标准)。
wKioL1U3jA3xDUCxAAEodFEhTjI313.jpg
wKiom1U3lMvDW1r3AABzDfII3s8858.jpg     我们通过在传输层和应用层之间添加一个SSL层的方式给数据加密。数据由应用层产生和封装,在经过TCP,UDP协议传输之前,用SSL协议对数据流进行二次加工,加密或者解密。
    SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。
SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。


三、加密解密的分类及对应的算法
    1、对称加密:使用同一种算法同一个密码对数据进行加密解密;
         算法:DES、3DES、AES、Blowfish、Towfish、IDEA、RC6、CAST5
    2、非对称加密之公钥加密:公钥从私钥中提取而来,使用私钥加密的文件,只能使用公钥解密,反        之亦然;
         算法:RSA、 DSA、 ELGamal、 DH
    3、非对称加密之单向加密:只能加密,不能解密,用于提取数据的特征码。
         算法:md5、 sha系列256、384、512、128


四、一次加密通信过程
      发送者:

          1.使用单向加密算法提取数据特征码
          2.使用自己的私钥加密特征码附加在数据后面
          3.生成用于对称加密的临时密钥
          4.用此临时密钥加密数据和已经使用私钥加密后的特征码
          5.使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后放
      接受者:
          1.使用自己的私钥解密加密的临时密钥,从而获取对称密钥
          2.使用对称密钥解密对称加密的数据和私钥加密的特征码密文,从而获得数据和特征码密文
          3.使用对方发送的公钥解密特征码密文,从而获得数据特征码
          4.使用与对方同样的党项加密算法计算出数据特征码,并与解密而来的特征码进行比较

五、OpenSSL
     在linux上OpenSSL是基于密码学的安装包
        OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
    1.组成部分:
        (1)libcrypto:加密、解密库文件;

        (2)libssl: ssl协议实现
        (3)openssl:多用途命令行工具,每种功能都使用专用的子命令来实现
    2.openssl命令使用格式

       openssl command [options] [csr_file] [options] [crt_file] [options] #
       openssl+子命令+选项+参数
    3.子命令,输入openssl 回车 回车查看子命令
wKiom1U3mRzyav_tAAA0TPWlm3s281.jpg
    4.子命令用法,使用 man查看

六、使用openssl加密解密文件
    1、对称加密使用openssl enc
        (1)加密文件
    openssl enc -e CIPHER -a -salt -in /PATH/FROM/FILE -out /PATH/TO/FILE
wKioL1U3mnyzk5-2AADv9gKOuKE422.jpg
wKiom1U3mk2BGEWYAAHIEH69u64551.jpg
       (2)解密文件
    openssl enc -d CIPHER -a -salt -in /PATH/FROM/FILE -out /PATH/TO/FILE     
wKioL1U3nL6xozXVAADF-Fpk344748.jpg    
    2、单向加密
        (1)提取文件特征码
        openssl dgst -CIPHER /PATH/TO/FILE
wKiom1U3m_3BNazjAAC8C0PbbFc201.jpg
         (2)生成用户密码并且手动指定随机数
         openssl passwd -1 -salt N随机数
wKioL1U3nf_igdVVAAChKIs1xqs974.jpg
         (3)生成随机数
         openssl rand -hex|-base64 NUM
wKiom1U3nT7TPLY-AADLLmuosA8167.jpg
         (4)生成用户密码并且自动生成随机数
        openssl passwd -1 -salt $(openssl rand -hex|-base64 NUM)
wKiom1U3n2WQdnv4AAKZsPqNhLc484.jpg
    3、公钥加密
        (1)生成私钥
         openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS
       #(umask 077;openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS)给私钥文件加权限
wKioL1U3ojLwbgvVAAKPd8XZ26s653.jpg
         (2)提取公钥
        openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE pubout


    总结:这些只是使用openssl进行加密解密的基础,学linux必须要对其进行了解和掌握
openssl enc -e|-d -des3 -a -salt -in .. -out ..(-a表示生成base64格式,-salt加入随机码)
openssl dgst -md5|-sha ..(对文件提取特征码)
openssl passwd -1 -salt ..(生成用户密码-1表示使用md5算法)
openssl rand -hex|-base64 ..(从熵池中提取随机码)
openssl genrsa -out .. num_bits(按多少字节生成私钥文件)
openssl rsa -in .. -pubout -out .. (从私钥文件中提取公钥并输出到新文件里)




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-59843-1-1.html 上篇帖子: 加密解密基础及openssl构建私有CA初步 下篇帖子: kickstart文件各参数意义以及linux引导镜像制作 linux 加密
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表