2017年上半年信息安全工程師考試真題含答案(下午題)

更多信息,請訪問moondream.cn/?

第1題

閱讀下列說明,回答問題 1 至問題 3,將解答寫在答題紙的對 應欄內。

【說明】

安全目標的關鍵是實現安全的三大要素:機密性、完整性和可用性。對於一般性的信息類型的安全分類有以下表達形式:

{ (機密性,影響等級), (完整性,影響等級), (可用性,影 響等級) }

在上述表達式中,」影響等級」的值可以取為低 (L)、中(M)、高(H) 三級以及不適用 (NA)。

【問題 1】(6 分)

請簡要說明機密性、完整性和可用性的含義。

【問題 2】(2 分)

對於影響等級」不適用」通常只針對哪個安全要素?

【問題 3 】(3 分)

如果一個普通人在它的個人 Web 伺服器上管理其公開信息。請問這種公開信息的安全分類是什麼?

【答案和解析】:

【問題 1】

(1)機密性:維護對信息訪問和公開經授權的限制,包括保護個人隱私和私有的信息。

(2)完整性:防止信息不適當的修改和毀壞,包括保證信患的不可抵賴性和真實性。

(3)可用性:保證信息及時且可靠的訪問和使用。

【問題2】「不適用」通常針對機密性。

【問題3】{(機密性,NA),(完整性,M),(可用性,M)}

第2題

閱讀下列說明,回答問題 1 和問題 2,將解答寫在答題紙的對 應欄內。

【說明】

Windows 系統的用戶管理配置中,有多項安全設置,如圖 2-1 所示。

【問題 1】(3 分)

請問密碼和帳戶鎖定安全選項設置屬於圖中安全設置的哪一項?

【問題 2】(3 分)

Windows 的密碼策略有一項安全策略就是要求密碼必須符合複雜 性要求,如果啟用此策略, 那麼請問:用戶 Administrator 擬選取的以下六個密碼中的哪 些符合此策略?

123456 Admin123 Abcd321 Admin@ test123! 123@host

【答案和解析】:

【問題 1】屬於賬號策略。

【問題2】Abcd321 test123! 123@host

第3題

【說明】

掃描技術是網路攻防的一種重要手段,在攻和防當中都有其重要意義。nmap 是一個 開放源碼的網路掃描工具,可以查看網路系統 中有哪些主機在運行以及哪些服務是開放的。 namp 工具的命令選 項: sS 用於實現 SYN 掃描,該掃描類型是通過觀察開放埠和關閉 埠對探測分組的響應來實現埠掃描的。請根據圖 3-1 回答下列 問題。

【問題 1】 (2 分)

此次掃描的目標主機的 IP 地址是多少?

【問題 2】(2 分)

SYN 掃描採用的傳輸層協議名字是什麼?

【問題 3】 (2 分)

SYN 的含義是什麼?

【問題 4】 (4 分)

目標主機開放了哪幾個埠?簡要說明判斷依據。

【問題 5】(3 分)

每次掃描有沒有完成完整的三次握手?這樣做的目的是什麼?

【問題 6】(5 分)

補全表3-1 所示的防火牆過濾器規則的空(1) – (5),達到防火牆禁止此類掃描流量進入和處出網路 ,同時又能允許網內用戶訪問外部網頁伺服器的目的。

表 3-1 防火牆過濾器規則表

【問題 7】 (2 分)

簡要說明為什麼防火牆需要在迸出兩個方向上對據數據包進行過濾。

【答案和解析】:

【問題 1】192.168.220.1

【問題2】TCP協議

【問題3】同步信號,是TCP/IP建立連接時使用的握手信號。

【問題4】目標主機開放的埠為:135埠,139埠。

判斷依據:如果埠開放,目標主機會響應掃描主機的SYN/ ACK連接請求;如果埠關閉,則目標主機迴向掃描主機發送RST的響應。

【問題5】 沒有完成,這樣做即使日誌中對掃描有所記錄,但是嘗試進行連接的記錄也要比全掃描少得多。

【問題6】(1)UDP (2)* (3)80 (4)0 (5)1

【問題7】在進入方向過濾是為了防止被人攻擊,而在出口方向過濾則是為了防止自己成為攻擊的源頭或者跳板。

第4題

【說明】

DES 是一種分組密碼,己知 DES 加密演算法的某個 S 盒如表 4-1 所示。

【問題1】 (4分)

請補全該 S 盒,填補其中的空(1) – (4),將解答寫在答題紙的對應欄內。

【問題 2】 (2分)

如果該 S 盒的輸入為 110011,請計算其二進位輸出。

【問題3】(6分)

DES加密的初始置換表如下:

置換時,從左上角的第一個元素開始,表示輸入的銘文的第58位置換成輸出的第1位,輸入明文的第50位置換成輸出的第2位,從左至右,從上往下,依次類推。

DES加密時,對輸入的64位明文首先進行初始置換操作。

若置換輸入的明文M=0123456789ABCDEF(16進位),請計算其輸出(16進位表示)。

【問題4】(2分)

如果有簡化的DES版本,其明文輸入為8比特,初始置換表IP如下:

IP:2 6 3 1 4 8 5 7

請給出其逆初始置換表。

【問題5】(2分)

DES加密演算法存在一些弱點和不足,主要有密鑰太短和存在弱密鑰。請問,弱密鑰的定義是什麼?

【答案和解析】:

【問題 1】

(1)10 (2)6 (3)1 (4)11

【問題2】

0100

【問題3】

M = (0123456789ABCDEF)16 = (00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111)2經過IP置換,結果為:M』 =(11001100 00000000 11001100 11111111 11110000 10101010 11110000 10101010)2=(CC00CCFFF0AAF0AA)16

【問題4】

4 1 3 5 7 2 8 6

【問題5】

弱密鑰不受任何循環移位的影響,並且只能得到相同的子密鑰,由全0或全1組成的密鑰顯然是弱密鑰,子密鑰生成過程中被分割的兩部分分別為全0或全1時也是弱密鑰。

第5題

【說明】在公鑰體制中,每一用戶U都有自己的公開密鑰PKu和私鑰SKu。如果任意兩個用戶A和B按以下方式通信:

void Challenge(char *str)

{

char temp[9]={0};

strncpy(temp,str,8);

printf(「temp=%s
」,temp);

if(strcmp(temp」Please!@」)=O){

printf(「KEY: ****」);

}

}

int main(int argc,char *argv[])

{

char buf2[16];

int check=1;

char buf[8];

strcpy (buf2, 「give me key! !」);

strcpy(buf,argv[ 1]);

if(check=65) {

Challenge(bu f);

}

else {

printf(「Check is not 65 (%d)
Program terminated!!
」,check);

}

return 0;

}

A發給B消息[EpKB(m),,A]。

其中Ek(m)代表用密鑰K對消息m進行加密。

B收到以後,自動向A返回消息【EPkA(m),B】,以使A知道B確實收到消息m。

【問題1】(4分)

用戶C怎樣通過攻擊手段獲取用戶A發送給用戶B的消息m。

【問題2】(6分)

若通信格式變為:

A給B發消息:EPKB(ESKA(mLm,A)

B給A發消息:EpKA(EsKN(m),m,B)

這時的安全性如何?請分析A,B此時是如何相互認證並傳遞消息的。

【答案和解析】:

【問題 1】

攻擊用戶 C 可以通過以下手段獲取報文 m:

1. 用戶C截獲消息: (EPKB(m), A)

2. 用戶C篡改消息: (EPKB(m), C)

3. 用戶B返回消息: (EPKC(m), B)

4. 用戶C成功解密,最後得到明文m。

【問題2】

安全性提高了,能實現加密和認證的雙重任務。

第一步,A 發給 B 消息是 A 首先用自己的秘密鑰 SKA對消息 m 加密,用於提供數字簽名,再用接收方的公開鑰 PKB第 2 次加密,密文中包括明文的信息和 A 的身份信息。

第二步,接收方 B 收到密文,用自己的私鑰先解密,再用對方的公鑰驗證發送方的身份是 A,實現了 B 對 A 的認證,並獲取了明文。

第三步,B 發給 A 消息是 B 首先用自己的私鑰 SKB對消息 m 加密並簽名, 再用 A 的公開鑰 PKA第 2 次加密, 密文中包括明文的信息和 A 的身份信息, 還有 B 對接收的 m 的簽名密文。

第四步,只有 A 才能用自己的私鑰打開 B 送過來的密文, 並且驗證是 B 的簽名, 實現了 A 對 B的認證,當 A 看見原樣返回的 m,就知道 B 收到了 A 發送的明文 m 了。

第6題

【說明】

基於 Windows32 位系統分析下列代碼,回答相關問題 。

void Challenge(char *str)

{

char temp[9]={0};

strncpy(temp,str,8);

printf(「temp=%s
」,temp);

if(strcmp(temp」Please!@」)==0){

printf(「KEY: ****」);

}

}

int main(int argc,char *argv[ ])

{

char buf2[16]

int check=1;

char buf[8]

strcpy (buf2, 「give me key! !」);

strcpy(buf,argv[1]);

if(check==65) {

challenge(buf);

}

else {

printf(「Check is not 65 (%d)
Program terminated!!
」,check);

}

return 0;

}

【問題 1】(3 分)

main 函數內的三個本地變數所在的內存區域稱為什麼?它的兩個最基本操作是什麼?

【問題 2】(3分)

畫出buf,check,buf2 三個變數在內存的布局圖。

【問題 3】(2分)

應該給程序提供什麼樣的命令行參數值(通過argv變數傳遞)才能使程序執行流程進入判斷語句if(check=65)….然後調用challenge( )函數。

【問題4】(4分)

上述代碼所存在的漏洞名字是什麼,針對本例代碼,請簡要說明如何修正上述代碼以修補次漏洞。

【答案和解析】:

【問題 1】

1、堆棧。2、PUSH和POP。

【問題2】

【問題3】

用戶輸入9個字元的字元串,使其滿足條件:前8個字元為任意字元和第9個字元為大寫字母A;

【問題4】

緩衝區溢出。使用安全函數strncpy()來代替strcpy()函數。


推薦閱讀:

2018軟考信息安全工程師備考指南
2018年軟考信息安全工程師備考指南

TAG:信息安全 | 網路與信息安全工程師 |