台灣最大程式設計社群網站
線上人數
557
 
會員總數:244989
討論主題:188956
歡迎您免費加入會員
討論區列表 >> Java Script/ Node.js >> 關於與php進行前後端資料 DES 加解密的疑慮
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
關於與php進行前後端資料 DES 加解密的疑慮
價值 : 50 QP  點閱數:285 回應數:4

樓主

Pears
門外漢
0 1
16 1
發送站內信




大家好,我想請教一件事情,使用 DES 傳輸加解密資料時,需要設置 key 和 iv,後端 php 使用 openssl_ 來進行解密,我現在好奇的是,key 和 iv 都寫在 js 檔案裡,這樣不會有問題嗎? 因為若傳輸的資料被擷取了,縱然得到資料的是被加密過的,但擷取者還是可以透過查詢 js 檔案裡被寫入的 key 和 iv 來把它解密,請問這樣想是對的嗎? 還是我對於 DES 加解密想的太簡單了? 謝謝∼

搜尋相關Tags的文章: [ 加解密 ] , [ des ] , [ openssl ] ,
本篇文章發表於2019-02-20 02:53
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
一定會有問題的。
key 和 iv本就不該寫在js上了。那是人人都可以看到的啊。

除非,你傳入的key值還有做特別的處理。
我用我的方式說明。

由於我公司做的也是屬於jsapi的方式。會提供key跟iv在js上。
但其實傳入進來的key。我還有做了一次字串處理後的key。才會回傳加密的字串。

所以就算可以看到key跟iv值。也無法直接利用該值做解密的動作。
本篇文章回覆於2019-02-20 14:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

淺水員
檢舉此回應
1. DES 已經不安全了,可以的話建議使用 AES 加密。
2. 可以搜尋關鍵字「非對稱加密」這可以讓使用者加密後,只有伺服器能解密。
3. 如果考量效能的話,可以考慮混用「非對稱加密」跟「對稱加密」,也就是利用非對稱加密傳輸對稱加密的KEY跟IV。
4. 其實這些事情 https 已經有處理了,如果沒特殊考量不大需要自己加密。

我假設情境是希望客戶端要加密傳送資料給伺服器,那麼大致上可以這樣做:
A. 伺服器產生非對稱加密的公鑰跟私鑰,把公鑰送給客戶端
B. 客戶端用公鑰加密資料,然後傳送給伺服器
C. 伺服器用私鑰解密取得資料

PS.上面的流程其實無法防禦中間人攻擊,這就是為什麼 https 還要有第三方參與(數位憑證認證機構)
本篇文章回覆於2019-02-21 01:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

Pears
檢舉此回應
感謝兩位大大的回應,確實在思索許久以後,我換成RSA的方式來做了,本來早先都以為https就足夠安全了,但長時間這樣用下來,感覺好像又不太安全,所以才爬到對稱加密,我後來想想,假設,全程使用傳統表單post方式的話,也許這些問題就不會存在吧,任何加密的方式寫在php裡面,理應不會外洩的,除非駭客攻入伺服器直接取檔,但這個作法現在很顯然並不適用,自己也很久沒用這種傳統方式了。

扯遠了,總之目前使用RSA的方式,一份私鑰、一份公鑰,前端加密,後端解密這樣,中間可能加一些形變,但總的來說就是RSA方法,我用 RSA 2048 和 4096 看需求混著用,現在想到的就是這樣吧。

不過我還是有疑慮,所使用的公鑰、私鑰,是事先產生出來的,有沒有什麼方式可以在每次需要傳送加密文件的時候,透過php命令電腦執行 openssl .... 命令來製作新的公鑰、私鑰呢? 這是有可能的嗎? 當然效能的部份就先不考慮了,我產生一份4096的RSA密鑰,發現竟然還小跑了一會,不像1024的瞬間跑出來,我電腦還是12核心的,不敢想像這種效率若用在普通2核心雲端伺服器會是什麼慘狀($$$$$$)。

最後,在實作的過程中爬到一個關鍵字,量子電腦.....,有點令人傷腦筋啊∼
本篇文章回覆於2019-02-22 00:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
PHP本身就有可以支援openssl的方式。

不過一般而言,並不會利用它來做公鑰處理。
而且就算你生成新的。web server也是需要重新啟動才能獲得新的key。

並非是你生成蓋過去後就可以用。

再加上一般為了安全性而言,大多數來說。其証書檔一定得放到web server無權限可以使用的地方。
所以就算你用php生成新的金鑰。你也無法直接替換。

大多數而言。都是拿其做驗証處理的。
你目前可能還搞不太清楚如何好好的去應用這樣的機制。
server跟域名使用的。你是不能再用php來去更動。處理起來很麻煩的。
也並不是不能,只是要做很多系統的調整。還得考量安全性的考量,一般如功力不夠。
去搞這樣的模式,搞不好反而更不安全。

但是,你可以生成自定義的証書。來當做一個認証的額外機制。

我這邊其實也有做過類似的認証處理,在後台提供証書檔供客戶在本機安裝使用。
本篇文章回覆於2019-02-23 10:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.