首先,我们假设word2vec模型将为任何给定的参数集提供确定性的结果,即,如果使用相同的参数运行两次或两次以上,您将始终获得相同的结果。
训练模型后,假设Alice建立了一个列表,该列表根据每个向量与选定向量A的接近程度对它们进行排序。每个向量将代表一个半字节,因此您将其索引除以16,然后取余数。因此,与向量A的第300个最相似的项将在base-10编码300 mod 16 = 12或在base-2编码1100。
假设爱丽丝想向鲍勃发送一个比特币私钥(这是一个完全随机的数字),它的长度为256位或64个半字节。因此,爱丽丝可以通过发送鲍勃64向量来隐藏此密钥。如果这些向量代表推荐系统中的歌曲,那么Alice将向Bob发送包含64首相似歌曲的播放列表。
实际上,爱丽丝可以将自己限制在列表的一部分(例如前64个项目),并在列表中第64位之后的某个位置随机地将歌曲随机引入到她的消息中作为噪音。如果鲍勃也知道这一点就可以了。
如果Bob具有向量A的值,语料库和用于训练模型的参数,那么他可以重建模型并将歌曲映射到向量,将向量映射到索引,然后将索引映射到字节。 / p>
我可能是错的,但我认为这是好的隐写术的原因是,它以指数方式提高了隐写分析所需的计算机资源的门槛。如果不反复使用不同的参数来训练模型,就无法破解消息,如果爱丽丝选择了需要花费几天时间来训练的模型和语料库,那么窃听者将不得不花费数年甚至数十年的时间来试图破解她的消息。
因此,我的问题是:是否存在一种简单,直接的方法来以此方式破解在word2vec模型顶部构建的隐身系统?我的思维方式是否存在根本性缺陷?