當前位置:首頁 » 著名認證 » 隨機數認證

隨機數認證

發布時間: 2020-11-30 22:44:54

① 為什麼採用隨機數可避免重放攻擊

單獨的隨機數不能避免重放攻擊,隨機數一般會和簽名加密技術,後台驗證技術混合以提高破解和重放難度。

重放攻擊(Replay Attacks)又稱重播攻擊、回放攻擊或新鮮性攻擊(Freshness Attacks),是指攻擊者發送一個目的主機已接收過的包,來達到欺騙系統的目的,主要用於身份認證過程,破壞認證的正確性。

從重放攻擊的定義上我們可以看到,重放攻擊提交給伺服器的數據是曾經有效的,如何防止這種數據,對特定信息給與一個特定的隨機數,並且這個隨機數保存在伺服器內,在驗證了用戶信息前,首先會對隨機數進行驗證,如果發現提交的隨機數和伺服器保存的不同則,該條信息無效通過這種方法來防止重放攻擊。

常用的防禦重放攻擊,不會直接暴露隨機數,一般隨機數會用在MD5,HASH(數字簽名)上,比如在對有效值進行MD5加密時添加隨機數,如用戶名為test,密碼為test的MD5加密過程可能為MD5("test","test",隨機數),這樣在直接傳輸時不會暴露出隨機值,黑客在提交重放攻擊時系統發現MD5簽名和系統簽名計算後不同則,可被認定為重放攻擊。

當然矛和盾是一種存在的,有可能該值剛好又一次的分配給了該用戶,可能會重放攻擊成功,但這個概率在科學計算上可以被視為0,而且隨著隨機數的位數的提高,概率會不斷降低。

② 有哪位好心大神幫幫忙,告訴一下我這道題的的思路過程,在此謝了 使用隨機數實現一次性口令認證過程代碼

那客戶端就需要聯網使用。比如,客戶端稱為A,服務端成為B。A有編號,並且編號有在B注冊內。A發給B的信息,B就能知容道是誰發送過來的。A在一分鍾之內產生一個隨機數。並且這個隨機數通過加密發送給B。之後用戶在一分鍾之內通過這個隨機數 登錄,修改密碼操作等等 B就能通過。超過一分鍾B就將該隨機數置空,這時候這組隨機數就失效。不知道這樣的想法可行不

③ CA證書沒法用提示「簽名失敗」如何解決

可能是插件沒有安裝,估計是由計算機防火牆造成的,因為許多稅務部門的插件沒回有微軟的認證,所以答防火牆會阻止自動安裝。

1、首先安裝驅動程序,然後插入USBKEY。

2、在第一次安裝之後,操作系統沒有重新安裝之後,每個聲明之後只會將密鑰插入到USB介面中。如果您的計算機重新安裝了操作系統,您需要重新安裝軟體以使用證書。

3、當您登錄到在線聲明系統時,請不要將其他業務部門密鑰、加密狗、銀行密鑰和其他設備插入USB介面。

4、當登錄和聲明時,請不要從USB介面刪除鍵。

5、成功登入及申報系統後,請盡快填寫回款表。如果沒有成功地完成超過30分鍾,每個返回頁面都應該登錄並填寫。

④ 如何理解CPU卡內部認證與外部認證

用戶卡和機具進行雙向認證
問題的提出:
1、傳統的「對暗號」
經典片斷:
問:天王蓋地虎
答:寶塔鎮河妖
互相握手,擁抱,同志呀同志!可終於找到你了
相信大家一定看過間諜電影中地對暗號片斷,但是暗號容易被敵人竊取,於是有了革命者驚險或悲壯的故事,當然了其中不乏有叛徒的出賣。
安全分析:
對暗號中容易出現暗號被第三方竊取的情況,其中存在很大的安全隱患,相信大家一定印象深刻,深有體會。
2、密碼學中對「對暗號」的借鑒
在傳統的對稱密碼學體系中,用密鑰來代表雙方的暗號
暗號=密鑰
當然了,暗號越復雜,即密鑰長度越長越安全
但暗號太復雜,越不容易記住,所以實際應用中密鑰長度也不會太長(現在比價流行使用128位的密鑰)
至於對稱密碼演算法:CPU卡中使用的一般為3DES(112位),其它的128位的如IDEA、AES等
3、密碼學中的雙向認證的實際做法
由於直接對暗號存在不安全的隱患,所以密碼學中並不直接判斷兩個密鑰是否相等
而是採取一次一密的情況。
什麼是一次一密呢?
就是:
1、每次都由一方產生一個隨機數
2、雙方都用密鑰計算隨機數得到一個值
3、比較隨機數的計算值是否相等
這樣就避免了密鑰泄露的問題,因為每次得到的都是臨時值,所以每次都必須去計算隨機數,而
密鑰又是被讀出的,只能用來計算(通過使用指定的密鑰標識來計算)。
所以就算泄露了隨機數的計算值也沒關系,因為下一次這個計算值並不能被使用。
4、CPU卡中的雙向認證的實現
實體:CPU卡 機具
CPU卡中存放一個密鑰
機具中存放和CPU卡相同的密鑰
CPU卡外部認證步驟:
1、CPU卡產生一個8位元組隨機數送給外部程序,CPU卡臨時保存隨機數在卡內
2、外部程序把8位元組隨機數送給機具,機具用密鑰計算隨機數,得到8位元組隨機數密文
3、外部程序把8位元組隨機數密文送給CPU卡
4、CPU卡在卡片內部解密8位元組隨機數得到隨機數明文,
5、CPU卡在卡片內部把解密後的隨機數和步驟1中臨時存放的隨機數比對,若相等,則外部認證成功
所以外部認證是CPU卡認證機具。
機具內部認證步驟:
1、機具產生一個8位元組隨機數送給外部程序,機具臨時保存隨機數在機具中
2、外部程序把8位元組隨機數送給CPU卡,CPU用內部認證密鑰計算隨機數,得到8位元組隨機數密文
3、外部程序把8位元組隨機數密文送給機具
4、機具解密8位元組隨機數得到隨機數明文,
5、機具在內部把解密後的隨機數和步驟1中臨時存放的隨機數比對,若相等,則內部認證成功
所以內部認證是機具認證CPU卡
這樣機具和CPU卡從而達到了雙向認證
5、密鑰的分散問題
由於一個機具必須可以認證n張卡片,而每張卡片的密鑰都不相同
一般的想法:必須有n個機具對應n張卡片,但是這樣代價太高,也不現實
密碼學中提出了一個方法,即密鑰分散的方法。
即機具中存放的是用戶卡的母密鑰,每次認證的時候,由母密鑰根據用戶卡的標識
計算得到用戶卡的密鑰。

⑤ cpu卡怎麼實現des加解密數據

用戶卡和機具進行雙向認證
問題的提出:
1、傳統的逗對暗號地
經典片斷:
問:天王蓋地虎
答:寶塔鎮河妖
互相握手,擁抱,同志呀同志!可終於找到你了
相信大家一定看過間諜電影中地對暗號片斷,但是暗號容易被敵人竊取,於是有了革命者驚險或悲壯的故事,當然了其中不乏有叛徒的出賣。
安全分析:
對暗號中容易出現暗號被第三方竊取的情況,其中存在很大的安全隱患,相信大家一定印象深刻,深有體會。
2、密碼學中對逗對暗號地的借鑒
在傳統的對稱密碼學體系中,用密鑰來代表雙方的暗號
暗號=密鑰
當然了,暗號越復雜,即密鑰長度越長越安全
但暗號太復雜,越不容易記住,所以實際應用中密鑰長度也不會太長(現在比價流行使用128位的密鑰)
至於對稱密碼演算法:CPU卡中使用的一般為3DES(112位),其它的128位的如IDEA、AES等
3、密碼學中的雙向認證的實際做法
由於直接對暗號存在不安全的隱患,所以密碼學中並不直接判斷兩個密鑰是否相等
而是採取一次一密的情況。
什麼是一次一密呢看
就是:
1、每次都由一方產生一個隨機數
2、雙方都用密鑰計算隨機數得到一個值
3、比較隨機數的計算值是否相等
這樣就避免了密鑰泄露的問題,因為每次得到的都是臨時值,所以每次都必須去計算隨機數,而
密鑰又是被讀出的,只能用來計算(通過使用指定的密鑰標識來計算)。
所以就算泄露了隨機數的計算值也沒關系,因為下一次這個計算值並不能被使用。
4、CPU卡中的雙向認證的實現
實體:CPU卡 機具
CPU卡中存放一個密鑰
機具中存放和CPU卡相同的密鑰
CPU卡外部認證步驟:
1、CPU卡產生一個8位元組隨機數送給外部程序,CPU卡臨時保存隨機數在卡內
2、外部程序把8位元組隨機數送給機具,機具用密鑰計算隨機數,得到8位元組隨機數密文
3、外部程序把8位元組隨機數密文送給CPU卡
4、CPU卡在卡片內部解密8位元組隨機數得到隨機數明文,
5、CPU卡在卡片內部把解密後的隨機數和步驟1中臨時存放的隨機數比對,若相等,則外部認證成功
所以外部認證是CPU卡認證機具。
機具內部認證步驟:
1、機具產生一個8位元組隨機數送給外部程序,機具臨時保存隨機數在機具中
2、外部程序把8位元組隨機數送給CPU卡,CPU用內部認證密鑰計算隨機數,得到8位元組隨機數密文
3、外部程序把8位元組隨機數密文送給機具
4、機具解密8位元組隨機數得到隨機數明文,
5、機具在內部把解密後的隨機數和步驟1中臨時存放的隨機數比對,若相等,則內部認證成功
所以內部認證是機具認證CPU卡
這樣機具和CPU卡從而達到了雙向認證
5、密鑰的分散問題
由於一個機具必須可以認證n張卡片,而每張卡片的密鑰都不相同
一般的想法:必須有n個機具對應n張卡片,但是這樣代價太高,也不現實
密碼學中提出了一個方法,即密鑰分散的方法。
即機具中存放的是用戶卡的母密鑰,每次認證的時候,由母密鑰根據用戶卡的標識
計算得到用戶卡的密鑰。

⑥ 求java題目解答:隨機數窗口(驗證碼)

這是我原來總結的一個實現驗證碼的三個跳轉文件,希望能對你有幫助
產生驗證碼圖片的文件-----image.jsp-----------------------------------

<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
Color getRandColor(int fc,int bc){//給定范圍獲得隨機顏色
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
return new Color(r,g,b);
}
%>
<%
//設置頁面不緩存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

// 在內存中創建圖象
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

// 獲取圖形上下文
Graphics g = image.getGraphics();

//生成隨機類
Random random = new Random();

// 設定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);

//設定字體
g.setFont(new Font("Times New Roman",Font.PLAIN,18));

//畫邊框
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);

// 隨機產生155條干擾線,使圖象中的認證碼不易被其它程序探測到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}

// 取隨機產生的認證碼(4位數字)
String sRand="";
for (int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 將認證碼顯示到圖象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110))); //調用函數出來的顏色相同,可能是因為種子太接近,所以只能直接生成
g.drawString(rand,13*i+6,16);
}

// 將認證碼存入SESSION
session.setAttribute("rand",sRand);

// 圖象生效
g.dispose();

// 輸出圖象到頁面
ImageIO.write(image, "JPEG", response.getOutputStream());

%>

---------------使用驗證碼圖片的文件---------a.jsp------------------------------------

<%@ page contentType="text/html;charset=gb2312" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>認證碼輸入頁面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
</head>
<body>
<form method=post action="check.jsp">
<table>
<tr>
<td align=left>系統產生的認證碼:</td>
<td><img border=0 src="image.jsp"></td>
</tr>
<tr>
<td align=left>輸入上面的認證碼:</td>
<td><input type=text name=rand maxlength=4 value=""></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value="提交檢測"></td>
</tr>
</form>
</body>
</html>

-----------------驗證的頁面----------check.jsp-----------------------------------------

驗證根據需要 直接判斷request中的驗證碼和session中的是否一致就可以了

<%@ page contentType="text/html;charset=gb2312" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>驗證頁面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
</head>
<body>
<%
String sRand = (String)request.getSession().getAttribute("rand");
String rand = request.getParameter("rand");
%>
<%
if(sRand.equals(rand)){
out.print("Successed!");
}else{
out.print("Failed!");
}
%>
</body>
</html>

⑦ 按鍵精靈開發者認證5級問答題,求高手!(隨機生成一個0-10之間的數字,讓用戶進行猜測...)

簡單,你已經問了很多5級考試的問題了,說句你不愛聽的話,你的水平不足以考這個等級,內我六級容的題目都會做(我看過,不過我沒去考),不知道你考這個等級有啥用,我覺得沒啥用就不考了。這道題的0-10應該是指整數(如果不限制這點沒啥意義),這里的「三次沒有猜中」的意思應該是,三次之中至少有一次猜中,就算成功的。代碼如下:
r = 0 //記錄答對結果次數
For i = 1 To 3
Randomize
RndNumber = Int(11 * Rnd)
InputNumber = InputBox("請輸入0-10的整數")
If Clng(InputNumber) = RndNumber Then
r = r + 1
MessageBox "猜測成功!"
Exit For
End If
Next
If r = 0 Then
MessageBox "三次沒有猜中,猜測失。"
End If

熱點內容
美發店認證 發布:2021-03-16 21:43:38 瀏覽:443
物業糾紛原因 發布:2021-03-16 21:42:46 瀏覽:474
全國著名不孕不育醫院 發布:2021-03-16 21:42:24 瀏覽:679
知名明星確診 發布:2021-03-16 21:42:04 瀏覽:14
ipad大專有用嗎 發布:2021-03-16 21:40:58 瀏覽:670
公務員協議班值得嗎 發布:2021-03-16 21:40:00 瀏覽:21
知名書店品牌 發布:2021-03-16 21:39:09 瀏覽:949
q雷授權碼在哪裡買 發布:2021-03-16 21:38:44 瀏覽:852
圖書天貓轉讓 發布:2021-03-16 21:38:26 瀏覽:707
寶寶水杯品牌 發布:2021-03-16 21:35:56 瀏覽:837