# 公私鑰/加解密/驗簽章 ## 資料防竊取與不可否認性 資料傳輸過程中會有兩種問題要考慮: 1. 防止他人竊取-對資料做加密(使用演算法運算或壓縮上密碼之類...)。 2. 確保資料為對方傳輸-做電子簽章(有點像簽名畫押)。 為了達到這兩種用途於是有了電子憑證的機制, 憑證內通常有兩組鑰匙(加解密用公私鑰、簽章用公私鑰), 而憑證就由各個可信任的機構來產製與發行,如:自然人就是由內政部憑證管理中心,工商憑證由經濟部工商憑證管理中心。 ### 簽章與驗簽 情境: A要傳資料給B,B拿到資料要確保資料是A給的也沒有經過竄改。 作法: A使用憑證內的私鑰對資料做簽章運算會得到一組簽章值S,再將資料與S傳給B ;B拿到資料後,去憑證中心問A的公鑰(公鑰是公開的資訊),或是由A的簽章值S內取出公鑰(如果A做簽章使用的演算法有把公鑰包進去S裡)。 B知道了A的公鑰就對A傳來的資料做驗簽的運算,此時就可以驗證資料是A傳輸, 如果資料有經過竄改或是簽章值S不是由A的私鑰來運算出來的,就會檢驗失敗。 實例: 我們在網路上下載檔案有時候會附一組MD5或SHA256的值,那就是一種簽章值,可以用來驗證檔案是否經竄改。 ### 加密與解密 情境: A要傳資料給B,但是要防止他人從中竊取資料。 #### 作法1:非對稱式加密 A先問B的憑證公鑰,然後使用B的公鑰對資料做運算加密(目前常用的為RSA演算法),加密後的資料E再傳給B; B拿到資料後使用自己憑證的私鑰去解密資料。 優點:只有擁有憑證的人可以解開資料。 缺點:運算速度較慢,不適合大量資料傳輸。 #### 作法2:對稱式加密 A先跟B約定好一組鑰匙K(或稱密碼比較好懂),然後A用密碼K對資料加密再傳給B;B也用密碼K去解開資料。常見演算法有DES、AES,AES比DES安全性高,AES又分128/192/256,指的是鑰匙長度當然越長安全性就越高。 優點:運算速度快,可以用於資料比較大的情形。 缺點:鑰匙會有洩漏的風險或是使用暴力法破解(DES目前就是可以破解的,只要機器運算夠快)。 實例:類似我們以密碼對檔案做壓縮,再給對方密碼解 #### 常見的加解密做法 結合作法1&2,A用AES隨機產生一把鑰匙K,然後用K將資料做加密,再將K用B的公鑰做加密得到加密後的K_enc,最後將資料與K_enc傳給B; B收到後使用自己憑證私鑰解開K_enc,於是得到K,再用K解開資料。 如此,不用怕資料太大加密運算太久,也不用怕K洩露,因為K在一開始的時候隨機產生,只有A自己知道,加密後得到K_enc就可以拋棄原始的K。 ##### 要點 公鑰大家都可得,私鑰只有憑證擁有者有。 ###### tags: 公鑰 私鑰 加密 解密 簽章 驗章 AES RSA
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up