Open bronzeMe opened 4 months ago
感谢提问。数据量较大,我这边会跟进看一下这个组件的优化方式。
另外,最近测试发现,两个相同的文件比如a.csv是2kw个手机号MD5,测试PSI组件的时候,输入1和输入2都是a.csv,预期结果应该也是2kw个手机号,但是测试发现,求交后结果会有重复的,大概会有1-2w个重复的手机号,也就是求交好的结果是2.2kw个手机号
另外,最近测试发现,两个相同的文件比如a.csv是2kw个手机号MD5,测试PSI组件的时候,输入1和输入2都是a.csv,预期结果应该也是2kw个手机号,但是测试发现,求交后结果会有重复的,大概会有1-2w个重复的手机号,也就是求交好的结果是2.2kw个手机号
用你提供的脚本产生的手机号可能本身就是有重复,pandas求交就是求笛卡尔积。假设有n个重复的id_1,那么结果中就会出现n*n个id_1
@zhongtianq 顺便请教一个问题,对于teeapps组件中的output_path = task_config.outputs[0].data_path,这个task_config.outputs[0].data_path是occlum视角下的内部路径么?还是host视角下的路径呢 有这样的一个场景:比如先生成了一个零时文件tmp.csv,可否直接创建一个软连接指向这个task_config.outputs[0].data_path,而不是拷贝tmp.csv到task_config.outputs[0].data_path,因为tmp.csv可能会比较大
@zhongtianq 顺便请教一个问题,对于teeapps组件中的output_path = task_config.outputs[0].data_path,这个task_config.outputs[0].data_path是occlum视角下的内部路径么?还是host视角下的路径呢 有这样的一个场景:比如先生成了一个零时文件tmp.csv,可否直接创建一个软连接指向这个task_config.outputs[0].data_path,而不是拷贝tmp.csv到task_config.outputs[0].data_path,因为tmp.csv可能会比较大
没太明白你的问题,组件中生成的结果数据就是直接输出到指定的路径task_config.outputs[0].data_path,临时文件如果是在运行组件中有自定义逻辑生成,那这个软连接也应该在组件中自行链接。组件输出只会去查找task_config.outputs[0].data_path这个指定的路径。
现在就是在自定义写组件的。 对于SPARK场景,SPARK的输出给它指定了一个outputpath,它会默认把这个outputpatch当作一个目录,然后把结果保存到这个路径下命名是动态的'part-xxxx.csv“,所以不能直接把task_config.outputs[0].data_path作为spark的输出结果, 就会有2种思路: 1.创建part-xxxx.csv到task_config.outputs[0].data_path的软连接,省去拷贝开销,这个就是上述的问题,
我理解这个copy或者link的操作在组件中实现就可以了。 然后路径问题如果是在occclum环境中运行,通常配置/host开头,这样在occlum instance目录下可以看到输出,否则就在occlum内部文件系统中了
测试版本:0.2.0b2 (sim模式) 测试过程
启动CM
准备测试数据并加密
生成符合中国大陆手机号风格的随机号码
def generate_random_cnmobile(): prefixes = ['13', '14', '15', '17', '18'] prefix = random.choice(prefixes) suffix = ''.join([str(random.randint(0, 9)) for in range(9)])
print(prefix + suffix)
计算字符串的MD5值
def calculate_md5(s): m = hashlib.md5() m.update(s.encode('utf-8')) return m.hexdigest()
生成伪造的CSV文件
def create_fake_csv(fake_csv, num_rows=100):
创建一个空的DataFrame
使用示例
fake_csv_path = 'fake_mobile_md5_100million.csv' # 替换为你想要保存的伪造CSV文件路径 create_fake_csv(fake_csv_path, 100000000) # 生成包含1亿条记录的CSV文件
加密数据
上传密钥&上传策略
启动teeapps
docker cp csvdata/fake_mobile_md5_100million.enc.csv teeapps-sim-020b0-test-0509:/host/testdata/breast_cancer docker cp psi_md5_sim.json teeapps-sim-020b0-test-0509:/host/integration_test/ docker cp carol.key teeapps-sim-020b0-test-0509:/host/integration_test/ docker cp carol.crt teeapps-sim-020b0-test-0509:/host/integration_test/
python convert.py --cert_path carol.crt --prikey_path carol.key --task_config_path psi_md5_sim.json --scope vfehnykt --capsule_manager_endpoint 11.163.85.163:9596 --tee_task_config_path psi_md5_task.json cd /home/teeapp/sim/teeapps ./main --plat=sim --enable_console_logger=true --enable_capsule_tls=false --entry_task_config_path=/host/integration_test/psi_md5_task.json
teeapps (sim)运行日志