導航:首頁 > 文檔加密 > openssl安全加密協議

openssl安全加密協議

發布時間:2025-01-10 15:48:29

1. openSSL漏洞是什麼啊

openSSL是一個保護網路通信安全和數據完整的安全協議,就像一個門鎖。其他專業的東西知道也沒用,就不講了。它主要是應用在在網銀,在線支付,電商還有電子郵件這方面,保護支付安全和通信保密的。所有地址欄https的,都是用它加密的。 所以說,雖然這個名詞看起來陌生,但是和咱們普通用戶還是很有關系的。
我也是最近聽說出了漏洞,特別關注了一下。這個漏洞是說有些版本的openSSL能夠讓入侵者一點一點的翻閱用戶的信息。然後拼湊出你的銀行密碼等等隱私數據。這個危害當然是很大了。
我們普通的用戶,平時最好開通一下手機驗證,還有勤換密碼。這樣可以稍微安全點 。 我電腦上本來裝過騰訊電腦管家,可以防病毒,檢測網路安全環境,現在又緊急推出了openSSL漏洞預警功能,在登錄有漏洞的網址時會彈出攔截。所以我就順便用它再加一重保險了。別家軟體我也沒聽說有這方面做的更好的了。你要是擔心的話可以下一個這種安全軟體。
希望能幫到你啦~

2. 基於openssl庫實現AES加密(C語言)

AES加密演算法是一種廣泛應用的對稱加密技術,具有較高的加密效率和安全性。其核心包括分組密碼、位元組代換、行位移、列混合和輪密鑰加等操作。AES使用相同的密鑰進行加密與解密,演算法結構公開,計算量小,適用於多種場景。然而,多用戶通信時密鑰分發和管理較為困難。AES的分組長度為128位,推薦加密輪數為10輪,操作包括4個主要步驟。

在使用AES加密時,需要考慮演算法性能與應用范圍。AES-128演算法的破解難度極高,需要龐大硬體資源和長時間計算。AES演算法廣泛應用於信息安全領域,如WLAN、HTTPS協議和支付平台。

OpenSSL庫作為安全套接字層密碼庫,包含SSL協議、命令工具和密碼演算法庫。OpenSSL由libssl、libcrypto和命令工具三部分組成,提供SSL協議實現和安全密碼操作。

OpenSSL的AES加密API包括生成密鑰、加密和解密數據塊的函數。常用的API有AES_set_encrypt_key、AES_set_decrypt_key、AES_encrypt、AES_decrypt等。每個函數都針對特定操作,如AES_set_encrypt_key用於生成加密密鑰,AES_encrypt用於加密數據塊。

代碼實現以CBC模式為例,在Linux環境下編譯運行,展示了AES加密過程。該實現包含初始化密鑰、加密數據塊和輸出結果等步驟,符合AES加密演算法標准。

綜上所述,AES加密演算法結合OpenSSL庫提供了高效、安全的加密解決方案。通過對演算法原理、性能、應用和API的深入理解,可以實現復雜場景下的數據加密需求。代碼示例展示了實際應用中的加密過程,為開發者提供了參考。

3. OpenSSL 功能介紹

1 概述

OpenSSL 是一個安全套接字層密碼庫,囊括主要的密碼演算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。

OpenSSL是實現安全套接字層(SSL v2 / v3)和傳輸層安全(TLS v1)網路協議及其所需的相關加密標準的加密工具包。

OpenSSL:開源項目

三個組件:

openssl: 多用途的命令行工具,包openssl

libcrypto: 加密算運塌扒法庫,包openssl-libs

libssl:加密模塊應用庫,實現了ssl及tls,包nss

.openssl命令:

兩種運行模式:交互模式和批處理模式

opensslversion:程序版本號

標准命旁昌令、消息摘要命令、加密命令

標准命令:enc, ca, req, ...

查看幫助:openssl ?

可以通過openssl 來創建CA和頒發證書,文章 http://ghbsunny.blog.51cto.com/7759574/1964754

有做介紹,本文僅介紹openssl這個工具包的其他常用功能

2 案例介紹

2.1 對稱加密

工具:openssl  enc, gpg,文章 http://ghbsunny.blog.51cto.com/7759574/1964887 已經介紹

演算法:3des, aes, blowfish, twofish

.enc命令:

對稱密碼命令允許使用基於密碼或明確提供的密鑰的各種塊和流密碼來加密或解密數據。 Base64編碼或解碼也可以通過本身或加密或解密來執行。

The symmetric cipher commands allow data to be encrypted or decrypted using various block and stream ciphers using keys based on passwords or explicitly provided. Base64 encoding or decoding can also be performed either by itself or in addition to the encryption or decryption.

幫助:man enc

例子

加密文件

以下命令運行需要輸入一個密碼,當解密的時候需要輸入相同的密碼才能解密,這里新生成的文件後綴名不一定是cipher,可以自己指定

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

解密文件

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

2.2 公鑰加密

公鑰加密生成非對稱的密鑰

演算法:RSA, ELGamal

工具:gpg, openssl  rsautl(man rsautl)

數字簽名:

演算法:RSA, DSA, ELGamal

密鑰交換:

演算法:dh

DSA: Digital Signature Algorithm

DSS:Digital Signature Standard

RSA公鑰加密演算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。命名是取其名字首衫沒字母組合成RSA

RSA公鑰與私鑰主要用於數字簽名(Digital Signature)與認證(Authentication),我們一般也稱之為不對稱加密/解密。

2.2.1 生成密鑰對

幫助:man genrsa

.生成私鑰,這個生成密鑰的過程要掌握

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

私鑰文件生成後,建議把許可權改成600,保護,放在被其他人查看密碼信息

私鑰里的文件,如果被拿到,沒有通過des這關鍵字加密的話,就相當於是明文

這個命令執行的時候,要輸入八位數的密碼,當要使用這個私鑰的時候需要輸入密碼

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

括弧表示子進程,結束後,umask就會恢復未默認的值,umask的值使得其他人和組都沒有任何許可權,是為了保護生成的私鑰

2.2.2 從私鑰中提取出公鑰,導出公鑰

公鑰推不出私鑰,私鑰可以推出公鑰

openssl  rsa  -in PRIVATEKEYFILE –pubout  –out PUBLICKEYFILE

Openssl  rsa  –in test.key  –pubout  –out test.key.pub

公鑰是公開的,可以不設置許可權,以上是生成公鑰

2.2.3 公鑰加密文件

openssl rsautl -encrypt -in input.file -inkey pubkey.pem -pubin -out output.file

-in 指定被加密的文件

-inkey 指定加密公鑰文件

-pubin 表面是用純公鑰文件加密

-out 指定加密後的文件

例子:

openssl rsautl -encrypt -in ftpback -inkey test.key.pub -pubin -out ftpssl

2.2.4 私鑰解密文件

openssl rsautl -decrypt -in input.file -inkey key.pem -out output.file

-in 指定需要解密的文件

-inkey 指定私鑰文件

-out 指定解密後的文件

例子:

openssl rsautl -decrypt -in ftpssl -inkey test.key -out  ftpdec

2.3 單向加密

單向加密即獲取摘要

工具:md5sum, sha1sum, sha224sum,sha256sum…

openssl    dgst

dgst:摘要功能輸出所提供文件的消息摘要或十六進制形式的文件。 它們也可用於數字簽名和驗證。

The digest functions output the message digest of a supplied file or files in hexadecimal form. They can also be used for digital signing and verification.

.dgst命令:

幫助:man dgst

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

openssl dgst  -md5 testfile

以上命令將文件生成一個固定長度的摘要值,演算法是md5,大小佔128bite

md5sum /PATH/TO/SOMEFILE

以上這兩個md5得到的結果是一樣的

.MAC: Message Authentication Code,單向加密(hash)的一種延伸應用,用於實現網路通信中保證所傳輸數據的完整性機制

MAC 消息認證碼,構造方法可以基於hash,也可以基於對稱加密演算法,HMAC是基於hash的消息認證碼。數據和密鑰作為輸入,摘要信息作為輸出,常用於認證。

源文檔

2.4 生成用戶密碼

passwd命令:

幫助:man sslpasswd

openssl  passwd  -1 -salt SALT

-1對應的就是hash的md5演算法

SALT:這里是鹽值,人為指定,使得同一密碼生成的加密值不一樣,最多8位,超過8位沒有意義,比如前面8位一樣,後面還有幾位數不一樣,這樣生成的密碼值是一樣的

openssl  passwd  -1 –salt centos

grub-md5-crypt同樣生成md5加密的口令,centos為鹽值

比如這里的密碼我都是輸入123,但是鹽值不一樣,一個是centos,一個是centos6,生成的加密值不一樣

2.5 生成隨機數

幫助:man sslrand

rand命令在播放隨機數生成器一次後輸出num偽隨機位元組。 與其他openssl命令行工具一樣,除了-rand選項中給出的文件外,PRNG種子使用文件$ HOME / .rnd或.rnd。 如果從這些來源獲得足夠的播種,將會寫回新的$ HOME / .rnd或.rnd文件。

The rand command outputs num pseudo-random bytes after seeding the random number generator once.  As in other openssl command line tools, PRNG seeding uses the file $HOME/.rnd or .rnd in addition to the files given in the  -rand option.  A new $HOME/.rnd or .rnd file will be written back if enough seeding was obtained from these   sources.

openssl  rand -base64|-hex NUM

指定數字生成隨機數,如果是-hex 後面的數值比如6,那麼生成的長度是12位,因為hex生成的隨機數是16進制組合的數,hex 後面的num是位元組數,一個16進制數佔用4位,半個位元組

base後面可以生成隨機密碼

base64 生成隨機的數,可以用任何字元,也可以把圖片保存成base64的格式,通過base64生成的圖片,可以

用base64來還原出圖片

NUM: 表示位元組數;-hex時,每個字元為十六進制,相當於4位二進制,出現的字元數為NUM*2

3 總結

openssl還有很多用法,本文僅單純介紹了其中一部分,更多用法請使用幫助 man openssl 進行查看

4. Linux裡面openssl作用是什麼

主要是用來安全的。
openssl命令 – 加密演算法
openSSL是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。對應的命令就是openssl命令,用於加密演算法。《Linux就該這么學》
語法格式:openssl [參數]
舉例子:
用SHA1演算法計算文件file.txt的哈西值,輸出到stdout:
# openssl dgst -sha1 file.txt

5. OpenSSL 什麼意思

分都沒有,真郁悶

openssl OpenSSL簡介
SSL是Secure Socket Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸。Netscape公司在推出第一個Web瀏覽器的同時,提出了SSL協議標准,目前已有3.0版本。SSL採用公開密鑰技術。其目標是保證兩個應用間通信的保密性和可靠性,可在伺服器端和用戶端同時實現支持。目前,利用公開密鑰技術的SSL協議,已成為Internet上保密通訊的工業標准。安全套接層協議能使用戶/伺服器應用之間的通信不被攻擊者竊聽,並且始終對伺服器進行認證,還可選擇對用戶進行認證。SSL協議要求建立在可靠的傳輸層協議(TCP)之上。SSL協議的優勢在於它是與應用層協議獨立無關的,高層的應用層協議(例如:HTTP,FTP,TELNET等)能透明地建立於SSL協議之上。SSL協議在應用層協議通信之前就已經完成加密演算法、通信密鑰的協商及伺服器認證工作。在此之後應用層協議所傳送的數據都會被加密,從而保證通信的私密性。通過以上敘述,SSL協議提供的安全信道有以下三個特性: 1.數據的保密性 信息加密就是把明碼的輸入文件用加密演算法轉換成加密的文件以實現數據的保密。加密的過程需要用到密匙來加密數據然後再解密。沒有了密鑰,就無法解開加密的數據。數據加密之後,只有密匙要用一個安全的方法傳送。加密過的數據可以公開地傳送。 2.數據的一致性 加密也能保證數據的一致性。例如:消息驗證碼(MAC),能夠校驗用戶提供的加密信息,接收者可以用MAC來校驗加密數據,保證數據在傳輸過程中沒有被篡改過。 3.安全驗證 加密的另外一個用途是用來作為個人的標識,用戶的密匙可以作為他的安全驗證的標識。SSL是利用公開密鑰的加密技術(RSA)來作為用戶端與伺服器端在傳送機密資料時的加密通訊協定。
什麼是OpenSSL
眾多的密碼演算法、公鑰基礎設施標准以及SSL協議,或許這些有趣的功能會讓你產生實現所有這些演算法和標準的想法。果真如此,在對你表示敬佩的同時,還是忍不住提醒你:這是一個令人望而生畏的過程。這個工作不再是簡單的讀懂幾本密碼學專著和協議文檔那麼簡單,而是要理解所有這些演算法、標准和協議文檔的每一個細節,並用你可能很熟悉的C語言字元一個一個去實現這些定義和過程。我們不知道你將需要多少時間來完成這項有趣而可怕的工作,但肯定不是一年兩年的問題。
首先,應該感謝Eric A. Young和Tim J. Hudson,他們自1995年開始編寫後來具有巨大影響的OpenSSL軟體包,更令我們高興的是,這是一個沒有太多限制的開放源代碼的軟體包,這使得我們可以利用這個軟體包做很多事情。Eric A. Young 和Tim J. Hudson是加拿大人,後來由於寫OpenSSL功成名就之後就到大公司里賺大錢去了。1998年,OpenSSL項目組接管了OpenSSL的開發工作,並推出了OpenSSL的0.9.1版,到目前為止,OpenSSL的演算法已經非常完善,對SSL2.0、SSL3.0以及TLS1.0都支持。
OpenSSL採用C語言作為開發語言,這使得OpenSSL具有優秀的跨平台性能,這對於廣大技術人員來說是一件非常美妙的事情,可以在不同的平台使用同樣熟悉的東西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,這使得OpenSSL具有廣泛的適用性。不過,對於目前新成長起來的C++程序員,可能對於C語言的代碼不是很習慣,但習慣C語言總比使用C++重新寫一個跟OpenSSL相同功能的軟體包輕松不少。
OpenSSL整個軟體包大概可以分成三個主要的功能部分:密碼演算法庫、SSL協議庫以及應用程序。OpenSSL的目錄結構自然也是圍繞這三個功能部分進行規劃的。
作為一個基於密碼學的安全開發包,OpenSSL提供的功能相當強大和全面,囊括了主要的密碼演算法、常用的密鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程序供測試或其它目的使用。
1.對稱加密演算法
OpenSSL一共提供了8種對稱加密演算法,其中7種是分組加密演算法,僅有的一種流加密演算法是RC4。這7種分組加密演算法分別是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持電子密碼本模式(ECB)、加密分組鏈接模式(CBC)、加密反饋模式(CFB)和輸出反饋模式(OFB)四種常用的分組密碼加密模式。其中,AES使用的加密反饋模式(CFB)和輸出反饋模式(OFB)分組長度是128位,其它演算法使用的則是64位。事實上,DES演算法裡面不僅僅是常用的DES演算法,還支持三個密鑰和兩個密鑰3DES演算法。
2.非對稱加密演算法
OpenSSL一共實現了4種非對稱加密演算法,包括DH演算法、RSA演算法、DSA演算法和橢圓曲線演算法(EC)。DH演算法一般用戶密鑰交換。RSA演算法既可以用於密鑰交換,也可以用於數字簽名,當然,如果你能夠忍受其緩慢的速度,那麼也可以用於數據加密。DSA演算法則一般只用於數字簽名。
3.信息摘要演算法
OpenSSL實現了5種信息摘要演算法,分別是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA演算法事實上包括了SHA和SHA1兩種信息摘要演算法,此外,OpenSSL還實現了DSS標准中規定的兩種信息摘要演算法DSS和DSS1。
4.密鑰和證書管理
密鑰和證書管理是PKI的一個重要組成部分,OpenSSL為之提供了豐富的功能,支持多種標准。
首先,OpenSSL實現了ASN.1的證書和密鑰相關標准,提供了對證書、公鑰、私鑰、證書請求以及CRL等數據對象的DER、PEM和BASE64的編解碼功能。OpenSSL提供了產生各種公開密鑰對和對稱密鑰的方法、函數和應用程序,同時提供了對公鑰和私鑰的DER編解碼功能。並實現了私鑰的PKCS#12和PKCS#8的編解碼功能。OpenSSL在標准中提供了對私鑰的加密保護功能,使得密鑰可以安全地進行存儲和分發。
在此基礎上,OpenSSL實現了對證書的X.509標准編解碼、PKCS#12格式的編解碼以及PKCS#7的編解碼功能。並提供了一種文本資料庫,支持證書的管理功能,包括證書密鑰產生、請求產生、證書簽發、吊銷和驗證等功能。
事實上,OpenSSL提供的CA應用程序就是一個小型的證書管理中心(CA),實現了證書簽發的整個流程和證書管理的大部分機制。
5.SSL和TLS協議
OpenSSL實現了SSL協議的SSLv2和SSLv3,支持了其中絕大部分演算法協議。OpenSSL也實現了TLSv1.0,TLS是SSLv3的標准化版,雖然區別不大,但畢竟有很多細節不盡相同。
雖然已經有眾多的軟體實現了OpenSSL的功能,但是OpenSSL裡面實現的SSL協議能夠讓我們對SSL協議有一個更加清楚的認識,因為至少存在兩點:一是OpenSSL實現的SSL協議是開放源代碼的,我們可以追究SSL協議實現的每一個細節;二是OpenSSL實現的SSL協議是純粹的SSL協議,沒有跟其它協議(如HTTP)協議結合在一起,澄清了SSL協議的本來面目。
6.應用程序
OpenSSL的應用程序已經成為了OpenSSL重要的一個組成部分,其重要性恐怕是OpenSSL的開發者開始沒有想到的。現在OpenSSL的應用中,很多都是基於OpenSSL的應用程序而不是其API的,如OpenCA,就是完全使用OpenSSL的應用程序實現的。OpenSSL的應用程序是基於OpenSSL的密碼演算法庫和SSL協議庫寫成的,所以也是一些非常好的OpenSSL的API使用範例,讀懂所有這些範例,你對OpenSSL的API使用了解就比較全面了,當然,這也是一項鍛煉你的意志力的工作。
OpenSSL的應用程序提供了相對全面的功能,在相當多的人看來,OpenSSL已經為自己做好了一切,不需要再做更多的開發工作了,所以,他們也把這些應用程序成為OpenSSL的指令。OpenSSL的應用程序主要包括密鑰生成、證書管理、格式轉換、數據加密和簽名、SSL測試以及其它輔助配置功能。
7.Engine機制 Engine機制的出現是在OpenSSL的0.9.6版的事情,開始的時候是將普通版本跟支持Engine的版本分開的,到了OpenSSL的0.9.7版,Engine機制集成到了OpenSSL的內核中,成為了OpenSSL不可缺少的一部分。 Engine機制目的是為了使OpenSSL能夠透明地使用第三方提供的軟體加密庫或者硬體加密設備進行加密。OpenSSL的Engine機製成功地達到了這個目的,這使得OpenSSL已經不僅僅使一個加密庫,而是提供了一個通用地加密介面,能夠與絕大部分加密庫或者加密設備協調工作。當然,要使特定加密庫或加密設備更OpenSSL協調工作,需要寫少量的介面代碼,但是這樣的工作量並不大,雖然還是需要一點密碼學的知識。Engine機制的功能跟Windows提供的CSP功能目標是基本相同的。目前,OpenSSL的0.9.7版本支持的內嵌第三方加密設備有8種,包括:CryptoSwift、nCipher、Atalla、Nuron、UBSEC、Aep、SureWare以及IBM 4758 CCA的硬體加密設備。現在還出現了支持PKCS#11介面的Engine介面,支持微軟CryptoAPI的介面也有人進行開發。當然,所有上述Engine介面支持不一定很全面,比如,可能支持其中一兩種公開密鑰演算法。
8.輔助功能
BIO機制是OpenSSL提供的一種高層IO介面,該介面封裝了幾乎所有類型的IO介面,如內存訪問、文件訪問以及Socket等。這使得代碼的重用性大幅度提高,OpenSSL提供API的復雜性也降低了很多。
OpenSSL對於隨機數的生成和管理也提供了一整套的解決方法和支持API函數。隨機數的好壞是決定一個密鑰是否安全的重要前提。
OpenSSL還提供了其它的一些輔助功能,如從口令生成密鑰的API,證書簽發和管理中的配置文件機制等等。如果你有足夠的耐心,將會在深入使用OpenSSL的過程慢慢發現很多這樣的小功能,讓你不斷有新的驚喜。

閱讀全文

與openssl安全加密協議相關的資料

熱點內容
linux硬碟模式 瀏覽:11
怎麼查安卓的空間 瀏覽:587
linux命令復制命令 瀏覽:115
勞動法裡面有沒有帶工資演算法的 瀏覽:456
如何在u盤里拷解壓軟體 瀏覽:689
oracle資料庫登陸命令 瀏覽:614
python自動化運維之路 瀏覽:400
eclipsejava教程下載 瀏覽:987
tita搜索app怎麼配置 瀏覽:263
oracle的連接命令 瀏覽:1002
基於單片機的恆溫水壺 瀏覽:884
鴻蒙系統文件夾怎麼換背景 瀏覽:296
b站動畫演算法 瀏覽:712
程序員每月還房貸 瀏覽:355
cad牆閉合命令 瀏覽:168
udp廣播可以找到本地伺服器地址 瀏覽:676
加密門卡手機如何復制門禁卡 瀏覽:266
夜鶯的PDF 瀏覽:707
地方資訊app如何推廣 瀏覽:756
金蝶網路加密連不上 瀏覽:262