加密解密的技術(shù):
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的向陽(yáng)網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!對(duì)稱加密
加密方和解密方使用是同一個(gè)密鑰,加密解密的速度都很快,先將數(shù)據(jù)明文
分成數(shù)據(jù)塊兒,一般來(lái)講是大小相同的,如果到最后剩下的不能與其他數(shù)據(jù)塊兒的
大小相同,那么就給它添加一些填充物,然后對(duì)每個(gè)數(shù)據(jù)塊兒逐個(gè)加密,
然后把加密后的數(shù)據(jù)塊兒發(fā)給對(duì)方,每一次管理一塊兒,
但是,加密后的塊兒怎么處理,因?yàn)槊恳粋€(gè)塊兒都是單獨(dú)處理,對(duì)方在破解數(shù)據(jù)時(shí)
每一塊兒獨(dú)立破解,也就是說(shuō)這樣的加密過(guò)程對(duì)反破解并沒(méi)有任何幫助,
對(duì)于加密以后的數(shù)據(jù)塊兒的處理有以下兩種方法
ECB:每一塊兒?jiǎn)为?dú)加密,加密一個(gè)傳遞一個(gè),
CBC:加密或密文塊兒鏈,通過(guò)抑或運(yùn)算實(shí)現(xiàn),每一個(gè)數(shù)據(jù)塊兒,在發(fā)送給對(duì)方
之前會(huì)實(shí)現(xiàn)將此數(shù)據(jù)塊兒與此前的數(shù)據(jù)塊兒做一次抑或運(yùn)算,并把結(jié)果發(fā)送給對(duì)方
所以得不到第一個(gè)塊兒,得到其他也就沒(méi)有用,即使是第一塊,也會(huì)和一個(gè)隨機(jī)數(shù)
進(jìn)行抑或運(yùn)算
其大好處在于,做兩次抑或運(yùn)算后可以將數(shù)據(jù)還原
算法:DES:數(shù)據(jù)加密標(biāo)準(zhǔn),使用56位的密鑰長(zhǎng)度
AES:高級(jí)加密標(biāo)準(zhǔn),可以使用128、192、256三種長(zhǎng)度的密鑰
3DES:對(duì)原有加密3次,
Blowfish
Twofish
RC6
IDEA
CAST5
缺陷:1、一個(gè)人跟眾多對(duì)象通信的時(shí)候需要記的密碼過(guò)多
2、密鑰分發(fā)困難,是大的難題,沒(méi)有一種可靠的手段將密鑰送給一個(gè)
沒(méi)有見(jiàn)過(guò)面的對(duì)象
非對(duì)稱加密
公鑰加密算法:DSA,RSA,EIGamal
加密方和解密方使用不同的密鑰
功能:加密解密
用戶的身份認(rèn)證,RSA兩者都可以實(shí)現(xiàn),而DSA只能加密數(shù)據(jù)
公鑰,私鑰
公鑰是從私鑰中抽出的一段特征,公鑰隱含在私鑰中
現(xiàn)在主流的密鑰長(zhǎng)度是2048
缺陷:1、加密速度慢,比對(duì)稱加密慢3個(gè)數(shù)量級(jí) 1000倍,一個(gè)數(shù)量級(jí)10倍
2、公鑰加密一般不用于加密數(shù)據(jù),主要用于實(shí)現(xiàn)用戶認(rèn)證,數(shù)據(jù)加密
主要是通過(guò)對(duì)稱加密實(shí)現(xiàn)的
如何實(shí)現(xiàn)用戶認(rèn)證:
現(xiàn)在假設(shè),有兩個(gè)通信的對(duì)象,一個(gè)較小黑,一個(gè)較小白,現(xiàn)在小黑給小白發(fā)了
一封電子郵件,但是,小白在接受郵件的時(shí)候不希望自己的郵件的內(nèi)容被篡改,
這時(shí)小黑就將郵件內(nèi)容加密且說(shuō)自己是小黑,并產(chǎn)生一個(gè)公鑰和一個(gè)私鑰,
私鑰小黑會(huì)隨身攜帶
而且不能外泄,公鑰則連同郵件一起發(fā)給小白,這是小白拿著小黑的公鑰如果能夠
解密,則說(shuō)明小黑就是小黑...這就實(shí)現(xiàn)了認(rèn)證,但是如果小黑加密的數(shù)據(jù)很大,再加上
公鑰加密要用很久時(shí)間,等加密好,小黑也無(wú)語(yǔ)了,所以小黑加密的不是數(shù)據(jù)
而是這段數(shù)據(jù)的特征值,說(shuō)到特征值,下面就說(shuō)一下單向加密》》》
單向加密
雪崩效應(yīng):輸入的數(shù)據(jù)有一點(diǎn)點(diǎn)不同,結(jié)果會(huì)有巨大不同,主要目的在防暴力破解
單向加密就是去計(jì)算一段數(shù)據(jù)的特征值,加密過(guò)程是不可逆的,是去計(jì)算一段數(shù)據(jù)的特征碼,是獨(dú)一無(wú)二的,用于對(duì)
數(shù)據(jù)完整性的校驗(yàn)
無(wú)論你輸入的數(shù)據(jù)是多長(zhǎng),輸出的結(jié)果都是一樣長(zhǎng)度
MD5:message digest,輸出結(jié)果固定長(zhǎng)度128bit
SHA1:secure hash algorithm安全的哈希算法,輸出結(jié)果固定長(zhǎng)度160bit
身份認(rèn)證:
單向加密在實(shí)現(xiàn)用戶身份認(rèn)證的時(shí)候不會(huì)去加密整段數(shù)據(jù),而是先去計(jì)算這段數(shù)據(jù)的特征值,
把它的特征值用私鑰加密,加密以后附著在數(shù)據(jù)后面,一起發(fā)給對(duì)方,在對(duì)方收到以后,對(duì)方
可以驗(yàn)證兩方面的內(nèi)容,第一用戶的身份,第二數(shù)據(jù)的完整性,接收方先用發(fā)送方的公鑰對(duì)其解密
如果能解密就驗(yàn)證了對(duì)方了身份,此時(shí)接收方會(huì)獲得這段數(shù)據(jù)的特征值,然后接收方也用相同的
算法進(jìn)行運(yùn)算,得到一個(gè)數(shù)據(jù)的特征值,如果這兩個(gè)特征值相同,則說(shuō)明數(shù)據(jù)在發(fā)送過(guò)程完好無(wú)損
如果不相同,則說(shuō)明數(shù)據(jù)有改動(dòng)
假設(shè)還是小黑和小白通信,雙方都希望在數(shù)據(jù)的發(fā)送過(guò)程中,既能實(shí)現(xiàn)用戶身份驗(yàn)證,
又能實(shí)現(xiàn)數(shù)據(jù)加密,還能實(shí)現(xiàn)數(shù)據(jù)的完整性,那該怎么辦呢?
現(xiàn)在小黑在發(fā)送數(shù)據(jù)前,先將數(shù)據(jù)用單向加密,計(jì)算出特征值,然后再用私鑰解密將特征值加密
接下來(lái)會(huì)再用產(chǎn)生一個(gè)一次性的密碼,用小白的公鑰將這個(gè)密碼加密然后放在數(shù)據(jù)后,最后再用對(duì)稱加密
將全部加密,這時(shí)就是密文了,到了小白那里以后,小白先用自己的私鑰拿到那個(gè)密碼,然后再用那個(gè)
密碼解密,獲得數(shù)據(jù)的特征值,然后再用單向解密計(jì)算出一個(gè)特征值,如果這兩個(gè)值相同,則說(shuō)明
數(shù)據(jù)完好,以上過(guò)程就實(shí)現(xiàn)了三重驗(yàn)證
這三項(xiàng)結(jié)合起來(lái)是現(xiàn)在電子商務(wù)的基礎(chǔ)。
可以實(shí)現(xiàn)這整個(gè)過(guò)的工具:
opssh
gpg
但是這兩個(gè)過(guò)程還存在問(wèn)題,小白怎樣去獲得小黑的公鑰呢?在傳輸公鑰的時(shí)候也有可能
出現(xiàn)欺騙,這怎么解決了?
IKE:互聯(lián)網(wǎng)密鑰交換,實(shí)現(xiàn)雙方使眼色交換密鑰,和密鑰本身不在互聯(lián)網(wǎng)上
傳播
PKI:公鑰基礎(chǔ)設(shè)施,或公鑰基礎(chǔ)架構(gòu),CA證書頒發(fā)機(jī)構(gòu),證書內(nèi)放的就是通信人的公鑰信息
怎樣基于證書通信:
雙方在通信時(shí)都出示證件,這個(gè)證件由某個(gè)權(quán)威機(jī)構(gòu)發(fā)放,只要驗(yàn)證證件內(nèi)的有效信息
就可以驗(yàn)證對(duì)方的身份,但是在發(fā)證的時(shí)候怎樣防止中間出現(xiàn)欺騙呢?
這又是一個(gè)雞生蛋,蛋生雞的問(wèn)題,想想該如何解決呢?
所以一些操作系統(tǒng)在安裝時(shí)就已經(jīng)將一些權(quán)威的發(fā)證機(jī)構(gòu)的證書放在你的電腦里了,這樣在一定程度
上可以解決一些問(wèn)題
證書的格式:X509,PKCS
證書廢棄列表:CRL
最常見(jiàn)的***“man in the middle”主要是雙方身份無(wú)法驗(yàn)證
會(huì)話劫持,
數(shù)據(jù)插入,
數(shù)據(jù)篡改,
這些都是常見(jiàn)的威脅
加密解密用于:
1、用戶密碼/數(shù)據(jù)嗅探 password/data sniffing
2、數(shù)據(jù)操縱,data manipulation
3、authentication manipulation 認(rèn)證
4、equivalent to mailing on postcards
這幾個(gè)方面
加密算法的基本法則:kerckhoff's principle
1、一般來(lái)講加密本身并不靠算法,算法固然很關(guān)鍵能將明文變成密文
但是一項(xiàng)真正的加密過(guò)程,你的數(shù)據(jù)是否會(huì)被破解,主要不能過(guò)強(qiáng)依賴于算法本身,
而要依賴于密碼,算法的研究周期很長(zhǎng),更改一個(gè)密碼很簡(jiǎn)單,但是更換一個(gè)算法就麻煩了
算法需要耗費(fèi)很多精力,只要算法不公開(kāi),就無(wú)從下手破解
2、電子商務(wù)的過(guò)程中不僅要保證數(shù)據(jù)加密,還要保證不被別人看見(jiàn)
算法:
1、隨機(jī)數(shù)來(lái)源靠得住
########openssl#########l
用C語(yǔ)言實(shí)現(xiàn)了很多種常見(jiàn)的加密算法:
三個(gè)組件:
1、libcrypto 庫(kù)文件 專門實(shí)現(xiàn)加密解密的庫(kù)文件,
2、libssl 庫(kù)文件,主要是實(shí)現(xiàn)https這樣協(xié)議
3、openssl 多用途加密工具,還可以制作一個(gè)CA出來(lái)
一般來(lái)講openssl都會(huì)裝上,使用一個(gè)openssl加一個(gè)錯(cuò)誤的選項(xiàng)就能看見(jiàn)它的使用
選項(xiàng)
單項(xiàng)加密時(shí)的用法:
openssl enc -des3 -salt -a -in inittab -out inittab.des3
實(shí)現(xiàn)對(duì)于一個(gè)文件加密 enc是加密 -des3是加密算法 -salt 加入雜質(zhì)
-in后面跟文件名 -out加密后放在哪個(gè)文件里
openssl enc -d -des3 -salt -a -in inittab.des3 -out inittab
-d表示解密
openssl dgst -sha inittab 表示計(jì)算inittab文件的特征值
用戶認(rèn)證時(shí)passwd的用法,怎么去幫你生成一個(gè)類似于保存在/etc/shadow文件里的密碼一樣
openssl passwd -1 -1表示使用MD5算法
[root@server46 ~]# openssl passwd -1
Password:
Verifying - Password:
$1$7HW0kv8y$IntkyNppqtTQ2fHAJ1FMk1
openssl passwd -1 -salt 雜質(zhì) 這樣計(jì)算結(jié)果就一樣了
[root@server46 ~]# openssl passwd -1
Password:
Verifying - Password:
$1$7HW0kv8y$IntkyNppqtTQ2fHAJ1FMk1
[root@server46 ~]# openssl passwd -1 -salt 7HW0kv8y
Password:
$1$7HW0kv8y$IntkyNppqtTQ2fHAJ1FMk1
man sslpasswd可以查看用法
非對(duì)稱加密:
openssl怎樣發(fā)證:
切換目錄到/etc/pki/tls/certs
make *.key就可以產(chǎn)生一個(gè)密鑰
make *.cert可以生成一個(gè)證書,主要是看文件后綴生成文件,是redhat提供的便捷方式
make my.key就可以生成一個(gè)密鑰
(umask 66;openssl genrsa 1024 > my.key)
生成私鑰文件
這是在一個(gè)子shell里進(jìn)行,umask只對(duì)后面的這一個(gè)命令有效,umask執(zhí)行完以后就恢復(fù)到原來(lái)
提取公鑰:
openssl rsa -in my.key -pubout -out myr.pubkey
[root@server46 certs]# (umask 66; openssl genrsa 1024 > my.key)
Generating RSA private key, 1024 bit long modulus
...++++++
........++++++
e is 65537 (0x10001)
[root@server46 certs]# cat my.key
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDRSlvZZ7p7sRbczdGhcw/8z5mzEKIjDZw63ffsxCDC9XWKO0vE
FaxbPrgwZYF+iu8QHUKVzuJoqO8MmfY7p9aGz2WT2GQ/wUTnjsbL8mNbSclV/2m8
K0XZqSLsKzuhaBOFC+sylQvnZiXP23slNWZIuV0EVh9k2ULSV4f8B5QtywIDAQAB
AoGATNkA4NM1pjVgL7NjReT5+dpAlX+GCVj2BKd8YXOik/ONNTSQnW9X2ikteJfM
9KoPHdugl2FfwQ5GuFnQEBeQrUV5SnR09k2OZTsdOMVNXqamf4V/rXidOs+L3RVK
Q4X6vpasS1CJ1/q/fCcsi1Nl0nLcV9stLXbmEzYqE6+hwAECQQDqxrbF5W9j5vVM
ZkKmvx1ViojwTJovlkOtl6RSkqHMR3msnHhizbc+iGrGiP/vH9H+AvDK7AJPNVng
kHAa5YGbAkEA5DXX0dIajPoAdLvmNG1kNY1fp6IJjfR8UJRWeOwjhVjul1yp47hP
bM/f55OmowdsQamfNVwk4P5iYIcZ8uwfkQJBAJoXToLYsaF6Rumb/IcAzLoGMRa2
0EQHdegLrVhc0UEIcH2wPPtsVab/VkV0SbaixerX9z7YZDOkqpbPdiTRGZ0CQBWv
2DakVMmY6HovcQ0CaEd+i9yOVYIb/cRalG0hY67EaMgRkkOFvGaGyqxjJ67Ogccr
q2mSvB51jjvGGv0u20ECQQCHvgJkF3xHkQnahqCTTgym0CNocHhVfyo6KveIfBAk
Vz69+zsGK2kKBOseSbgRKqVmM21Iqu0aZatjEevHwZIo
-----END RSA PRIVATE KEY-----
[root@server46 certs]# openssl rsa -in my.key -pubout -out my.pubkey
writing RSA key
[root@server46 certs]# cat my.pubkey
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRSlvZZ7p7sRbczdGhcw/8z5mz
EKIjDZw63ffsxCDC9XWKO0vEFaxbPrgwZYF+iu8QHUKVzuJoqO8MmfY7p9aGz2WT
2GQ/wUTnjsbL8mNbSclV/2m8K0XZqSLsKzuhaBOFC+sylQvnZiXP23slNWZIuV0E
Vh9k2ULSV4f8B5QtywIDAQAB
-----END PUBLIC KEY-----
發(fā)證步驟:
1、首先生成一對(duì)密鑰(S/P密鑰)
2、然后把公鑰放在一個(gè)叫證書頒發(fā)請(qǐng)求里(里面包括你的公鑰,姓名,地址,等一些列描述信息)
發(fā)送到證書頒發(fā)機(jī)構(gòu)
3、CRT證書就生成了
自己成為CA:
1、cd /etc/pki/CA
有一個(gè) private 文件,里面專門放CA的私鑰文件
2、給自己生成一個(gè)密鑰
(umask 66; openssl genrsa 2048 > private/cakey.pem[這里只能叫cakey.pem])
ll private
給自己發(fā)證書:
openssl req -new -x509 -key private/cake.pem -out cacert.pem
openssl req -new -x509 -key private/cake.pem -out cacert.pem
接下來(lái)會(huì)提示你輸入一些信息
寫完之后就是一個(gè)自簽的證書
接下來(lái)就可以給別人發(fā)證了
view plaincopy to clipboardprint?
openssl req -new -x509 -key private/cake.pem -out cacert.pem -days3655
openssl req -new -x509 -key private/cake.pem -out cacert.pem -days3655
3、編輯cA的配置文件
view plaincopy to clipboardprint?
vim /etc/pki/tls/openssl.cnf這里定義了
vim /etc/pki/tls/openssl.cnf這里定義了
找到【 CA_default 】字段
修改 dir 改為絕對(duì)路徑
這里有些目錄沒(méi)有需要我們手動(dòng)建立,在這個(gè)配置文件內(nèi)我們都能找到
然后還可以修改默認(rèn)信息
到這里才 算是一個(gè)完整的CA
4、接下來(lái)給web服務(wù)器做一個(gè)證書:
view plaincopy to clipboardprint?
cd /etc/httpd
mkdir ssl
cd ssl
(umask 66;openssl genrsa 2048 > web.key)
cd /etc/pki/CA
mkdir certs crl newcerts
touch index.txt serial
echo 01 > serial
openssl req -new -key wed.key -out wed.csr 這是一個(gè)證書頒發(fā)請(qǐng)求
opssl ca -in wed.csr -out web.crt 頒發(fā)證書
cd /etc/httpd
mkdir ssl
cd ssl
(umask 66;openssl genrsa 2048 > web.key)
cd /etc/pki/CA
mkdir certs crl newcerts
touch index.txt serial
echo 01 > serial
openssl req -new -key wed.key -out wed.csr 這是一個(gè)證書頒發(fā)請(qǐng)求
opssl ca -in wed.csr -out web.crt 頒發(fā)證書
然后敲兩次回車 就ok了
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。