標籤:安全 open api 加密 解密
很初級的簡單想法,先記下來。
需要有個年輕聰明的青年才俊論證一下:
1、是否用HTTPS,這些就沒有必要了。
2、嚴謹性:是否有漏洞,這麼做安全性依賴哪些要素,能多大程度上保證。
3、必要性:是否有冗餘環節。
4、效能:壓一下,注意監控CPU。
以下是本文。
一、管理1、所有的秘鑰都由我們產生並頒發。
2、我們需要儲存:
(1)我們自己的私密金鑰、公開金鑰。
(2)別人的公開金鑰。
(3)所有公開金鑰和實體(如:某組織、某組織中的某人、我們自己等)的對應關係。
3、頒發出去的私密金鑰由安全的方法傳遞給對方(隨身碟拷貝?)。最大限度保護對方公開金鑰和映射關係的私密性。
二、過程
1、身份認證過程:
(1)不需要帳號、密碼神馬的。
(2)請求發起過程:
該使用者在我們系統的編號設為uuid。
Step 1,對方自己產生一個種子,設為 seed,需確保Seed的隨機 。
Step 2,用我們的公開金鑰加密,結果設為 token1。
Step 3,用使用者自己的私密金鑰加密,結果設為token2。
使用者發 uuid,seed,token1和token2給我們。
(3)驗證過程:
Step 1:用自己私密金鑰對token1解密,得到seed。
Step 2:通過uuid獲得公開金鑰,用這個公開金鑰解密token2,也得到seed。
Step 3:比對Step 1和Step 2獲得的Seed是否相同。如果相同,傳輸成功。
Step 4:驗證成功後,將Token用使用者公開金鑰加密,發給使用者。我們的伺服器儲存Token 20分鐘。
2、發送資料給我們
(1)發送過程:
資料設為Data。
Step 1:用我們的公開金鑰對Data加密,得到密文C1(需要驗證一下效率)。
Step 2:對密文產生數字摘要,設為Z1。
Step 3:用使用者自己的私密金鑰對摘要加密,得到密文Z2。
Step 4:用我們的公開金鑰對C2和Token加密,得到密文C3.
Step 5:發送C1和C3給我們。
(2)接收過程:
Step 1:用我們自己的私密金鑰解密得到Data、Z2和Token。
Step 2:通過Token獲得使用者公開金鑰,對Z2解密得到Z1。
Step 3:對Data產生數字摘要,設為Z1’。
Step 4:比較Z1‘和Z1,如果相同,則接受Data。
3、反饋資料給對方:
blabla
附錄:掃盲
(以下內容轉自互連網,原始連結... Err...隨手把網頁關了...)
公開金鑰和私密金鑰就是俗稱的不對稱式加密方式,是從以前的對稱式加密(使用使用者名稱與密碼)方式的提高。用電子郵件的方式說明一下原理。
使用公開金鑰與私密金鑰的目的就是實現安全的電子郵件,必須實現如下目的:
1. 我發送給你的內容必須加密,在郵件的傳輸過程中不能被別人看到。
2. 必須保證是我發送的郵件,不是別人冒充我的。
要達到這樣的目標必鬚髮送郵件的兩人都有公開金鑰和私密金鑰。
公開金鑰,就是給大家用的,你可以通過電子郵件發布,可以通過網站讓別人下載,公開金鑰其實是用來加密/驗章用的。私密金鑰,就是自己的,必須非常小心儲存,最好加上 密碼,私密金鑰是用來解密/簽章,首先就Key的所有權來說,私密金鑰只有個人擁有。公開金鑰與私密金鑰的作用是:用公開金鑰加密的內容只能用私密金鑰解密,用私密金鑰加密的內容只能 用公開金鑰解密。
比如說,我要給你發送一個加密的郵件。首先,我必須擁有你的公開金鑰,你也必須擁有我的公開金鑰。
首先,我用你的公開金鑰給這個郵件加密,這樣就保證這個郵件不被別人看到,而且保證這個郵件在傳送過程中沒有被修改。你收到郵件後,用你的私密金鑰就可以解密,就能看到內容。
其次我用我的私密金鑰給這個郵件加密,發送到你手裡後,你可以用我的公開金鑰解密。因為私密金鑰只有我手裡有,這樣就保證了這個郵件是我發送的。
當A->B資料時,A會使用B的公開金鑰加密,這樣才能確保只有B能解開,否則普羅福士都能解開加密的訊息,就是去了資料的保密性。驗證方面則是使用簽 驗章的機制,A傳資料給大家時,會以自己的私密金鑰做簽章,如此所有收到訊息的人都可以用A的公開金鑰進行驗章,便可確認訊息是由 A 發出來的了。
Open API安全考慮