Skip to content
/ RoCC Public

The Prototype of RoCC, Robust Communication System via Cross-Model Information Retrival.

License

Notifications You must be signed in to change notification settings

fa1c4/RoCC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Prototype of RoCC

本仓库开源RoCC原型的主要组件代码,和论文测量指标时使用的实验数据和测试代码

测试环境为虚拟机Linux Ubuntu 16.04,Conda Python=3.7, 3.8

Provably Secure Steganography

Discop文件夹中给出可证明安全隐写组件的代码,实现时使用Cython.Build加速代码的执行效率。

setup: 在Discop目录下build

pip install -r requirements.txt
python src/setup.py build_ext --build-lib=src/

测试单次隐写执行

python run_single_example.py

生成式隐写算法Discop提供了三种隐写功能:图片、音频和文本

def test_stega_text(settings: Settings = text_default_settings):
    model = get_model(settings)
    tokenizer = get_tokenizer(settings)
	...

def test_staga_image(settings: Settings = image_default_settings):
    context_ratio = 0.5
    original_img = Image.open('small.png')
    ...
   
def test_stega_tts(settings: Settings = audio_default_settings):
    text = 'Taylor Alison Swift (born December 13, 1989) is an American singer-songwriter. '
    vocoder, tacotron, cmudict = get_tts_model(settings)
    ...

RoCC实验时调用文本隐写功能执行秘密消息的嵌入

python rocc_discop_text.py enc "This is a test example text" ./secretMsg
python rocc_discop_text.py dec "This is a test example text" ./coverText

Similarity Analysis

SimilarityAnalysis 文件夹给出文本相似度分析的测试代码,实验时需要提供data.json文件,文件中的数据格式如下

{
    "TextID":{
        "Text":"string",
        "Pub-Time":"time"
    },
}

其中,TextID用于标记地面真相,方便测试指标,但实际情况中不需要该字段;Text为文本数据;Pub-Time为公开数据库中的文本发布时间戳。

Steganalysis

隐写分析工具采用三种SOTA方案,均被包括在仓库中

模型训练微调和应用分析具体见TextSteganalysis下的readme.md文档。

Robustness Experiment

实验时,按不同网络丢包率0%、1%、2%、5%和10%设置传输通道,模拟音频数据损失。

需要使用tcnetem工具实现模拟丢包

# set the loss rate as 5%
sudo tc qdisc add dev eth0 root handle 1: netem loss 5%

# show success
sudo tc qdisc show dev eth0

# after experiment should reset tc rule
sudo tc qdisc del dev eth0 root

分别传输100条语音数据,及识别出对应的有损文本,构建数据集,输入到SA模块中进行相似度匹配实验。实验时使用的指标为 $$ Recall@K = \frac{Relevant Documents Retrieved in Top K}{Total Relevant Documents} $$ 利用文本数据集中的TextID构建true pairs,使用SA模块预测结果作为predicted pairs。实验时前K个返回结果中存在true pairs时视为正确匹配。

Channel Construction

信道A: 使用TVoIP建立VoIP信道

环境依赖安装

sudo apt-get install libasound2-dev alsa-base alsa-utils

第三方软件需要安装 gitNodeJSnode-gyp

加载ALSA loopback模块来路由音频流数据

sudo modprobe snd-aloop

查看loopback设备的卡号和设备号信息

aplay -l
arecord -l

在VoIP应用中设置ALSA loopback设备作为microphone的输入。假设将音频流路由到的设备为hw:Loopback,1,0,使用以下命令将音频文件输入loopback设备

aplay -D hw:Loopback,1,0 /path/to/audio/file.wav

信道B: 使用一个虚拟机存储网络文本,模拟公开文本平台,提供开放端口允许来自其他主机对文本库的访问。

实验时,使用本地共享存储的虚拟硬盘模拟云端的公开数据库,让通信双方的主机可以同步访问相同文本数据,文本数据使用纯文本文件json组织,可以按发布时间检索。

实际应用中,可以使用SQLite数据库保存实时更新的文本数据库,以及Flask作为Web框架来创建一个RESTful API来处理网络上对文本数据的请求。

About

The Prototype of RoCC, Robust Communication System via Cross-Model Information Retrival.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published