文档中心 > 基础技术

FAQ(问题与解答)

更新时间:2017/08/31 访问次数:34969

接入须知

1.1 加解密对计算的影响

用户秘钥命中缓存情况下:单台服务器加/解密单条数据耗时约0.03ms。
用户秘钥未命中缓存情况下:据耗时约1.5ms。 

 

1.2 加解密的字段有哪些?

初期主要针对订单数据中买家的昵称、姓名、电话、邮箱、身份证、车牌号、支付宝账号、用户id等进行加密。

 

1.3 用户具体要做哪些工作?

您需要确认Appkey等相关信息,
下载加、解密SDK、修改代码并验证兼容性,然后全量迁移数据库(所有明文数据进行加密)。
具体的验证场景请参考《数据加密接入指南》。

 

1.4 入驻御城河后还需要数据存储加密改造吗,二者有什么区别?

御城河实现了安全风险监测与主机端口管控,
数据存储加密实现了隐私数据密文存储和密文出参。
二者是不同的安全防护措施,但是两者都是必须整改的安全保护措施。

 

1.5 加密api和加密字段在哪些场景下是不加密的?

     1、不在指定白名单加密用户列表中。

     2、在指定黑名单加密用户列表中。

     3、千牛端发起的请求。

     4、TMC消息服务消息体。

     5、还未生成安全令牌码,就直接进入了 下一步。

 

1.6 控制台不显示数据加密菜单是否不需要加密整改 ?  

控制台没有加密菜单入口的应用,不在本期整改计划中。
但是您也可以提供详细的进度安排联系小二审核加入加密计划,
进入改造保护用户数据。

 

1.7 需要加密的API有哪些接口和字段,后续会增加新的API吗?

有涉及到买家隐私数据的接口都是需要整改加密,并且会不定期增加。
本期加密的API接口和隐私数据字段请参考:
//open.taobao.com/docs/doc.htm?spm=a219a.7629140.0.0.ZSfWff&treeId=1&articleId=106258&docType=1

 

1.8 支持加、解密的SDK有哪些?

目前只有.net,java,php SDK 支持加密/解密。

 

1.9 调用加解密是否有频次限制?双11的时候会不会出现调用瓶颈?

调用加、解密之前应该判断下sessionkey是否失效90天,如果失效90天,不应该发起调用。
加密解密函数的密钥有本地缓存策略,qps单线程可达到30000,双11缓存时间会跳转,对开发者透明。

 

1.10 获取秘钥接口和普通接口有什么不同,在IP白名单中可以调用吗? 

获取秘钥API与普通的API相同。
APPkey如果绑定了ip白名单就无法在名单外的机器上调用,
接口本身是不做控制的,跟调用其他api相同。
当前获取秘钥API不强制塔内调用,但是调用请求的URL请使用Https入口。
    正式环境: https://eco.taobao.com/router/rest
    沙箱环境: https://gw.api.tbsandbox.com/router/rest
 

 

1.11 数据存储加密会有压测吗? 压测的方法和普通的有什么区别?

如果是对接了全链路压测,实例化时需要多传一个参数

SecurityClient(DefaultTaobaoClient taobaoClient, String randomNum, boolean streetest)
最后一个参数传true,为压测数据。不传为非压测数据。如果是压测数据但是没有传递参数将解密不了压测提供的数据。

非全链路压测的保持不变。

 

方案确认

2.1 淘系账号和自建账号怎么区别?

自有账号:本地数据可能不是来自淘宝的,比如说是京东商家的订单,但想复用加、解密SDK。
可以将京东的账号注册到淘宝这边加密库,这样就可以复用淘宝的加、解密sdk 。
注:userid 是isv自己维护的,具体内容需要自己判断,这个userid在isv自己系统是能够识别的,不是淘宝用户,比如说京东用户id,这userId是完全开放的。


淘系账号:只要授权应用,获取到对应商家的session授权,就可以使用授权完成加解密操作。
加、解密是基于开放平台提供的sessionkey(token),sessionkey默认只能识别淘宝的账号。

如果存在 自建和淘系的业务共存,请选择较大的账号体系,选择后不会影响后台实际实现(自建和淘系可以共存)。
详情可参看://open.taobao.com/docs/doc.htm?treeId=1&articleId=106212&docType=1

 

2.2 SAAS部署和独立部署的区别是什么?

部署方式根据 服务用户的服务部署情况情况来确认。
SAAS部署: 指的是一个服务对应对多个用户(卖家)使用。
独立部署: 一个服务指针对一个用户(比如特大卖家)使用。
或者二者都有。

  

2.3 安全方案设计需要填写哪些数据? 

当前安全方案需要填写几个问题,问题审核的要求在规则表格的后方。 
填写要求:问题填写完整,方案能落地,小二会进行审核。
规则参考:
//open.taobao.com/docs/doc.htm?spm=a219a.7629140.0.0.YUo5rh&treeId=1&articleId=106210&docType=1#s2

 

2.4 密钥如何获取,是否要定期升级

密钥是加、解密数据的关键,密钥不会定期升级,但是如果密钥存在泄漏风险,需要您配合升级密钥。
密钥的获取可以通过SDK中获取密钥的API,传入session参数+appkey+appSecret+安全令牌码来获取。

 

2.5 数据加密后,有模糊搜索的需求怎么办?

我们提供了加密数据的模糊搜索功能,如果有此需求,需要您在sql查询语句中做适当的修改。
在加密对接流程中的《开发测试》模块选择姓名、电话、邮箱、手机号码确认密文检索后;
api调用在加密的场景下,采用的加密方式是根据页面配置动态生成的。
是否支持密文检索需要慎重考虑,后期如果做变更,就涉及到同样的数据,在数据库中存在多种加密方式,给程序带来复杂度。

 

2.6 SDK自研是否可行,需要遵守什么规范?    

自研SDK规范:
1. 加密算法要求:AES/CBC/PKCS5Padding,秘钥长度128位。
2. 获取密钥的缓存是否只应该放在内存中,在服务启动后从接口拉取。禁止存放在数据库、硬盘文件、OSS等持久化存储的地方。
3. 模糊查询部分功能,如不使用,可不实现。
4. 设置密钥的过期时间,过期重新拉取。秘钥的过期时间,在获取秘钥的接口会返回的,控制权在于top服务端。
秘钥获取接口 :taobao.top.secret.get
5. 请回传密钥的加密、解密调用次数。具体标准:加、解密调用函数每次调用,对应的计数器(各种类型计数器)会+1,5分钟左右同步一次。
异步线程会把计数器同步到top api接口: taobao.top.sdk.feedback.upload。
具体实现请参考 JAVA SDK。

 

2.7 PHPsdk在Windows下解包后发现有三个文件重复了,是什么原因?

由于Windows下不区分大小写,由于PHP将命名用大小写分类,导致显示为重复了。

可以将两个文件里面的数据合并一下,留下一个同名文件就可以。

 

2.8 数据存储加密每次都要加解密单独字段的话不是很消耗网络资源?

加解密的方案是集成在sdk本地中,SDK中集成了秘钥获取API 并且如果每次解密都发起一次api调用,
那么网络压力会比较大,我们的SDK会有一些优化、缓存的逻辑的。
如果没有特殊情况,请使用SDK完成加、解密!

 

2.9 数据存储加密中密文数据类型各是什么? 

目前加密和解密的方法,一次调用只能选择一种type.
带检索需求Type:常规的为search,手机号码为 phone。
不带检索需求的Type:常规的为simple类型,手机号码为phone.

比如一个订单它有:buyer_nick,receiver_mobile,receiver_phone,buyer_email ,buyer_alipay_no。
我有四个字段需要有检索需求的:

 

 

那么加解密的方法中的type因该入参:
3个检索字段的type必须为“search” ,
buyer_nick,receiver_name,buyer_email。

randomNum type为:“phone”


其他的都可以为“simple” 。
receiver_phone,buyer_alipay_no

手机号码字段不管是加检索功能 type都是“phone”。

注意:电话号码类型为simple,不是phone。

 

 

2.10 卖家更换名字后,秘钥会变化吗?

 秘钥是根据卖家用户的id+appkey生成的,因为用户ID是唯一的,不会根据修改名称后变更所以密匙不会变化。

 

2.11 没有在白名单中的用户能否获取秘钥?       

不行的,
秘钥获取有几个条件:
1,APP对接了数据存储加密。
2, 测试阶段在控制台--应用管理--安全菜单,店铺加密模块中店铺白名中配置的测试店铺。
3, 开启了全店铺加密,这个用户已经授权了这个对接加密的应用。
只有满足了上诉的条件才能正常获取,否则会抛出异常。

 

2.12 怎么判断数据是否是加密过的?  

是否密文判断需要使用SDK中实现的方法isEncryptData函数来判断是否加密。

 

2.13 入参需要改变为密文吗?

不需要 数据加密整改API只涉及到出参,不涉及API入参。

 

2.14 获取授权的时候授权json中 taobao_user_nick字段会加密吗? 

获取授权token是不加密的 ,数据加密只涉及到隐私API和隐私API的数据推送 。
隐私API及字段:
//open.taobao.com/docs/doc.htm?spm=a219a.7629140.0.0.m9TW4v&treeId=1&articleId=106258&docType=1#

 

2.15 订单打印日志(log)保存在本地的话,要加密吗?

需要加密存储。日志数据属于持久化存储,有涉及到用户隐私数据的需要加密存储,并且有定期清理机制。

 

2.16 根据订单里的信息拿出来的二次加工的数据。尤其是拿买家账号做主键的数据,需要加密吗?

二次加密的数据如果是用户隐私数据的还是需要加密存储的,同时也是支持 密文作为主键进行检索聚合。

 

2.17 能自己缓存密钥么?

自研发sdk的,需要使用平台提供的秘钥获取api进行获取,并且定期更新周期需要根据api中携带的过期时间进行。
使用官方sdk秘钥有效时间是由sdk来管理 对isv是透明的。

 

2.18 提交验收阶段主要是对哪些内容进行审核?

审核是应该审核的规范进行审核,请服务商按照规则填写。
规则参考:
//open.taobao.com/docs/doc.htm?spm=a219a.7629140.0.0.ljPz1f&treeId=1&articleId=106210&docType=1#s6

2.19 短信发送完后留下来的短信内容快照是不需要加密的?

涉及到用户敏感详细的都需要加密存储。

 

2.20 为什么不提供解密的API(云端加解密)啊?

云端加解密对网络消耗和数据传输时长会有影响,会导致服务不稳定。

 

2.21 用户自己输入到我们软件自定义打印的订单信息也需要进行存储加密吗?

淘系账号的数据都需要加密,非淘数据不强制加密。
淘系账号如有session的数据,就需要使用淘系账号体系实现加密存储。
淘系账号数据若没有session的数据,需要使用自建账号体系加密存储

 

2.22 订单手机号之类是不是可以明文放在内存中?

不强制内存中的数据需要密文缓存,但是需要有定期销毁机制。

 

2.23 我们数据库里已经有数据是加密的,里面也有敏感信息,那么是不是一定要改成你们的方式?

TOP通道出去的数据都是已密文的方式出参,需要你们复用平台的加密方式进行加密。

 

2.24 我们系统推送库(Sys_info)没有update权限,是不是不用加密了?

RDS订单推送库是需要加密的。由于用户没有变更推送库的权限,开启全店铺加密后(推送数据全部为密文),需要将历史明文数据迁移到业务库加密后,

将推送库中的数据使用(接口)删除。  确保推送库中的数据全部为密文状态。

 

2.24 加解密报错,Remote service error  主要有那些原因 ? 

Debug发现是加解密方法报这个错误,先查看一下:
1,是否发起调用的机器的IP 是在你们的应用IP白名单中。
2,全店铺加密开启前,请确认一下这个调用的店铺是否加入到 数据存储加密的流程 店铺白名单中。

 

沙箱测试

3.1 有没有测试环境给我们测试加解密代码?

有的,数据存储加密为了保证ISV能顺利的接入 提供了沙箱环境 与 正式环境。
沙箱环境是一个模拟正式环境的独立环境,里面的数据修改不会影响到正式环境的数据。
沙箱环境测试没有问题后可以切换到线上进行线上测试店铺开始测试。

 

3.2 沙箱环境下获取数据不是密文可能是什么原因导致的?

沙箱测试如果出现没有加密,请注意下面几个点,
1,确认是否是已经开启加密整改计划的app(是否有数据加密沙箱测试环境入口)。
2,确认是否已经配置在白名单中。(控制台--应用管理--沙箱环境测试--店铺加密;店铺白名单)
3,是否是加密的API与相关的字段。

参考文档:
//open.taobao.com/docs/doc.htm?spm=a219a.7629140.0.0.EPwmxE&treeId=1&articleId=106258&docType=1

 

3.3 沙箱测试店铺如何设置和查看?     

沙箱测试店铺配置于正式的流程相同。
控制台--应用管理--安全中心--沙箱存储加密 。
白名单中 添加你需要测试的沙箱店铺的名称。

沙箱环境测试账号参考:
http://www.tbsandbox.com/doc/?spm=a219a.7629140.0.0.XAcz8s

 

3.4 沙箱环境里加密检索字段是否能勾选,RDS实例需要填写吗?

沙箱环境没有RDS实例,不支持数据推送测试,可以不填写RDS实例进行字段长度修改。

 

3.5 沙箱环境怎么获取授权?  

沙箱环境授权与线上的环境授权不同,
下面是授权的操作方式:
 https://oauth.tbsandbox.com/authorize?response_type=token&client_id=自己的沙箱appkey

 将上面的appkey 替换为 你们的沙箱appkey,浏览器跳转后就能得到沙箱session。

 

3.6 沙箱环境怎么使用? 为什么看不到订单 ?

 1,使用沙箱前请安装沙箱插件(使用谷歌或者谷歌内核的浏览器下载URL中的插件:

//open.taobao.com/docs/doc.htm?spm=a219a.7629140.1.26.X5YinW&treeId=231&articleId=105496&docType=1

2,安装成功后 使用新沙箱进入订单查看,商品编辑等节目。

                      

3.7 沙箱账号 获取订单一直报错,没有R2字段权限  ?  

        沙箱账号请使用  已经有订单的账号 :user: sandbox_cilai_c   password:taobao1234 

         报错R2 security authorize invalid

         字段没有权限,原因是 沙箱的appkey 安全等级为0,并且使用了新安全等级导致的。

         可以到:控制台--应用管理 -- 应用设置 -- 沙箱环境管理 -- 将新安全等级  切换为 旧安全等级。

         

 

 

 

店铺加密

4.1 是否有接口可以获知,哪些店铺设置了加密?

没有这个接口,
但是可以在控制台--应用管理--数据加密流程中的《店铺加密》模块中查看,白名单中的用户是开启加密的。  

 

4.2 开启店铺加密是所有用户一起开还是可以先开放几个用户测试一下?

按店铺维度进行加密,所以可以先开几个用户的加密进行测试,在加密白名单处可以自行配置。
加密白名单请填写卖家Nick(非店铺名称)。
在开启全部店铺加密之前,最好能够填100个(自己控制)左右用户到加密列表中beta测试,避免测试不够完善导致全部开启后大批量用户不能使用


 

4.3 RDS修改字段长度有什么影响?RDS版本升级会不会停服务?

mysql5.5版本会有锁表现象,建议升级到5.6版本(可在控制台自助升级),版本升级对用户透明的。 只是最后切换的时候会闪断下。

RDS字段长度修改,首先会备份表数据,备份完毕后才会进行字段修改,修改完成后恢复表空间,所以修改时请确保空间充足。

rds只会修改  rds系统库中:交易表、退款表 的buyer_nick  字段  。新购买的rds不需要修改,如果rds buyer_nick字段长度已经是255,那说明字段长度是满足条件的,不需要修改

 

4.4 RDS字段长度修改有什么要注意的?

字段长度修改只会修改rds系统库中:交易表、退款表 的buyer_nick字段
新购买的rds不需要修改,如果rds buyer_nick字段长度已经是255,那说明字段长度是满足条件的,新购买的RDS不存在字段长度问题。
RDS推送库中,buyer_nick 字段是单独存储的,加密后会膨胀字段,
如果没有做长度修改会导致写入不了数据(与是否检索需求无关)。否则可能导致漏单
多个RDS实例可以使用英文的分号分隔(;)注意一个框中不要填写超过50个的实例id,超出的话分几条填写。
注意:
RDS字段长度改造mysql5.5版本会有锁表现象,建议升级到5.6版本(可在控制台自助升级)
版本升级对用户透明的,只是最后切换的时候会闪断下。
点击确认后需要等待RDS修改完毕才能继续操作加密模块 。
系统会自动根据你填写的时间在凌晨2~5点操作,如果不指定时间,那就是下一天2-5点会修改

 

4.5 字段长度修改支持的数据库类型有哪些?

暂时只支持聚石塔中的RDS类型(MySQL、SQLServer),
mongoDB、Elastic Search等其他的数据库类型请手动修改数据库字段的长度。

 

4.6 RDS字段长度有没有建议的一个值,只能通过公式吗?

用户业务库字段长度修改建议使用字段长度计算公式。
并且字段长度计算公式已经有预留长度,给的数据是最大值,不然可能导致有些数据存不下。
中文和英文加密长度也是不一样的,需要保留一定的长度空间 。
数据长度按照公式计算:
//open.taobao.com/docs/doc.htm?spm=a219a.7629140.0.0.0H5lpH&treeId=1&articleId=106213&docType=1

 

4.7 两个不同的店铺能否使用同一个秘钥?

平台的加密方式是一个用户授权+APPkey生成一个独立秘钥,不同的店铺无法使用同一个秘钥解密数据,
并且请注意生成数据的店铺授权是否和加解密中的授权相同。
分销接口除外,由于分销API供应商和分销商可以同时推送一个数据,会导致库中的数据不知道已那个为加密秘钥,
故分销的接口使用公钥加密方式。一个app一个秘钥。

详细文档查看:
Http://open.taobao.com/docs/doc.htm?spm=a219a.7629140.0.0.K7G26a&treeId=1&articleId=106545&docType=1

 

4.8 search和encrypt(密文检索和密文精确查询)有什么区别,能否只用一种?

密文检索与密文精确查询不同:
search方法是生成密文检索块,用于密文检索。
encrypt方法是生成完整的密文,用于精确查询。
如果没有在页面中勾选密文检索功能,就不具备使用search方法获取检索密文的功能。

 

4.9 没有检索需求,方案确认的地方还需要填写实例id吗?

需要,改造前请检查一下RDS实例的sys_info 推送库中的 Buyer_nick字段长度是否为 255 。  
如果不是最大长度,无论有没有检索需求,都需要填写,否则可能会因为加密后的昵称长度大于数据库长度而导致推单失败!

 

4.10 开启加密后有漏单现象

请确认推送/业务RDS的buyer_nick字段长度已经修改。

开启加密后明文加密为密文后字段长度会膨胀4倍以上,如果推送表中 buyer_nick字段长度不够,就会导致写入不了数据。

 

4.11 session到期后还能解密吗,用户主动取消授权呢?

调用加解密方法,用户的授权在有效期内乃至过期三个月内的session都是可以正常调用加解密方法的,加解密的授权不判断订购关系。

而且授权有效或者是过期3个月内的数据都能加、解密 。如果用户授权快结束时应该要引导用户续费。

 

4.12 用子账号的session可以解开主账号加密内容吗?

可以的,会判断子账号所属主账号,然后返回对应密钥。
秘钥是以appkey+主账号维度进行分配的。

 

4.13 数据迁移是否要终止服务

数据迁移过程中,数据库中可能存在明文、密文,老密钥和新密钥的加密数据。
考虑到这些因素只要做好代码的兼容性,例如sql value in(明文,密文),是不需要终止服务的。

 

4.14 密钥升级后还需要做那些工作?

密钥升级意味着之前的加密数据已经不再安全,所以需要对以前的加密数据进行迁移工作,用新的密钥重新加密。

 

4.15 对于过期超过90天的用户无法获取密钥,是否不需要加密继续保存原来明文即可?待用户续费后再加密?

根据用户授权协议,超过90天没有授权的数据理应是要清除的。在用户授权快要过期的时候,应该想办法引导用户重新授权。理论上这部分数据是属于用户的,而授权是有时限的。

  

4.16 调用加解密方法结束后为什么进程没有关闭?

       数据存储加密 代码完成后 后台还有其他的异步的线程在跑,所以看到的是在运行中。

 

4.17 批量加解密后的数据顺序能不能保证的?

批量加解密的逻辑是使用单个加解密方法遍历元素中的值完成的。
由于批量方法后台存储数据的数组类型为Hashmap,数据顺序是根据hash值排序,所以无法保证批量加解密后的顺序。
具体的实现可以查看SDK中的实现代码。

 

4.18 店铺加密填写RDS报错,RDS处于失效状态是什么原因?

如果在店铺加密阶段填写完RDS改造并提交后报错,RDS处于失效状态。
可能有以下几个原因导致:
1,是rds过期了
2,控制台关闭rds了
3,RDS实例故障
4,没有开启订单推送 或者 订单推送故障 

 

4.19 defaultTaobaoClient 使用的serverUrl必须是https协议,url具体是什么?

      这里指的 https  就是请求接口的入口地址:
      线上环境:指TOP 的 https://eco.taobao.com/router/rest

      沙箱环境:指TOP 的 https://gw.api.tbsandbox.com/router/rest

 

4.20 模糊搜索的具体解决办法? 能否在SQL脚本中直接使用?

      模糊查询方法,可以在SQL中直接使用 like 语句, 得到的结果需要进一步筛选,有一定的多余结果产生,需要在程序中筛掉。

      //需要模糊查询的片段

      String partial = "cdefg";

      //得到模糊查询密文

      String search = secretClient.search(partial);

      // 去数据库做模糊查询

      List<DO> objects =  SELECT * FROM table WHERE nick LIKE %#search#%

     // 筛选

     List<DO> result = new List<DO>();

     for(DO object : objects) {

     if (secretClient.decrypt(object.nick).contains(partial)){

    result.add(object);

  }

}

 
4.21 调用解密是不是必须使用单例模式?

     是的,调用解密必须使用单例模式,list解密方法内部的实现是轮询 单例默认,
     具体的实现可以查看一下SDK实现。

 

4.22 加解密接口只支持单个字段同时加解密吗,是否可以同时对昵称,手机号码加解密?

目前加密和解密的方法,一次调用只能选择一种type。
带检索需求Type:常规的为search,手机号码为phone。
不带检索需求的Type:常规的为simple类型,手机号码为phone。
注意:电话号码为simple。

 

4.23 加解密接口的签名方式 sign_method必须是hmac吗? 

SDK中默认使用的是Hmac的签名方式,如果是自写SDK,签名方式的选择有两种,Hmac和MD5,TOP网关都是支持的。
具体的实现签名方案请查看:
//open.taobao.com/docs/doc.htm?spm=a219a.7386781.3.7.YEbVg2&docType=1&articleId=101617&treeId=1

 

4.24 接口获取店铺昨天的订单是加密的但是塔内的昨天的订单没有加密?

加密的状态从配置上店铺白名单后5分钟内全部生效,生效后,TOPAPI获取的订单数据中的隐私数据都是密文(与订单的生成时间无关),
RDS推送为密文状态(历史订单有变更重新同步过来的数据也是密文),RDS历史库中的历史数据(明文数据)需要ISV使用加密方法做数据加密。

 

4.25 批量加密接口效率怎么样,源码里面没有并发处理呢?

      批量调用跟单个调用也差不多,批量接口也是循环处理单个调用。除非你要节省网络开销之类的需求,避免多次网络请求

 

4.26 如果我在白名单中配置了测试店铺,然后在黑名单中也配置了测试店铺,这样获取的数据是不是加密的?

       黑名单中的店铺默认不加密,黑名单优先级大于白名单,这样配置是不加密的。

 

4.27 秘钥获取接口正式环境的interval也是2小时么?正式环境也是2小时调用一次密匙接口么?

秘钥检查周期是由TOP后端动态调整的,客户端不需要关心具体时间。
秘钥一般不会变更,只有应用发生数据泄露等严重事件才会联系小二帮助升级秘钥,防止继续泄露,快速止血。

 

4.28 secret_version 会变吗,密钥会变吗?

      secret_version  只有在密钥升级的情况下才会变,升级哪些用户,哪些用户就会变,密钥是不会定期改变的。


4.29 RandomNumber 是什么,怎么获取?

randNum(安全令牌码)用来初始化加、解密对象的
SecurityClient secretClient = new SecurityClient (new DefaultTaobaoClient(serverUrl, appkey, appSecret),Random Number);
randomNum在my.open.taobao.com对应app证书那里拷贝或者在自动对接加密《店铺加密》模块中 。

 

4.30 为什么我的应用证书处没有Random Number

     randomNumber 只有对接加密的appkey并且开启生成了安全令牌码或者小二直接后台生成

 

4.31 一个密文怎么知道是密钥升级之前加密的还是升级之后加密的呢?

    加密API会自动用最新的密钥去加密,解密API会自动获取密钥版本

 

4.32 数据加密以后,是不是一定会包含~、$字符? 

密文中特殊字符是用来密文分隔 和 密文类型判断的。
每个加密字段都会有不同的加密分隔。具体的实现可以查看SDK中的代码实现。
非手机号码密文形式: ~密文~版本号~
手机号码密文形式:$前三位明文$密文$版本号$

 

4.33 能否传入一个实体Json格式,批量解密?或者有没有其它方式可以批量加解密.

     不支持json实体,但是支持批量加密解密支持输入列表,返回map。

      但是批量加解密的实现还是通过遍历调用单例的方法实现的。

 

4.34 加密后字段长度多少?

     根据您每个字段的使用加密方案,加密长度可能不同。

 

精确查询(场景1,2)

模糊查询(场景3)

nick/ receiver_name

varchar(32+字符长度*4)

varchar(32+字符长度*8)

其他场景

varchar(32+字符长度*4)

varchar(32+字符长度*8)

 

场景4

模糊查询(场景5)

phone

varchar(16+(号码长度-8)+(24))

varchar(20+(字符长度*4)

 

4.35 相关代码调用返回isv.permission-denied错误/错误码15

 

     a)后台没有对appkey 开启加密
     b) session没有指定,或指定错误(不在加密白名单中)

 

4.36 调用taobao.top.secret.get 出现错误码11 

     由于app配置了ip白名单 访问限制,需要添加IP白名单

 

4.37 调用taobao.top.secret.get接口,会报”27/invalid session”错误 

     该报错因session无效/过期90天,需要重新获取,或者引导用户完成授权

 

4.38 调用taobao.top.secret.get 出现错误码12(subuser_has-no-permission)

当前子账号没有appkey的使用权限  
建议使用主账号加、解密,或者主账号在子账号中心给子账号配置应用权限。

 

4.39 接口报错:com.taobao.api.ApiException: 15:Remote service error:20004:isv.permission-denied

      用户没有权限,(沙箱和线上的流程是一样的!,报错原因也是相同
      这个问题:测试阶段,没有将这个店铺配置到店铺白名单中(请在控制台的加密入口,将需要测试的店铺nick配置上白名单。);
      全店铺加密阶段,请确认这个店铺是否是授权的店铺。 

       

 

4.40 接口报错:15:Remote service error:20001:isv.version-error  这个报错是什么版本错误?

基本上只有2种情况,
一种是升级后的密文数据用老的安全令牌码请求是解不了的。
还有一种就是sessionkey传空或者调用不传sesisonkey的接口。 

 

4.41 接口报错:秘钥请求接口 connect  timed  out  连接超时  ?

如果出现这个报错一般有两个情况:
一种是 使用了错误的入口地址,秘钥请求需要https开头的入口地址才能正确连接。
第二种,如果已经使用了https入口,是网络波动导致,这个请联系一下小二 进行排查。

 

4.42 SDK调用加解密的时候报错:15:Remote service error:20002:isv.parameter-required,是什么原因?

这个接口报错是没有入参安全码进行实例化导致的,自写的SDK请检查代码中是否忘记增加该字段。
使用平台的SDK的一般不会有这个报错信息。

 

4.43 SDK调用报错only support https call,是入口地址只能使用https吗? 

因为秘钥获取接口需要使用Https入口,SDK中集成了这个接口,所以使用SDK或者接口调用都需要使用HTTPS入口的。
正式环境:https://eco.taobao.com/router/rest
沙箱环境:https://gw.api.tbsandbox.com/router/rest 

 

4.44 调用电话模糊查询的search方法报错‘PhoneNumber error’?

模糊查询中 Phone类型数据只支持后4位加密检索,出现这个报错的原因为检索的条件不正确,
请检查一下 查询时使用的检索条件。

 

4.45 订单加解密阶段开启店铺加密后程序出现问题,能否先关闭加密?

订单加解密如果出现重大问题,请尽快联系小二,先帮助关闭加密开关找到程序问题后重新开启。
期间如果订单密文数据较多,需要发货有堆积,平台可以帮助重新推送订单数据,帮助缓解当前压力。 

 

4.46 调用taobao.top.secret.get 出现错误码11,ip limit报错

报错原因是由于app配置了ip白名单 访问限制,需要添加为IP白名单机器。
在控制台--应用管理--安全中心--IP白名单设置,检查添加本机IP地址。
注意:如果只是在测试加解密流程,建议使用沙箱环境完成。

 

4.47 调用加解密方法接口报错 isv.permission-api-package-limit 是什么原因?

报错原因是没有这个API的调用权限,请在控制台--应用管理--流量证书下方 查看一下 时候有 系统工具  这个场景,查看是否已经获取。
如果没有,请联系一下小二,帮助查看

 

4.48 接口报错:isv.randomNum-not-exist是什么原因?  

报这个错误一般为是安全码入参错误,比如正式环境入参了沙箱的安全码。
检查环境代码入参中的appkey secert randomNum 几个元素。

 

4.49 批量判断密文接口否数组中有一个不是密文就会返回false?

批量判断是否密文方法,逻辑的实现就轮询调用单个字段判断方法,
如果其中有一个是非密文,就会返回false。
建议使用 isPartEncryptData方法,其中有如果list中有明文返回true,
具体实现可以参考SDK中的实现方式。

 

4.50 为什么手机号码不满足11位,拿到的数据是明文的?   

手机号码类型字段 低于11位为非手机号,phone type 不会加密。

 

4.51 加解密方法响应时间过长是什么原因,每次都这样吗?

加解密方法需要获取秘钥进行,秘钥优先从缓存中查找。
如果是第一次调用方法,需要先获取到秘钥并存储到缓存中。
由于请求秘钥是网络行为与当前的网络状态有关,秘钥缓存后就不会存在时间过长的情况。

 

4.52 sql层面不允许解密,如果要精确查询加密字段怎么办?

精确查询可以先通过SDK的加密方法把需要查询的明文信息加密成密文后,通过SQL语句查询。

 

4.53 开启全店铺加密需要注意什么?

全店铺加密开启后APP下所有授权用户的隐私出参全部为密文。            
所以开启全店铺加密之前,请先确认几个点:
1,是否测试店铺加解密都没有问题。
2,是否在程序中做了明密文兼容。
注意:开启全店铺后,这个app下有授权的店铺将全部开启密文推送。

 

4.54 开启全店铺加密后黑名单还能用吗?       

如果所有试点的店铺加密都没有问题时,就需启动所有店铺的数据加密(即:覆盖到全量的用户(卖家)),
同时意味着之前的白、黑名单都将失效。

 

4.55 怎么解决明密文共用的问题呢?

程序层:
明密文同时存在时,使用方法 isPartEncryptData 判断是否密文,如果不是密文可以不做解密直接使用。
加密方法与解密相同。(批量判断是否密文时建议使用 isPartEncryptData  方法:list中如果有明文,结果过返回true)。
SQL层:
由于明密文同时存在,无法确认在库中的是明文还是密文,所以需要sql查询时同时入参(明文,加密需要查询的密文),例如sql value in(明文,密文).

 

4.56 自建账号增加用户时(taobao.top.secret.register)报错:isv.register-account-full 上限是多少呢?

isv.register-account-full 这个报错是增加自建用户上限报错,平台当前默认的非淘账号上限为10000个,
如果是遇到这个情况,请确认一下是否账号超出范围。并且联系支持小二帮助处理。

 

4.57 为什么我的sessionkey 刚过期,调用加密的时候就报无效的session?

频繁Session无效报错,请注意Session是否 7开头,因为7开头的sessionkey重新授权后,之前的sessionkey会立即失效(90天内也不行)。
重新授权后,请直接使用新的授权session完成加解密操作

 

4.58 为什么我解密后的数据 带有 *** 号的,比如手机号码 123***1234,是什么原因?

解密后带有 **号,说明出参本身是模糊化的,模糊化的有两个情况。1,聚石塔外发起的API调用。2,应用本身没有R2字段。

加解密不会变化原本的密文结构。

 

4.59 添加白名单的时候 报错: 无效的用户 , 是什么原因 ?

如果报错 无效的用户,原因是在当前环境,没有办法解析到这个用户的信息。

一般有三个情况。

1,沙箱环境,输入了线上店铺的Nick 

2,线上环境,输入了沙箱的Nick

3,线上或沙箱环境,输入了非正常Nick(乱填)

 

4.60 系统推送库的数据不需要了不加密的话,可以直接删除吗?  有方法可以删除吗?

系统推送库中的数据如果需要保留,可以将推送库中的数据 迁移到业务库,在使用加密的方法加密后存储。

在使用推送库删除接口  删除明文数据: //open.taobao.com/docs/api.htm?spm=a219a.7629065.0.0.fWzgQw&apiId=22128

如果确认不需要使用的系统推送库中的明文数据,可以直接通过上面的接口删除。

 

4.61 为什么我白名单中的店铺都已经配置了好久了,还是没有加密?

1,安全令牌码(random ) 没有生成。

2,黑名单中配置了这个店铺(黑名单不加密,黑名单优先级高于白名单)。

 

4.62 RDS字段长度修改的计划时间填写错了,能不能修改?怎么处理?

RDS字段长度修改时间是你填写计划时间的凌晨 2 - 5点。

一旦提交后将不能修改!!!

如果确认手动填写错误,请联系一下小二,帮忙清理任务后,在手动提交。

小二处理完成会和你同步,同步后,请使用谷歌的浏览器(F12 开发者模式)

找到对应的元素节点,删除后,在重新新建计划,在提交。

 

 

4.62 为什么填写好了RDS修改时间,还是没有修改成功?

      修改不成功  一般为三个原因:

      1,填写的修改时间太迟(在你填写的时间的凌晨2-5点才会修改。)

      2,版本太低,如果是MySQL5.5的  需要先升级为MySQL5.6  。

      3,RDS的空间太低,没有办法满足备份一次 sys_info 表的空间。

 

4.63 java.lang.NoSuchMethodError  是什么原因?

这个报错一般有两个原因:

 1,工程中使用的是老的SDK,找不到对应的方法。

 2,工程共共存了新老SDK,工程默认获取了老的sdk中的方法。

解决办法:

升级sdk,导入工程,删除老的sdk。

 

4.64 Given final block not properly padded 是什么原因?

这个报错主要原因是:

下载订单或者订单推送的sessionkey(店铺)与 解密使用的sessionkey(店铺),不是同一个。

解决办法:

请检查一下Sessionkey,确保下载和解密的是同一个店铺的session 

 

4.65 使用Https 入口地址的时候报错,javax.net.ssl.SSLKeyException,是什么原因?

     1,普通环境:在实例化代码前加上WebUtils.setIgnoreSSLCheck(true);方法。

     

    2,WebLogIC容器:需要在启动中加上配置,-DUseSunHttpHandler=true 

        

 

4.66 PHP语言调用加解密方法报错: yac is not  enable , get Chcheyac is not enable 

主要原因为 PHP环境未安装缓存组件,

代码默认为YAC缓存,如果有些容器没有办法兼容yac的 可以使用  比如:mamcache   

 

4.67 供销场景 - 白名单中添加了分销商,为什么很久了 rds推送过来的还是明文?  

 

因为分销的订单  是分销商 和 供应商 都能拿到也都能推送的,

如果 两个同时授权到了一个rds中,但是供应商如果不加密,不加密订单如果是后面推送 就覆盖了 原来分销商推送的 加密的订单。

解决这个问题: 同时添加 供应商和分销商,进行测试。

 

 

数据迁移

5.1 数据存储加密 数据迁移时是否要终止服务进行迁移?

数据迁移过程中,数据库中可能存在明文、密文,老密钥和新密钥的加密数据。
考虑到这些因素只要做好代码的兼容性,例如sql value in(明文,密文),做好明密文兼容,代码设计符合加解密规范,是不需要终止服务的。

  

5.2 数据迁移业务库需要加密吗?

数据迁移的任务是将所有涉及到用户的隐私的持久化数据全部使用平台的加密方案加密完毕,
包括但不仅限于RDS数据库,业务库,用户的RDS等都需要加密为密文存储,使用的时候才通过解密展示使用。

 

 

验收上线

6.1 验收上线需要达成那些条件?

验收上线需要注意:
1.请确认该应用在各个阶段里的工作是否都已完成;
2.提交验收申请,等待相关小二的审核和反馈;
3.平台小二会进行审核和确认,包括所有ISV提交的所有材料和项目执行情况

 

 

 

 

 

 

安全的方案设计与材料报备

安全方案设计需要按照表格中的内容提交相关的证明与附件,小二会进行验收确认,请认真填写,谢谢!

安全问卷 是否需要提供附件 附件内容要求

1、该应用针对消费者隐私数据的加密和

解密是否仅使用官方的SDK进行密钥获取?

必须提供附件

提供该APP应用的架构图和对敏感数据处理的数据流程图及加解密处理的相关说明(能清楚地知道解密、加密、密钥获取等是在哪个环节、如何来完成的),至少应包括如下的数据处理过程:

  1. 从TOP获取密文后的处理过程;
  2. 数据从聚石塔内的系统库到业务库的处理和存储的处理过程;
  3. 在聚石塔内服务端的用户数据请求的数据处理过程;
  4. 本APP应用在用户端(商家端)的数据处理过程。
2、该应用是否有使用自定义的密钥缓存?

按需提供附件。

(当ISV使用其自定义的密钥缓存机制时,需提供相关附件)
提供该APP应用的自定义密钥缓存机制流程图,应明确地说明本应用对获取的密钥是怎么存储、怎么使用以及如何销毁的处理过程。

3、该应用中的全量历史数据是否都已经加密?

必须提供附件 只要涉及敏感数据存储的RDS库(包括系统库、业务库或搜索库等),需ISV提供截止到当前为止,该应用所有相关的RDS实例清单

4、该应用是否会在其产品的客户端进行大量订单数据的缓存?

 

按需提供附件。

(ISV APP会将订单相关敏感信息存储到其客户端的磁盘上)

如ISV APP涉及将订单相关敏感信息存储到其客户端的磁盘上时,ISV就应提供如下信息:

  1. 提供该APP应用在客户端给其用户提供的数据处理过程说明;
  2. 明确说明该APP应用在客户端的数据存储是否为明文,存储周期的时长和数据存储的删除策略。

5、该应用是否存在与第三方的数据接口?如果涉及消费者隐私数据的对外输出,是否会进行加密?

 

按需提供附件。

(ISV APP涉及消费者隐私数据的对外输出)

ISV APP涉及消费者隐私数据的对外输出时,ISV就应提供如下信息:

  1. 提供所有与第三方的数据接口信息,包括但不限于:第三方的组织名称、第三方的服务器IP、数据用途、以及涉及的敏感数据字段列表。

6、该应用的后台管理(服务商后台)是否可以看到明文的消费者隐私数据?

 

必须提供附件

ISV应提供如下信息:

  1. 提供该应用的后台管理的主界面和其主要功能等相关的截图;
  2. 如果该应用后台管理涉及明文的消费者隐私数据查询功能,请提供该查询功能的截图和说明其内部的谁、在什么情况下、可以使用这个功能。
  3. 如果没有服务商后台,请写明内部的谁、可以操作ECS和RDS 提供旺旺:姓名:手机号码。

7、该应用的后台管理操作是否会进行日志打点?

 

必须提供附件

ISV应提供如下信息:

APP应用的后台管理操作的日志规范说明和日志样本(至少要包括对后台人员的账号登录类日志和操作访问类日志的详细说明(日志的内容应包括:时间、用户ID、应用名、源IP、访问的资源名、访问的方式(如:登录、资源的增删改查等)、访问的结果(登陆或操作的成功或失败))

  1. 如果没有服务商后台,请写明内部的谁、可以操作ECS和RDS 提供旺旺:姓名:手机号码。

8、该应用的开发计划、人员分工和计划发布时间

必须提供附件

按照平台的规则和要求,整体方案完善并且各个阶段的完成时间在平台要求时间内,并且方案可落地。

具体的方案模板请下载平台提供的模板填写:

http://118.178.98.123:30001

 

  

 

  您可到 支持中心 提交新的问题

 

FAQ

加解密 相关疑问

返回
顶部