静态脱敏系统解决方案

静态脱敏系统解决方案

静态脱敏系统解决方案最常见的失败,不是脱敏算法选错了,而是三处交界没人认领:业务说不清哪些字段该脱,权限说不清谁能看脱敏前的原表,备份说不清副本落在哪个密钥域。某机构上线脱敏工具三个月,检查时被问了一句"谁能看到未脱敏的原始表",四个部门互相看了一眼,谁都答不上来。工具在运行,责任在悬空。

坐标先立:脱敏处在个人信息保护与数据利用的交叉位置,对应个保法的去标识化要求、GB/T 37964 的去标识化指南、GB/T 22239-2019 的身份鉴别与访问控制条款,以及密评对数据完整性的要求。一套方案能不能落地,取决于它是否把"字段口径、可见性判决、副本归属、变更留痕"这四件事各自的责任边界写清楚,而不是把功能清单拉得更长。

01 | 静态脱敏系统解决方案:这件事难在哪儿

  • 字段口径没有签字人:安全部门按分类分级列敏感字段,业务部门按"这些不影响分析"往外划,两边都没有一份可签署的授权字段清单。结果是每次出库都要重新争一遍,脱敏规则永远停在草稿状态。为什么:脱敏的本质是"授权范围内的最小可见",没有授权清单,最小可见就无从定义。
  • 可见性被判成了"脱敏的下游":很多团队认为"脱完敏就安全了",于是把脱敏后的整表开放给分析团队。可脱敏只改变"看到的是不是真值",不改变"能不能看到";字段级的可见性判决,属于静态脱敏系统访问控制的范围。
  • 副本没有归属:脱敏副本常被当成"安全数据"复制到测试库、分析沙箱、临时目录。这些目录往往不在备份策略里,也不在密钥域里,勒索软件加密它们和加密生产库没有区别,而且没人会发现自己少了一份副本。
  • 变更没有版本:脱敏规则一调整,历史批次的可复算性就断了。半年后被问"某批数据按哪版规则脱的",只能回答"大概是上一版"。
  • 还原没有审批路径:可逆能力被当成引擎的一个开关,谁有引擎权限谁就能还原。可逆本该是被审批的例外动作,而不是默认能力。

这五条里有四条不是算法问题,而是边界问题。所以判断一套静态脱敏系统解决方案成不成熟,不看它支持多少种脱敏算法,而看它能不能把五条边界各自落到一个可核对的证据上。

02 | 静态脱敏系统解决方案的三条交界线

把静态脱敏系统解决方案放进真实环境,一定会同时碰到业务系统、权限系统、备份系统。三处交界各有一张责任表,谁负责哪一半必须写清楚。

交界 方案负责 相邻系统负责 出事时怎么判 可复算证据
字段口径 按授权清单执行、规则版本化 业务签署清单、安全定分级 清单外字段是否出现在产物里 清单签名 + 规则版本号
可见性 只输出授权字段的脱敏形态 判决主体能读哪些字段 越权读取是否被拒 判决记录 + 拒绝计数
副本归属 副本用独立密钥域加密 备份策略覆盖副本目录 生产密钥能否解开副本 密钥域标识 + 还原点摘要
变更 规则变更留版本与摘要 变更审批流程 历史批次能否按老版本复算 版本库 + 摘要链
还原 还原动作留台账、按角色分离 还原审批与调证依据 谁能还原、还原了哪一批 还原台账整体签名

这张表的价值不在"分得细",而在出事时能一句话定位到责任方。行业里常见的争执是"数据泄露了到底怪脱敏还是怪权限",有了这张表,争执变成核对:产物里有没有清单外字段(看方案)、越权读取有没有被拒(看权限)、副本有没有出密钥域(看备份)。这也是一套静态脱敏系统解决方案最先要交付的东西:把三张责任表交给三个部门去认领。

2.1 静态脱敏系统解决方案与访问控制的交界

这是三条交界里最容易被跳过的一条。脱敏解决的是"值变成什么",访问控制解决的是"这个主体能不能碰这个字段"。两者叠加才构成最小可见:只做脱敏,等于把脱敏后的数据整表发出;只做访问控制,等于有权限的人看到的仍是明文。一套静态脱敏系统访问控制方案的判决表,列的不是表名而是字段名------不是"能不能读 orders",而是"能不能读 orders 的 phone 字段"。粒度落到字段一级,最小可见才有意义。

2.2 静态脱敏系统解决方案与副本域的交界

副本是脱敏方案里最不受管的一段。生产库有密钥域、有备份策略、有监控;副本目录往往什么都没有。所以一份完整的静态脱敏系统防勒索方案,核心不是给副本再加一层加密软件,而是让副本从一开始就落进独立密钥域:副本用副本域的密钥加密,生产域密钥解不开它,还原点摘要单独登记,恢复前先复算。这样即使副本目录被勒索软件遍历,拿到的也只是一堆解不开的密文。判断一份静态脱敏系统防勒索方案够不够用,只看一件事:生产域的密钥能不能解开副本。

2.3 静态脱敏系统访问控制方案:把字段粒度写进判决

一套可执行的静态脱敏系统访问控制方案,至少要能回答三个问题:这个主体能读哪些字段、能执行哪些动作、在什么条件下。三个问题对应判决三元组(主体、资源、动作)再加一个环境条件。缺省拒绝是底线:没被明确列明的组合一律拒绝,而不是一律放行。显式拒绝优先是第二条:同一条策略里出现允许与拒绝,以拒绝为准。这两条默认值决定了策略失效时的方向,也决定了审计时能不能解释清楚。

03 | 先跑通:静态脱敏系统解决方案的六个环节

下面这段演示把"字段清单 → 可见性判决 → 确定性脱敏 → 授权还原 → 副本域隔离 → 摘要与凭据"六件事跑成一条链。它只依赖国密基元,不绑定任何私有约定,凡是能复现这套结果的系统,结论都能被第三方独立核对。

python 复制代码
# -*- coding: utf-8 -*-
"""
D13#1 demo ------ 静态脱敏系统解决方案(方案的三处交界可复算演示)
落点:方案的边界不在功能清单,而在三处交界------
      与业务系统的交界(字段口径谁定)、与访问控制的交界(可见性由谁判)、
      与备份/防勒索的交界(脱敏副本落到哪个密钥域)。
演示:字段级授权清单 / 显式拒绝优先与缺省拒绝 / 确定性脱敏 /
      授权侧可还原与非授权侧不可还原 / 导出凭据验签与篡改检出 /
      副本域密钥隔离 / 还原点摘要复算。
注意:同一私钥 + 同一 FIXED_K 仅用于演示复现。
"""

from gmssl import sm2, sm4, sm3, func

# 两把私钥(均取自 keycheck 已验证 SAFE 的重复字节模式)
PRIV_A = "7c4019ab7c4019ab7c4019ab7c4019ab7c4019ab7c4019ab7c4019ab7c4019ab"
PRIV_B = "4d5f0c724d5f0c724d5f0c724d5f0c724d5f0c724d5f0c724d5f0c724d5f0c72"  # 冒名方
FIXED_K = "0101010101010101010101010101010101010101010101010101010101010101"


def pub_of(priv: str) -> str:
    """P = d·G。gmssl 不会从私钥派生公钥,必须显式算出再传给 CryptSM2。"""
    return sm2.CryptSM2(private_key=priv, public_key="")._kg(
        int(priv, 16), sm2.default_ecc_table["g"])


PUB_A = pub_of(PRIV_A)
PUB_B = pub_of(PRIV_B)


def sm3_hex(data: bytes) -> str:
    return sm3.sm3_hash(func.bytes_to_list(data))


# ---- 手写 SM4-CBC:gmssl 的 crypt_cbc 有缺陷,one_round 是 16 进 16 出的单块运算 ----
def sm4_cbc(key: bytes, iv: bytes, data: bytes, enc: bool) -> bytes:
    assert len(key) == 16, "SM4 KEY 必须 16 字节"
    assert len(iv) == 16, "IV 必须 16 字节(少一字节会 IndexError)"
    c = sm4.CryptSM4()
    c.set_key(key, sm4.SM4_ENCRYPT if enc else sm4.SM4_DECRYPT)
    out, prev = b"", iv
    for i in range(0, len(data), 16):
        blk = data[i:i + 16]
        if enc:
            x = bytes(a ^ b for a, b in zip(blk, prev))
            e = bytes(c.one_round(c.sk, list(x)))
            out += e
            prev = e
        else:
            d = bytes(c.one_round(c.sk, list(blk)))
            out += bytes(a ^ b for a, b in zip(d, prev))
            prev = blk
    return out


def pkcs7_pad(data: bytes, block: int = 16) -> bytes:
    pad = block - (len(data) % block)
    return data + bytes([pad]) * pad


def pkcs7_unpad(data: bytes) -> bytes:
    pad = data[-1]
    if not (1 <= pad <= 16):
        return data
    return data[:-pad]


def decrypt_or_none(key: bytes, iv: bytes, ct: bytes):
    try:
        return pkcs7_unpad(sm4_cbc(key, iv, ct, False))
    except Exception:  # noqa: BLE001
        return None


def dec_is(key: bytes, iv: bytes, ct: bytes, plain: bytes) -> bool:
    return decrypt_or_none(key, iv, ct) == plain


# ======================================================================= #
# ↓↓↓ 业务逻辑区 ↓↓↓
# ======================================================================= #

# 1) 交界一:字段口径。授权字段清单由业务签署,清单外一律不可读
ALLOW_FIELDS = ["name", "phone"]
SCHEMA_FIELDS = ["name", "phone", "id_card", "salary"]


def may_read(field: str) -> bool:
    return field in ALLOW_FIELDS


ok_scope = may_read("phone") and (not may_read("id_card"))

# 2) 交界二:可见性判决。显式拒绝优先,未列明即拒绝(缺省拒绝)
POLICY = {
    ("analyst", "orders", "read"): "allow",
    ("analyst", "orders", "export"): "deny",
}


def decide(subject: str, resource: str, action: str) -> str:
    return POLICY.get((subject, resource, action), "deny")


ok_allow = decide("analyst", "orders", "read") == "allow"
ok_explicit_deny = decide("analyst", "orders", "export") == "deny"
ok_default_deny = decide("analyst", "salary", "read") == "deny"

# 3) 确定性脱敏:同规则版本 + 同批次密钥,同值同形;不同值不同形
BATCH_KEY = sm3_hex(b"BATCH-KEY-D131-PROD-20261021")
RULE_V = "rule-mask-name-v3"


def mask_value(value: str, batch_key: str, rule: str) -> str:
    h = sm3_hex(f"{rule}|{batch_key}|{value}".encode("utf-8"))
    return h[: len(value) * 2]


tok_1 = mask_value("王五", BATCH_KEY, RULE_V)
tok_2 = mask_value("王五", BATCH_KEY, RULE_V)
tok_3 = mask_value("赵六", BATCH_KEY, RULE_V)
ok_det = tok_1 == tok_2
ok_diff = tok_1 != tok_3

# 4) 授权侧可还原 / 非授权侧不可还原
SYM = BATCH_KEY.encode("utf-8")[:16]
IV = b"16BYTEIVFORPAYGW"
plain = ("导出批次:20261021|字段:phone|用途:分析").encode("utf-8")
ct = sm4_cbc(SYM, IV, pkcs7_pad(plain), True)
ok_rev = decrypt_or_none(SYM, IV, ct) == plain
SYM_OTHER = sm3_hex(b"BATCH-KEY-D131-OTHER-20261021").encode("utf-8")[:16]
ok_irrev = dec_is(SYM_OTHER, IV, ct, plain) is False

# 5) 交界三:副本域。脱敏副本用副本域密钥加密,生产域密钥解不开
REPLICA_KEY = sm3_hex(b"REPLICA-DOMAIN-KEY-D131-20261021").encode("utf-8")[:16]
replica_plain = ("副本:20261021|资源:orders|字段:phone|形态:token").encode("utf-8")
replica_ct = sm4_cbc(REPLICA_KEY, IV, pkcs7_pad(replica_plain), True)
ok_replica_ok = decrypt_or_none(REPLICA_KEY, IV, replica_ct) == replica_plain
ok_replica_iso = dec_is(SYM, IV, replica_ct, replica_plain) is False

# 6) 还原点摘要登记:恢复前复算一致,篡改即检出
rp = f"20261021|full|orders|{sm3_hex(b'payload-20261021')}"
rp_digest = sm3_hex(rp.encode("utf-8"))
ok_rp = sm3_hex(rp.encode("utf-8")) == rp_digest
ok_rp_tamper = sm3_hex((rp + "|evil").encode("utf-8")) != rp_digest

# 7) 导出凭据:字段清单 + 批次 + 规则版本整体签名
manifest = f"{'|'.join(ALLOW_FIELDS)}|batch={BATCH_KEY[:8]}|rule={RULE_V}"
mh = sm3_hex(manifest.encode("utf-8"))
sm2_a = sm2.CryptSM2(public_key=PUB_A, private_key=PRIV_A)
m_sig = sm2_a.sign(mh.encode("utf-8"), FIXED_K)
ok_cred = sm2_a.verify(m_sig, mh.encode("utf-8"))
bad = manifest + "|salary"
ok_cred_tamper = not sm2_a.verify(m_sig, sm3_hex(bad.encode("utf-8")).encode("utf-8"))
sm2_b = sm2.CryptSM2(public_key=PUB_B, private_key=PRIV_B)
sig_b = sm2_b.sign(mh.encode("utf-8"), FIXED_K)
ok_imposter = not sm2_a.verify(sig_b, mh.encode("utf-8"))
ok_repro = sm2_a.sign(mh.encode("utf-8"), FIXED_K) == m_sig
ok_hash64 = len(mh) == 64

asserts = [
    ("字段清单:授权字段可读、清单外字段不可读", ok_scope),
    ("访问判决:已列明动作放行", ok_allow),
    ("访问判决:显式拒绝优先", ok_explicit_deny),
    ("访问判决:未列明即拒绝(缺省拒绝)", ok_default_deny),
    ("确定性脱敏:同值同形", ok_det),
    ("确定性脱敏:不同值不同形", ok_diff),
    ("授权侧持批次密钥可还原", ok_rev),
    ("非授权侧换密钥解不开", ok_irrev),
    ("副本域密钥可还原副本", ok_replica_ok),
    ("生产域密钥解不开副本(密钥域隔离)", ok_replica_iso),
    ("还原点摘要复算一致", ok_rp),
    ("篡改还原点摘要即检出", ok_rp_tamper),
    ("导出凭据验签通过", ok_cred),
    ("篡改导出字段清单后验签被拒", ok_cred_tamper),
    ("冒名私钥签发凭据被拒", ok_imposter),
    ("固定 K 签名可复现", ok_repro),
    ("SM3 摘要为 64 位十六进制", ok_hash64),
]

# 首行必须是 '='*60:脚本靠它把「demo 输出块」与「ASCII 机制图」区分开
print("=" * 60)
for t, ok in asserts:
    print(f"[{t}] = {'True' if ok else 'False'}")
text 复制代码
============================================================
[字段清单:授权字段可读、清单外字段不可读] = True
[访问判决:已列明动作放行] = True
[访问判决:显式拒绝优先] = True
[访问判决:未列明即拒绝(缺省拒绝)] = True
[确定性脱敏:同值同形] = True
[确定性脱敏:不同值不同形] = True
[授权侧持批次密钥可还原] = True
[非授权侧换密钥解不开] = True
[副本域密钥可还原副本] = True
[生产域密钥解不开副本(密钥域隔离)] = True
[还原点摘要复算一致] = True
[篡改还原点摘要即检出] = True
[导出凭据验签通过] = True
[篡改导出字段清单后验签被拒] = True
[冒名私钥签发凭据被拒] = True
[固定 K 签名可复现] = True
[SM3 摘要为 64 位十六进制] = True
text 复制代码
静态脱敏方案:四条交界与证据链
──────────────────────────────────────
 业务签署字段清单 ──▶ 方案按清单执行
        │                     │
        ▼                     ▼
 访问控制判决(主体/资源/动作/字段)
        │  缺省拒绝 · 显式拒绝优先
        ▼
 脱敏产物 token(同值同形、保格式)
        ├──▶ 授权侧:持批次密钥可还原
        ├──▶ 副本域:独立密钥加密,生产域解不开
        └──▶ 证据:规则版本 + 还原点摘要 + 凭据签名

验证点:授权字段可读、清单外字段不可读;已列明动作放行、显式拒绝优先、未列明即拒绝;同值同形、不同值不同形;授权侧持批次密钥可还原、换密钥解不开;副本域密钥可还原副本、生产域密钥解不开副本;还原点摘要复算一致、篡改即检出;导出凭据验签通过、篡改字段清单被拒、冒名签发被拒。这十七个断言全部为 True,说明这套边界不靠口头约定,而靠公开算法即可复算。

04 | 落地动作:静态脱敏系统解决方案分线怎么做

四条线推进,每条线都要产出可签名的产物,否则就等于没做。

  • 口径线:让业务与安全共同签署一份授权字段清单,字段名、分级、脱敏规则、是否可逆四列写全;清单进版本库,变更走审批。某省级机构把清单从"口头共识"改成"季度签署"后,出库争议从每月数次降到没有。
  • 判决线:按静态脱敏系统访问控制方案把字段粒度接进判决,判决结果记拒绝计数;拒绝计数突然升高往往意味着有人在探边界,这比事后审计发现得早。
  • 副本线:按静态脱敏系统防勒索方案的要求,为副本单独建密钥域,副本加密不借用生产密钥;还原点摘要登记进清单,恢复前先复算。
  • 证据线:规则版本、批次密钥标识、还原台账、判决记录四类证据随作业沉淀,不做事后补材料。

整改样本:某分析平台原有三套脱敏脚本分散在各业务系统,口径互不一致。整改分两步:先把三套脚本的字段口径合并成一份签署清单,再把副本从"业务目录下的临时子目录"迁到独立密钥域。三个月后的自查中,平台能直接调出清单签名、某批次的规则版本、副本还原点摘要,用三份材料替代了过去的口头说明。

05 | 避坑清单:8 条最容易踩的坑

# 坑 后果 怎么验证避开了
1 字段清单无人签署 每次出库重吵一遍 清单有签署人与版本号
2 脱敏当权限用 整表发给所有人 越权读取被拒
3 副本落在业务目录 副本被加密无人知 副本有独立密钥域
4 规则无版本 历史批次无法复算 给定版本可重算
5 还原无审批 可逆变成默认能力 还原台账有审批人
6 只做整表判决 字段粒度失控 字段级拒绝生效
7 缺省放行 新资源默认可见 未列明即拒绝
8 证据事后补 检查前夜突击 四类证据随作业沉淀

挑第 3 条展开:副本落进业务目录是最隐蔽的一条。它不会立刻出事,但一旦出事就无法界定范围------没人知道这份副本存在,也就没人知道它被加密了。一份完整的静态脱敏系统防勒索方案会把副本目录、副本密钥域、还原点摘要三件事绑在一起管:目录归属明确、密钥域独立、摘要可复算。这样副本从"顺手复制出来的一份数据"变成"一个被登记的对象"。

挑第 7 条展开:缺省放行是静态脱敏系统访问控制方案里最贵的一个默认值。新上线的资源没进策略表,缺省放行意味着它对所有人可见;缺省拒绝则意味着最坏情况是"暂时读不到",而不是"永久泄露"。把默认值改过来只需要一行配置,但它决定了后面所有策略失效时的方向。

06 | 合规视角:静态脱敏系统解决方案要对上哪些要求

  • 个人信息保护法:处理个人信息遵循最小必要,去标识化是降低重标识风险的常用路径;对外提供或出境时,去标识化效果要可评估。
  • GB/T 37964 个人信息去标识化指南:给出原则、方法与效果评估框架,直接对齐即可,不必自创一套口径。
  • GB/T 22239-2019 网络安全等级保护基本要求:身份鉴别、访问控制、安全审计三组条款,分别对应静态脱敏系统访问控制方案里的判决、字段粒度与留痕。
  • 数据安全法:数据分类分级与重要数据保护,脱敏是常用落地手段之一。
  • 密评(GB/T 39786):数据完整性要求对重要数据做完整性保护,规则集与摘要签名正对应这条。

合规抽查通常发生在两个时刻:数据对外提供前,和事件复盘时。前者要的是"这批数据的字段口径与规则版本",后者要的是"谁能看、看了什么、副本在哪"。两类问题都能用签署清单与留痕回答,说明方案是真的落地了;答不上来,就只能临时补材料。把合规做成日常动作,检查前夜才不会变成突击战。

还有一层常被忽略:标准只规定"要去标识、要可评估、要有访问控制",不规定用哪种产品实现。所以合规材料里真正有说服力的,不是产品参数表,而是"这份清单谁签的、这条判决哪来的、这份副本归谁管"。把这三点写进制度,换任何工具都能复现同样结论。

07 | 落地答案:这套方案怎么被产品承接

把前面四条线落到工具上,安当的静态脱敏能力以"答案"的身份出现:按签署清单输出字段、把字段粒度交给判决、为每批出库签发独立批次密钥、让副本落进独立密钥域,并把规则版本、还原台账、还原点摘要沉淀为可复算证据。它承接最小必要与分类分级里可被逐项核对的部分,不替业务决定哪些字段该脱。静态脱敏系统防勒索方案要解决的副本归属问题,在这里落到密钥域边界上。

对多数机构来说,优先级不是"先把功能清单拉满",而是先把三处交界各自的责任人定下来,再用证据反推还有哪些场景没覆盖。边界一旦写进流程,新业务接入只是登记一条字段清单与一个密钥域,不必每次都重新设计。

需要提醒的是,方案的上限由治理决定,不由工具决定。同一套能力,在有人签署清单、有人复核还原的机构里能跑出可复算的结论;在没人认领边界的机构里,只会变成又一套没人维护的脚本。工具能做的是把边界变成可执行的判决与可核对的证据,把边界画在哪里,仍然是使用方的事。

08 | 验收清单与下一步

验收项 通过标准 怎么验
字段口径 有签署清单 查签署人与版本号
清单外字段 不出现在产物 抽产物比对清单
字段粒度判决 越权读取被拒 构造越权请求
缺省值 未列明即拒绝 请求未登记资源
确定性 同值同形 同值重算一致
可逆可控 授权侧可还原 持批次密钥还原
副本密钥域 生产域解不开 用生产密钥试解
还原点摘要 恢复前复算一致 重算摘要比对
变更留痕 历史批次可复算 按老版本重算

趋势上,脱敏正从"字段替换工具"走向"数据可见性的编排组件",评估重点也从"替了多少字段"转向"边界有没有人认领、证据能不能复算"。一套静态脱敏系统解决方案的成熟度,最终体现在它能否让不同部门在同一份清单、同一套判决、同一个密钥域上对话。落地时把这三件事当成流程而不是配置,后续的扩展才有基础。

从更长周期看,数据还会遇到新场景:新业务上线要登记字段清单,旧系统下线要归档密钥域,监管检查要调出任意一批的可复算证据。把这些动作写进数据治理手册,与清单、判决、密钥域并列,方案才算真正可运营。治理这件事没有终点,能做的是让每一次变更都留下可复算的痕迹,让下一个人接手时不必重新猜。

下一篇预告:防勒索系统在访问控制中的价值,为什么说破坏半径是可以算出来的(第 13 工作日 #2)。

09 | 常见问题:静态脱敏系统解决方案的 4 个高频疑问

  • Q: 静态脱敏系统解决方案与单纯买一套脱敏工具,如何区分?

    • A: 差别在边界归属。工具只解决"值变成什么",方案还要回答字段口径谁签、可见性谁判、副本落哪个密钥域、变更谁审。四件事各有责任人与证据,工具只是执行的一环。只买工具不定边界,三个月后一定会回到"谁能看原表"这个原始问题上。
  • Q: 脱敏之后还要不要做访问控制,两者会不会重复?

    • A: 不重复,两者解决不同问题。脱敏改变值,访问控制改变可见范围;只做脱敏等于把脱敏后的数据整表发出,只做访问控制等于有权限的人看到明文。字段粒度进判决、产物按清单输出,两者叠加才构成最小可见。
  • Q: 副本要不要单独做一套防勒索,具体需要什么?

    • A: 需要三件事:独立密钥域、副本目录归属、还原点摘要登记。副本用副本域密钥加密,生产域密钥解不开;目录有明确归属才会被备份策略覆盖;摘要登记后恢复前可复算。三件事到位,副本被遍历也只得到密文。
  • Q: 方案上线需要多久,怎么判断已经跑起来了?

    • A: 以一条出库链路为试点,通常两到三周能看到首份签署清单与首批证据。判断标准不是"工具装好了",而是能当场调出清单签名、批次规则版本、副本还原点摘要三份材料,并且越权读取能被稳定拒绝。

相关阅读

文章作者:安当加密-焱垚

相关推荐
安当加密-焱垚2 天前
数据脱敏防勒索系统
原理·数据脱敏·价格·数据脱敏防勒索系统·招标参数
安当加密-焱垚4 天前
轻量级证书签发系统如何集成
国密·轻量级证书签发系统如何集成·轻量级证书签发系统成本分析·轻量级证书签发系统技术趋势分析
安当加密-焱垚6 天前
统一身份认证系统常见问题解答
国密·统一身份认证系统常见问题解答·统一身份认证系统性能对比·统一身份认证系统技术趋势分析
Navicat中国8 天前
Navicat 数据脱敏打造安全可用的仿真数据环境
数据库·数据安全·navicat·数据脱敏·合规
安当加密-焱垚11 天前
静态脱敏系统身份认证方案
国密·静态脱敏系统身份认证方案·合规审计中如何应用静态脱敏系统·登录认证中如何应用静态脱敏系统·身份认证中如何应用静态脱敏系统
安当加密030111 天前
身份认证操作系统双因素认证
数据加密·数据脱敏·主机安全·操作系统双因素认证·身份认证操作系统双因素认证
安当加密03011 个月前
SCADA数据库加密与运维数据脱敏实战:从风电场安全加固到TDE透明加密
scada·数据脱敏·透明加密·数据库加密·风电场
安当加密03011 个月前
高端制造研发数据防泄密:设计图纸加密与试验数据脱敏实战
数据防泄密·制造业·数据脱敏·密钥管理·透明加密
安当加密03012 个月前
IEC62351与GB/Z 25320合规解读:电力通信安全与能源局工控安全如何满足
国密·工控安全·iec62351·gb/z 25320·电力通信安全