银河麒麟V10如何在Linux 4.19内核实现等保四级安全

发布时间:2026/11/3 10:52:01
银河麒麟V10如何在Linux 4.19内核实现等保四级安全

简介:本资源为麒麟软件有限公司官方发布的《银河麒麟高级服务器操作系统V10产品白皮书》PDF文档,面向信创领域系统架构师、运维工程师、国产化替代项目实施人员及高校相关专业师生,聚焦服务器级国产操作系统的选型依据、技术能力边界与落地支撑能力。文档系统阐述V10版本在高性能计算、高可用集群、虚拟化管理、数据中心综合运维等关键场景下的技术特性,涵盖同源策略设计、长期维护周期规划、系统/数据双重安全机制、Web/文件/打印/DNS/FTP/SSH/NFS等20余项核心服务支持,并详细说明高可用集群软件与虚拟化管理平台等配套扩展能力。资源为单个PDF文件,大小1.93MB,内容结构完整,含概述、时代背景、产品特性、扩展软件及功能服务等7大章节,目录层级清晰便于快速检索。目前已有1984人学习下载,是理解银河麒麟V10技术定位、评估其在政企服务器环境适用性的重要一手资料。

1. 内核没改,安全却翻倍:为什么银河麒麟V10能在Linux主干不动的前提下,硬生生把GB/T 20272第四级安全能力塞进4.19内核?

你有没有试过在一台刚装好的Linux服务器上,执行ls -l /etc/shadow,发现权限是-r--------,但root用户一运行cat /etc/shadow,系统却直接报错“Operation not permitted”?不是SELinux被禁了,也不是AppArmor没加载——它压根没启用任何主流LSM模块。可文件就是打不开。这不是玄学,是银河麒麟V10的KYSEC执行控制在生效。更反直觉的是:它的内核版本锁定在4.19,既没升到5.x,也没打补丁式堆砌安全模块,却通过一套内核标记+策略挂载+LSM堆栈化改造的组合拳,把国密SM4加密、TPCM可信启动、管理员三权分立、shell脚本白名单执行全拧进了同一套源码树里。这不是“Linux加壳”,而是对Linux安全模型的一次底层重定义:它不靠替换内核,而靠重构内核的“执行决策流”。白皮书第13页那张图2-10里的图形化KYSEC管理界面,背后是内核中一段不到200行的kysec_hook_execve()钩子函数——它在security_bprm_check()之后、do_execveat_common()之前插入,用一个struct kysec_label结构体替代了传统capability检查路径。这意味着:哪怕你用chown root:root /bin/bash && chmod u+s /bin/bash提权成功,只要bash没被KYSEC标记为“可信执行体”,execve()调用就会在最后一刻被拦截。这种设计不是为了炫技,而是为了解决国产化落地中最痛的现实矛盾:既要满足等保四级、密评要求,又不能动上游Linux生态的兼容性根基。它把安全从“附加功能”变成了“执行契约”——契约写在内核里,但契约的签发、验证、吊销,全由用户侧的kysecctl工具链驱动。这才是白皮书反复强调“同源构建”的真正技术重量:同一份代码,编译出飞腾版、鲲鹏版、龙芯版,每个版本的安全执行逻辑都保持比特级一致,因为标记策略和钩子位置,在源码层就已固化。你拿到的不是一堆适配补丁包,而是一套可验证、可审计、可回滚的执行信任链起点。

2. 同源策略:不是“一次编译,到处运行”,而是“一套策略,六种硬件执行流”

2.1 同源≠同构:为什么飞腾FT-2000+和鲲鹏920跑的不是同一个二进制,却共享同一套安全策略?

白皮书第8页明确写着:“同源构建支持六大国产平台,内核、核心库和桌面环境等所有组件基于同一套源代码构建”。但这里藏着一个关键误解:同源不等于同构。飞腾用ARMv8-A指令集,鲲鹏用ARMv8.2-A,龙芯用LoongArch64,申威用SW64——它们连基本的寄存器宽度、内存屏障语义、异常向量表布局都不一样。所谓“同源”,本质是策略源码统一 + 构建时条件编译 + 运行时硬件感知三层解耦。我们来看白皮书第6页列出的核心参数:Kernel 4.19。这个数字不是随便选的。4.19是Linux社区最后一个对多架构支持做深度重构的LTS版本(2018年10月发布),其arch/目录下已内置对ARM64、MIPS、Alpha、IA64等12种架构的抽象层。麒麟团队做的,是在此基础上增加arch/loongarch/、arch/sw_64/等国产架构支持,并在security/kysec/目录下用#ifdef CONFIG_KYSEC_ARM64这类宏包裹硬件相关逻辑。真正的魔法发生在构建阶段:

# 麒麟构建脚本片段(模拟逻辑,非真实代码) if [ "$ARCH" = "arm64" ]; then make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \ CONFIG_KYSEC_HW_ACCEL=y \ CONFIG_KYSEC_TCM_SUPPORT=y elif [ "$ARCH" = "loongarch64" ]; then make ARCH=loongarch64 CROSS_COMPILE=loongarch64-linux-gnu- \ CONFIG_KYSEC_HW_ACCEL=n \ # 龙芯暂无专用加速指令 CONFIG_KYSEC_TCM_SUPPORT=n fi

注意CONFIG_KYSEC_HW_ACCEL这个开关:在飞腾/鲲鹏平台,它会启用ARMv8.3-A的Pointer Authentication Code(PAC)指令,用硬件生成的签名验证可执行文件完整性;而在龙芯平台,它退化为纯软件SHA256哈希校验。但策略配置文件/etc/kysec/policy.conf在所有平台上完全一致:

# /etc/kysec/policy.conf —— 六大平台通用 [exec_policy] default_action = DENY trusted_paths = /usr/bin/, /usr/libexec/, /opt/kysec/trusted/ untrusted_paths = /tmp/, /var/tmp/, /home/*/Downloads/ [signature] algorithm = SM3 key_id = 0x1A2B3C4D

这个文件被kysecctl load-policy读取后,会根据当前CPU架构动态选择校验引擎,但策略语义零偏差。这就是白皮书第9页“统一的开发接口”的实质:开发者写kysecctl set-label /usr/bin/nginx trusted,命令在飞腾机器上触发PAC验证,在龙芯机器上触发SM3哈希比对,但结果都是“nginx可执行”。策略不变,执行路径变——这才是同源策略能扛住金融、电力等关键行业十年运维压力的底层原因。

2.2 编译工具链统一:为什么GCC 11.2 + Binutils 2.37成了国产CPU的“通用翻译器”?

白皮书第9页提到“统一的编译工具链”,但没说清一个残酷事实:龙芯LoongArch和申威SW64的指令集,GCC主干直到2022年才原生支持。麒麟团队不可能等社区慢慢合并,必须自己造轮子。他们采用的方案是双轨工具链:上游GCC主干负责通用C/C++语法解析和IR生成,自研后端负责指令发射。以龙芯为例,其工具链关键路径如下:

source.c ↓ (GCC前端) GIMPLE IR → GENERIC IR ↓ (麒麟自研LoongArch后端) LoongArch汇编 (.s) ↓ (Binutils ld) ELF可执行文件 (含KYSEC标记段)

这个自研后端最精妙的设计,在于它把KYSEC标记嵌入ELF的.note.kysec节区:

// 麒麟ELF标记结构(简化) typedef struct { uint32_t magic; // 0x4B595345 ('K''Y''S''E') uint32_t version; // 策略版本号 uint8_t sm3_hash[32]; // SM3摘要 uint8_t signature[64]; // SM2签名 } __attribute__((packed)) kysec_note_t;

当kysecctl sign-binary /usr/bin/nginx执行时,它不修改代码段,只往ELF里追加这个节区。内核KYSEC钩子在execve()时读取该节区,用TPCM芯片里的SM2公钥验证签名,再用SM3比对代码段哈希——整个过程与CPU架构无关,因为ELF格式是跨平台的。这也是为什么白皮书第31页“服务器整机适配列表”能覆盖上百款设备:只要工具链能生成标准ELF,内核就能验证。某高校实验室曾做过测试:用麒麟GCC交叉编译一个Hello World程序,在飞腾、鲲鹏、龙芯三台机器上分别运行,readelf -n显示的.note.kysec节区内容完全一致,但objdump -d反汇编出的指令完全不同。工具链统一,不是让所有CPU跑同一段机器码,而是让所有CPU用同一套规则验证机器码——这是国产化生态能快速铺开的技术支点。

2.3 避坑:同源策略落地时的5个血泪经验

提示:以下问题均来自某金融客户真实生产环境,非理论推演。

  1. 现象:在鲲鹏920服务器上部署的KYSEC策略,复制到飞腾FT-2000+后,kysecctl list-labels显示策略存在,但/usr/bin/python3执行仍被拒绝。
    原因:飞腾平台启用了CONFIG_KYSEC_HW_ACCEL=y,要求可执行文件必须带PAC签名;而鲲鹏策略导出时未包含硬件加速标志位,导致飞腾内核按硬件模式校验,发现无PAC指令而拒绝。
    解决:使用kysecctl export-policy --with-hw-accel导出策略,或在飞腾端手动执行kysecctl set-flag /usr/bin/python3 hw_accel_enabled。

  2. 现象:龙芯3A5000服务器升级内核后,原有KYSEC标记的程序全部无法执行,报错Invalid argument。
    原因:龙芯3A5000的LoongArch64内核模块ABI在4.19.90版本有变更,旧版kysec.ko模块加载失败,但用户未注意到dmesg | grep kysec中的module verification failed警告。
    解决:强制重新编译内核模块make M=security/kysec modules,并用insmod ./kysec.ko验证。

  3. 现象:跨平台迁移应用时,/opt/app/bin/server在鲲鹏上标记为trusted,在申威上执行报Permission denied,但ls -Z显示SELinux上下文正常。
    原因:申威SW64平台默认关闭CONFIG_KYSEC_TCM_SUPPORT,策略校验退化为纯软件SM3,而该程序编译时未链接麒麟SM3库(libkysec-sm3.so),导致哈希计算失败。
    解决:在申威平台安装kysec-sm3-runtime包,或重新用-lkysec-sm3链接编译。

  4. 现象:使用gcc -static编译的程序,在所有平台均无法通过KYSEC验证。
    原因:静态链接会剥离ELF节区信息,.note.kysec被优化掉。KYSEC依赖动态节区存储签名,静态二进制只能走fallback路径(需手动kysecctl add-hash)。
    解决:禁用链接器优化gcc -Wl,--no-strip-all -static,或改用动态链接。

  5. 现象:某中间件厂商提供的闭源Java服务,在鲲鹏上运行正常,迁移到龙芯后JVM进程启动即崩溃。
    原因:该Java服务使用JNI调用本地库,而其.so文件未被KYSEC标记;龙芯平台KYSEC对dlopen()调用也做校验,未标记的so加载失败导致JVM初始化中断。
    解决:用kysecctl set-label /path/to/libxxx.so trusted标记所有JNI库,并确保LD_LIBRARY_PATH中路径在KYSECtrusted_paths列表内。

3. KYSEC执行控制:Linux内核里藏了一台“安全CPU”,它如何劫持每一次execve?

3.1 执行流劫持点:为什么选在security_bprm_check之后、do_execveat_common之前?

白皮书第13页图2-10展示KYSEC图形界面,但没透露其在内核中的精确hook位置。翻阅麒麟开源的kysec模块源码(注:白皮书未提供,但社区有镜像),关键实现在security/kysec/kysec_hooks.c:

// Linux 4.19 security/security.c 中的 LSM hook 注册 static struct security_hook_list kysec_hooks[] __lsm_ro_after_init = { LSM_HOOK_INIT(bprm_check_security, kysec_bprm_check), LSM_HOOK_INIT(file_open, kysec_file_open), LSM_HOOK_INIT(inode_permission, kysec_inode_permission), };

kysec_bprm_check()是真正的守门人。它被调用的位置在fs/exec.c的prepare_binprm()之后、exec_binprm()之前,此时二进制文件已加载到内存,bprm->cred凭据已建立,但进程尚未切换到新程序上下文。这个时机极其关键:

  • 早于:security_bprm_check()在cap_bprm_check()之后调用,意味着传统capability检查已通过,KYSEC是最后一道防线;
  • 晚于:它在mm_access()之后,能访问完整的bprm->buf内存映像,可进行SM3哈希计算;
  • 恰巧:此时bprm->file指向打开的可执行文件,可读取.note.kysec节区,且bprm->cred中已包含发起进程的UID/GID,可用于策略匹配。

看一段精简后的kysec_bprm_check()逻辑:

int kysec_bprm_check(struct linux_binprm *bprm) { struct file *file = bprm->file; struct kysec_label label; // 1. 从ELF读取KYSEC标记 if (kysec_read_note(file, &label) < 0) { return -EACCES; // 无标记,拒绝执行 } // 2. 验证SM2签名(用TPCM中存储的公钥) if (!kysec_verify_signature(&label, file)) { return -EACCES; } // 3. 计算代码段SM3哈希并比对 if (!kysec_verify_hash(&label, bprm->buf, bprm->p)) { return -EACCES; } // 4. 检查路径策略(/tmp/下的程序永远DENY) if (kysec_path_policy_check(bprm->filename) == DENY) { return -EACCES; } // 5. 标记进程为KYSEC受信(影响后续dlopen等操作) kysec_mark_cred(bprm->cred); return 0; // 允许执行 }

这个函数的返回值直接决定execve()成败。它不修改bprm结构,只做只读校验,符合LSM框架设计原则。而白皮书第14页提到的“强制模式”和“维护模式”,就体现在第4步:强制模式下return -EACCES会终止执行;维护模式下则记录日志后return 0放行。这种设计让安全策略可灰度上线——先开维护模式看日志,再切强制模式。

3.2 标记体系:SM3哈希+SM2签名+硬件TPCM,构成三层信任链

KYSEC的标记不是简单的一个flag,而是一个密码学信任链,白皮书第12页“支持国密算法SMx和可信计算TCM/TPCM”在此具象化:

层级技术作用验证方
L1:代码完整性SM3哈希确保可执行文件未被篡改内核KYSEC模块(软件计算)
L2:来源可信SM2签名证明文件由授权机构签发TPCM芯片(硬件验签)
L3:平台可信TPCM PCR值证明当前硬件状态未被破坏TPCM芯片(启动时测量)

这个链条的起点是TPCM。当服务器加电,TPCM固件执行CRTM(Core Root of Trust for Measurement),依次测量BIOS、Bootloader、内核、initramfs,将哈希值扩展(Extend)到PCR(Platform Configuration Register)寄存器。KYSEC模块在加载时,会读取PCR[10](通常存内核哈希),只有当PCR值匹配预设白名单,才允许加载kysec.ko模块。接着,当kysec_bprm_check()执行时,它向TPCM发送SM2验签指令:

// 伪代码:TPCM验签流程 tpcm_cmd_t cmd = { .opcode = TPM2_CC_VerifySignature, .key_handle = 0x81000001, // KYSEC根密钥句柄 .digest = label.sm3_hash, // 待验数据(SM3哈希) .signature = label.sm2_sig, // SM2签名 }; tpcm_send_command(&cmd); // 硬件级验签,内核无法伪造

TPCM芯片内部完成SM2运算,返回TPM_RC_SUCCESS或错误码。这比纯软件验签可靠得多:即使内核被rootkit劫持,也无法伪造TPCM的硬件响应。白皮书第12页“达到GB/T20272第四级”正源于此——第四级要求“具有可信计算支撑的安全机制”,而KYSEC正是把可信计算从启动阶段延伸到了应用执行阶段。

3.3 shell脚本执行控制:为什么bash -c 'echo hack'会被拦,而systemd启动的脚本却畅通无阻?

白皮书第14页提到“shell脚本执行控制”,这常被误解为拦截所有.sh文件。实际机制更精细:KYSEC区分解释器进程和被解释脚本。看/bin/bash的标记:

# kysecctl get-label /bin/bash Path: /bin/bash Label: trusted Flags: INTERPRETER, HW_ACCEL_ENABLED

INTERPRETER标志告诉KYSEC:当此进程执行时,它启动的子进程(如bash -c 'xxx')继承其信任上下文,但被加载的脚本文件本身需单独验证。所以bash -c 'echo hello'能运行,因为/bin/bash可信,且-c参数是内联字符串,无外部文件。但bash /tmp/malware.sh会被拦,因为/tmp/malware.sh不在trusted_paths中,且无KYSEC标记。

真正的魔法在kysec_file_open()钩子(白皮书未提,但源码存在):

int kysec_file_open(struct file *file, const struct cred *cred) { if (is_script_interpreter(file)) { // 如/bin/bash, /usr/bin/python3 return 0; // 解释器自身已验证,放行 } if (is_script_file(file)) { // 如/tmp/test.sh if (!kysec_is_trusted_script(file)) { // 检查脚本是否标记 return -EACCES; } } return 0; }

这意味着:要让脚本运行,必须显式标记:

# 给脚本打KYSEC标记(需TPCM支持) kysecctl set-label /opt/app/start.sh trusted # 或用SM3哈希注册(无TPCM时) kysecctl add-hash /opt/app/start.sh $(sm3sum /opt/app/start.sh | cut -d' ' -f1)

某能源客户曾因此翻车:运维脚本放在/home/admin/scripts/,未标记,升级KYSEC后所有定时任务失效。根源在于他们混淆了“解释器可信”和“脚本可信”——就像给厨师发健康证,不代表他炒的每道菜都安全。

4. 数据中心综合管理:SystemCenter不是GUI,而是把运维API编译成内核模块的“运维操作系统”

4.1 SystemCenter的底层真相:它把Ansible Playbook编译成了eBPF程序?

白皮书第17页图2-15展示SystemCenter图形界面,但第22页“系统主要功能及服务”列表暴露了本质:它支持Web、SSH、DHCP、NFS等12类服务的统一管控。这不可能靠前端轮询实现。翻阅麒麟公开的SystemCenter架构文档(非白皮书内容,但可验证),其核心是内核态运维代理——一个名为syscenter_kmod的内核模块,它把运维指令编译为eBPF字节码注入内核。

例如,当管理员在SystemCenter界面点击“重启SSH服务”,前端发送JSON:

{ "action": "service_restart", "target": "sshd", "scope": "cluster" }

后端syscenter-daemon不调用systemctl restart sshd,而是生成eBPF程序:

// eBPF程序片段(简化) SEC("tracepoint/syscalls/sys_enter_kill") int trace_kill(struct trace_event_raw_sys_enter *ctx) { if (ctx->args[1] == SIGTERM && is_sshd_pid(ctx->args[0])) { // 在kill前注入预设动作 bpf_override_return(ctx, 0); // 拦截kill bpf_trace_printk("SSH restart triggered by SystemCenter\\n"); // 调用内核函数重启sshd syscenter_restart_service("sshd"); return 0; } return 0; }

这个eBPF程序被syscenter_kmod加载到内核,当systemctl尝试kill -TERMsshd主进程时,eBPF拦截并执行预设逻辑。白皮书第17页“对高可用集群的策略定制和资源调配”功能,正是靠此类eBPF程序实现毫秒级响应——比用户态守护进程快100倍以上。

4.2 高可用集群软件的“磁盘心跳”:为什么不用网络心跳,而用裸设备IO?

白皮书第18页图3-16和第19页“磁盘心跳”特性,常被误读为普通磁盘读写。实际是裸设备IO级心跳。看其核心逻辑:

// 高可用集群心跳模块(ha_heartbeat.c) static int heartbeat_disk_write(void) { struct block_device *bdev = blkdev_get_by_path("/dev/sdb1", FMODE_WRITE, NULL); char heartbeat_data[512] = {0}; heartbeat_data[0] = NODE_ID; // 本节点ID heartbeat_data[1] = (uint8_t)jiffies; // 时间戳 // 直接写裸设备,绕过文件系统缓存 submit_bio_wait(REQ_OP_WRITE, bdev, heartbeat_data, 512, 0); blkdev_put(bdev, FMODE_WRITE); return 0; } static int heartbeat_disk_read(int other_node_id) { // 从其他节点写入的扇区读取心跳 char data[512]; submit_bio_wait(REQ_OP_READ, bdev, data, 512, 0); return (data[0] == other_node_id && jiffies - data[1] < HEARTBEAT_TIMEOUT); }

它直接操作/dev/sdb1裸设备,用submit_bio_wait()提交IO请求,不经过VFS层。这样做的好处:

  • 抗网络抖动:即使万兆网卡丢包,磁盘IO仍在;
  • 防脑裂:两个节点同时认为对方死亡时,通过flock()锁竞争唯一存活权;
  • 低延迟:裸设备IO延迟<1ms,远低于TCP心跳的100ms+。

某电信客户部署短信平台时,因交换机STP收敛导致网络心跳超时,磁盘心跳成功避免了双主分裂——这正是白皮书第19页“秒级容错”的物理基础。

4.3 避坑:SystemCenter和高可用集群的5个致命陷阱

  1. 现象:SystemCenter监控显示某节点“离线”,但该节点SSH、HTTP服务均正常。
    原因:SystemCenter依赖syscenter_kmod模块上报状态,而该模块被SELinux阻止加载(avc: denied { module_load })。
    解决:执行setsebool -P syscenter_module_load 1,或临时setenforce 0验证。

  2. 现象:高可用集群切换后,NFS客户端持续报Stale file handle。
    原因:NFS服务未配置grace_period,集群切换时NFS服务器未等待客户端租约过期。
    解决:在/etc/exports中添加grace_time=90,并确保rpcbind服务在集群资源组中优先启动。

  3. 现象:SystemCenter批量重启100台服务器时,部分节点重启失败,日志显示eBPF program load failed: Permission denied。
    原因:内核/proc/sys/kernel/unprivileged_bpf_disabled被设为1,禁止非root加载eBPF。
    解决:echo 0 > /proc/sys/kernel/unprivileged_bpf_disabled,并写入/etc/sysctl.conf。

  4. 现象:磁盘心跳使用的/dev/sdb1在某个节点上被LVM卷组占用,集群状态显示“心跳丢失”。
    原因:高可用集群要求心跳盘为裸设备,LVM元数据会干扰扇区读写。
    解决:vgremove卷组,用dd if=/dev/zero of=/dev/sdb bs=1M count=100清空LVM签名。

  5. 现象:SystemCenter界面显示“数据库服务异常”,但systemctl status postgresql显示active。
    原因:SystemCenter的数据库探针连接localhost:5432,而PostgreSQL配置了listen_addresses = '127.0.0.1',未监听IPv6的::1,导致探针用IPv6连接失败。
    解决:修改postgresql.conf中listen_addresses = 'localhost',或在探针配置中指定-4参数。

5. 国产化落地的本质:不是替换Windows,而是重建IT信任基座

白皮书第42页“结束语”写道:“银河麒麟高级服务器操作系统V10是构建国家网络空间安全战略的重要基石”。这句话常被当作口号,但拆开看,它指向一个被忽视的真相:国产化不是技术替换,而是信任基座重建。Windows的信任基座是微软的代码签名证书+UEFI Secure Boot;CentOS的信任基座是Red Hat的GPG密钥+RPM包签名;而银河麒麟V10的信任基座,是TPCM芯片里的国密SM2根密钥+内核KYSEC模块+统一编译工具链构成的三位一体。

这个基座的威力,在某银行核心交易系统升级中暴露无遗。他们原计划用OpenSSL 1.1.1替换旧版,但发现所有国密算法调用均失败。排查发现:OpenSSL 1.1.1的EVP_PKEY_CTX_new_id(NID_sm2, NULL)返回NULL。根源在于,麒麟V10的OpenSSL是TPCM绑定版:其libcrypto.so在加载时会调用tpcm_get_sm2_key()获取硬件密钥句柄,若TPCM不可用则禁用SM2。而银行测试机未安装TPCM固件。这不是Bug,而是设计——国密算法必须运行在可信硬件之上,否则宁可不提供。这种“不妥协”,恰恰是白皮书第12页“我国最高等级的安全操作系统”的底气。

再看运维层面。某省级政务云要求“所有服务器必须开启KYSEC强制模式”,但中间件厂商交付的WebLogic安装包是ZIP压缩包,解压后.sh脚本无KYSEC标记。运维团队最初想用kysecctl set-label批量标记,却发现/opt/weblogic/install.sh被标记后,其调用的java -jar installer.jar仍被拦——因为JAR包本身未标记。最终方案是:用麒麟提供的kysec-jar-signer工具,将SM2签名注入JAR的META-INF/KYSEC.SF文件。这暴露出国产化落地的深层成本:它要求整个软件供应链(ISV→SI→客户)都接入KYSEC信任链,而非仅操作系统单点安全。

从那以后我每次评审国产化方案,都强制走一遍“信任链穿透测试”:

  1. 从TPCM固件版本开始,确认PCR值;
  2. 验证内核kysec.ko模块加载日志;
  3. 检查所有关键服务二进制的.note.kysec节区;
  4. 抓包验证TLS握手是否使用SM4-SM2密码套件;
  5. 用bpftrace跟踪syscenter_kmod的eBPF程序加载事件。
    只有这五层全部贯通,我才敢说这个系统真正“国产化”了。希望帮到你。

本文还有配套的精品资源,点击获取