密码学与加密算法研究
密码学是信息安全的基石,其核心在于研究信息的机密性、完整性、认证性与不可否认性。考研考查重点包括:
- 对称加密:AES、DES、SM4(国密)
- 非对称加密:RSA、ECC、SM2/SM9(国密)
- 哈希函数:SHA-256、SM3
- 数字签名与密钥交换机制
# AES加密实现(Python + pycryptodome)
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import base64
def encrypt_aes(plaintext, key):
cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC)
ct_bytes = cipher.encrypt(pad(plaintext.encode(), AES.block_size))
iv = base64.b64encode(cipher.iv).decode('utf-8')
ct = base64.b64encode(ct_bytes).decode('utf-8')
return {'iv': iv, 'ciphertext': ct}
# 示例:加密"Hello, Security!"
key = "0123456789abcdef" # 16字节密钥(AES-128)
result = encrypt_aes("Hello, Security!", key)
print("加密结果:", result)
在代码实现中,需特别注意:
- 密钥长度与模式选择(CBC/GCM/ECB)对安全性的影响
- 填充方式(PKCS7)与随机IV生成的必要性
- 异常处理机制(如密钥长度校验)
- 代码可读性与安全规范(避免硬编码密钥)
网络攻击与防御代码研究
网络攻防研究强调“知己知彼”,考生需掌握常见攻击原理并编写防御性代码。典型考查方向包括:
- 渗透测试脚本化:端口扫描、服务识别、漏洞探测
- 入侵检测系统(IDS)开发:基于规则或机器学习的流量分析
- 防火墙规则引擎设计:状态检测与应用层过滤
# 基于Scapy的SYN扫描实现(Python)
from scapy.all import
def syn_scan(target_ip, ports):
results = []
for port in ports:
syn_pkt = IP(dst=target_ip)/TCP(dport=port, flags="S")
resp = sr1(syn_pkt, timeout=1, verbose=0)
if resp and resp[TCP].flags & 0x12 == 0x12: # SYN-ACK
results.append(f"Port {port} is OPEN")
return results
# 示例:扫描192.168.1.1的常见端口
open_ports = syn_scan("192.168.1.1", [22, 80, 443, 3306])
for r in open_ports:
print(r)
关键能力点:
- 对TCP/IP协议栈的深度理解(如三次握手、四次挥手状态转换)
- 常见攻击特征识别:SQL注入(UNION SELECT)、XSS(<script>)、DDoS(SYN Flood)
- 防御代码设计:IP白名单、请求频率限制、输入过滤(正则校验)
数据加密与安全传输
数据在存储与传输过程中的加密保护是安全体系的核心环节。考查重点包括:
- 非对称加密用于密钥协商(如RSA密钥交换)
- 对称加密用于数据加密(如AES-GCM)
- SSL/TLS握手协议实现与定制
# 基于ssl模块的HTTPS客户端(Python)
import ssl
import socket
def https_request(hostname, path="/"):
context = ssl.create_default_context()
with socket.create_connection((hostname, 443)) as sock:
with context.wrap_socket(sock, server_hostname=hostname) as ssock:
ssock.sendall(f"GET {path} HTTP/1.1rnHost: {hostname}rnrn".encode())
response = b""
while True:
data = ssock.recv(4096)
if not data:
break
response += data
return response.decode(errors='ignore')
# 示例:请求baidu.com首页
resp = https_request("www.baidu.com")
print(resp[:500]) # 打印前500字符
需掌握的技术细节:
- 证书验证逻辑(CA信任链验证)
- 会话复用与TLS 1.3的0-RTT特性
- 数据完整性校验(HMAC-SHA256)
- 密钥派生函数(HKDF)在TLS 1.3中的应用
系统安全与防护代码研究
操作系统级安全防护涉及权限控制、漏洞检测、日志审计等。考查方向包括:
- Linux内核模块开发:eBPF实现系统调用监控
- 权限管理:基于ACL与Capability的安全策略
- 漏洞利用防护:ASLR绕过检测、DEP策略实现
# 基于eBPF的系统调用监控(Python + bcc)
from bcc import BPF
bpf_code = """
#include
int syscall__openat(struct pt_regs ctx, int dfd, const char filename) {
bpf_trace_printk("File opened: %s\n", filename);
return 0;
}
"""
b = BPF(text=bpf_code)
b.attach_kprobe(event=b.get_syscall_fnname("openat"), fn_name="syscall__openat")
print("Tracing openat system calls... Hit Ctrl-C to end.")
b.trace_print()
实践要点:
- 理解Linux安全模块(LSM)框架:SELinux、AppArmor、Landlock
- 实现最小权限原则(Principle of Least Privilege)
- 日志分析与安全事件关联:ELK栈集成
- 容器安全:镜像扫描、运行时防护(如Falco规则定制)