2017年信息安全工程师考试下午真题,以下为第五部分。
试题五〈共10分〉
阅读下列说明,回答问题1和问题2,将解答写在答题纸的对应栏内。
【说明】在公钥体制中,每一用户U都有自己的公开密钥PKu和私钥SKu。如果任意两个用户A和B按以下方式通信:
void Challenge(char *str)
{
char temp[9]={0};
strncpy(temp,str,8);
printf("temp=%s\n",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) \n Program terminated!!\n",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此时是如何相互认证并传递消息的。
试题六(共12分)
阅读下列说明,回答问题1至问题4,将解答写在答题纸的对应栏内。
【说明】
基于Windows32位系统分析下列代码,回答相关问题。
【问题1】(3分)
main函数内的三个本地变量所在的内存区域称为什么?它的两个最基本操作是什么?
【问题2】(3分)
画出buf,check,buf2三个变量在内存的布局图。