V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
ershierdu
V2EX  ›  全球工单系统

小米的“动态图片”功能似乎有隐患

  •  
  •   ershierdu · 2023-04-19 10:18:57 +08:00 · 4164 次点击
    这是一个创建于 585 天前的主题,其中的信息可能已经有所发展或是发生改变。
    拍摄一张动态图片(类似于 iOS 的 Livephoto ),在 QQ 发给别人(勾选原图),对方下载后在自己的 MIUI 系统相册里可以播放这个动态图片。个人认为这样的设计非常不合理,动态图片携带了拍摄前后的视频、音频,这些环境信息很可能包含用户隐私。

    讨论:
    1.猜测原因是小米把动态信息封装在 jpg 文件里了[1],qq 发原图时会把这些信息保留,所以接收后能正常识别。
    2.在微信上没有复现,猜测是微信修改了图片的 header 。但因为接收的图片大小和原图基本一致,我感觉动态图片的信息还在,也许别有用心的人是有办法恢复的?
    3.印象中苹果的 Livephoto 没有这个问题(没有专门测试过,记错的话请指正)。iOS 版的微博可以发 Livephoto ,但用户是明确知道自己发了 Livephoto 的,也可以针对单张照片关闭这个功能。像 MIUI+QQ 这种场景,用户没有任何感知,太危险了…


    [1]小米的动态照片怎么存到硬盘里才能保证下次导回手机依旧是动态照片? - 七色逆光的回答 - 知乎
    https://www.zhihu.com/question/460458171/answer/2158384000
    第 1 条附言  ·  2023-04-19 11:02:58 +08:00
    感谢 @yfugibr 说明,这个动态图片应该是通用的 MVIMG 格式,我用[1]这个转换器可以把小米拍的动态图片的视频解析出来。另外搜到了它的格式分析[2]。

    既然是通用格式,那就不算是小米的锅了。但考虑到绝大部分 app 都没有针对这个做优化,我还是建议手机厂商在系统级别给个开关,让用户可以选择默认抹去视频信息

    [1] https://ezgif.com/mvimg-to-video
    [2] https://medium.com/android-news/working-with-motion-photos-da0aa49b50c
    第 2 条附言  ·  2023-04-19 19:08:20 +08:00
    最终结论:
    1. 这个东西是符合标准的,在 Google Photo 的安卓 app 里可以编辑、选帧,所以不怪小米。主要原因是第三方 app 没有适配,没办法。
    2.分享的时候别勾选原图一般就没问题,或者参考 19 楼的方法。注意:我没有去分析过二进制文件,仅基于文件大小被压缩到 100-200kb 的事实猜测;而且不同 app 的压缩算法不一定相同。所以特别隐私的东西还是小心点。
    3.如果需要静态、清晰度不变的图片,可以用 Google photo 的“导出”功能,选择“导出为静态照片”即可。
    22 条回复    2023-04-19 18:56:59 +08:00
    yfugibr
        1
    yfugibr  
       2023-04-19 10:21:56 +08:00 via Android   ❤️ 8
    啊?我有点没看懂,这不是你自己拍的动态图片吗?自己发出去为什么要怪别人?

    “我拍了段视频发出去,别人居然能看到,这太不合理了,应该给我自动转成图片”?
    renmu
        2
    renmu  
       2023-04-19 10:23:06 +08:00 via Android
    没看懂,你正常发拍摄的照片就不会包含用户隐私了?不包含 gps 等信息了
    xloger
        3
    xloger  
       2023-04-19 10:27:57 +08:00
    没理解,你这操作相当于把你手机里的一个文件传输给别人,然后因为别人可以读取文件里的内容所以觉得有隐私泄露?

    你要说也是 QQ 的问题,它没有识别出动态图片的格式然后没对其做特殊操作和预览。然后如果微信没复现是微信的毛病吧。

    总而言之,我觉得按你的描述,问题最大的是微信,其次是 QQ ,最后才是小米。
    xloger
        4
    xloger  
       2023-04-19 10:34:29 +08:00
    突然想到个问题,我对于「动态图片」的格式不太了解。请问它跟视频有啥区别,有啥场景?(是更方便么?)

    然后如果这种动态图片是一种公开的协议,那我还是上述评价。如果是个小米自己定的协议,那它的问题就比较大了。但发送原图相当于文件传输我认为还是一个可以理解的操作。
    ershierdu
        5
    ershierdu  
    OP
       2023-04-19 10:35:26 +08:00
    @yfugibr
    1. 我觉得核心是用户感知的问题。以 iOS Livephoto+微博为例,我选择图片的时候明确知道这张是 live ,并且可以关闭。但在 MIUI+QQ 的场景中,没有任何一个地方指明我会把这个信息携带出去。考虑到 MIUI 也没办法在第三方软件中添加指示,我觉得 MIUI 把往外发的图片的动态信息去掉才是合理的。

    2. “我拍了段视频发出去,别人居然能看到”,问题是这个视频是通用的 jpg 格式,而除了 MIUI 之外的所有软件都把它当静态图片看…
    ershierdu
        6
    ershierdu  
    OP
       2023-04-19 10:39:53 +08:00
    @renmu
    1. 我觉得动态信息比 gps 之类的敏感得多。我经常拍完照片就把手机放下,所以动态图片的后端会拍到旁边的东西。此外,音频也会把别人正在说的话录下来。
    2. GPS 信息是 jpg 格式中相对通用的域,而小米这似乎是魔改了 jpg 格式(不太确定),其他软件都没有感知。而且很多软件已经做了分享时自动抹掉 GPS 信息的功能了。
    icyalala
        7
    icyalala  
       2023-04-19 10:43:23 +08:00
    iOS 动态图片实际上就是一张 jpg + 一个 mov ,没什么特殊的。
    楼主可以发个小米的实际样张大家分析一下。
    yfugibr
        8
    yfugibr  
       2023-04-19 10:48:44 +08:00
    @ershierdu #5 懂你意思了,那这个存粹就是 QQ 的问题(除非 MIUI 默认开启动态照片并且没有明确提示用户),QQ 没有对动态照片作相应的标识,也不支持预览,算是功能不完善。MIUI 没有义务,也不应该擅自把动态照片转换成普通照片(如果用户就是想发动态照片呢?)
    这个动态照片应该是 MVIMG 或者说 animated jpg ,格式方面具体我也不是很懂,但并不是 MIUI 私有的(至少谷歌相机和谷歌相册都是支持的)。
    ershierdu
        9
    ershierdu  
    OP
       2023-04-19 10:48:45 +08:00
    @xloger
    小米这个动态图片不是通用的,只有小米手机上能看。我不知道它是不是魔改了 jpg 格式,如果是的话,锅是在小米这边的…我觉得这更像是一个用户体验上的问题吧,而不是软件 bug ,但是隐患比较严重…

    动态图片就是你拍一张照片,它会把拍摄前、后的一小段时间录制下来。以苹果的 Livephoto 为例,有几个好处:
    1. 如果拍照时表情、姿势有问题,或者没对上焦,可以把照片调整为 live 里的其他帧,拍照容错率更高
    2. 以前在 v2 看过一句话,大意是:多年以后会看相册,发现图里的人能动起来,这种感受是很不一样的…
    520discuz
        10
    520discuz  
       2023-04-19 10:52:42 +08:00
    是的 很多不懂的人以为自己发的是静态图片 没想到这张静态图片还包含前后 1 秒左右的动态画面 的确容易暴露
    aLazarus
        11
    aLazarus  
       2023-04-19 10:57:56 +08:00
    动态图片可以保存拍照前的几秒钟视频,也就是如果你不小心在拍照前,手机取景框里出现了自己的隐私,那隐私也会被包含进动态照片了
    IvanLi127
        12
    IvanLi127  
       2023-04-19 11:00:01 +08:00
    好家伙。。我一直以为相册存的那个图片文件就是纯粹的图片,看来这功能得关了。。从来没想过发出去的居然是动态照片。
    whileFalse
        13
    whileFalse  
       2023-04-19 11:35:47 +08:00   ❤️ 3
    小米的手机怎么这样啊!小米 sb
    哦,原来是 google 弄出来的,那没事了
    azui999
        14
    azui999  
       2023-04-19 13:34:39 +08:00
    你这个问题,苹果能复现么?
    ershierdu
        15
    ershierdu  
    OP
       2023-04-19 14:26:43 +08:00
    @azui999
    试了一下,无法复现。我记得 Livephoto 是分成两个文件保存的,一个是.jpg (新系统是.heic )保存静态信息,一个.mov 保存动态信息。
    另外,如果从相册里直接分享图片,iOS 是有关闭 live 的开关的(主要针对 iMessage 这种原生支持 Livephoto 的 app 吧,大部分 app 本身就不会接收.mov 的部分)
    https://support.apple.com/en-us/HT207310
    azui999
        16
    azui999  
       2023-04-19 14:51:30 +08:00
    @ershierdu #15 哦哦,我想起来了,我 ios 用爱思导出的时候,我记得都给我导出成视频了,要不就是苹果专用格式,看来就是你说的分开的,所以社交媒体分享也不会有问题,既然谷歌改变了 jpg 图片的文件结构,那应该给小米提问题,让他加上标识,我记得苹果都是有标识的,这让我想起来,原来往那个图片里塞种子还是塞什么玩意来着,能正常看图片,然后用特殊手段从图片中分离出别的文件,那就看提了这个问题,小米给不给解决了,小米上新功能还是蛮积极的,估计后面安卓的都会上这个功能.
    chrosing
        17
    chrosing  
       2023-04-19 15:00:47 +08:00
    小红书上传的图片就可以播放图片已经 mov 的图片动态。我之前还纳闷怎么有苹果的动态图片
    pianjiao
        18
    pianjiao  
       2023-04-19 17:22:26 +08:00
    小米图片 发送隐私,发送的时候抹除图片相关信息 ,包括 地理位置 等
    pianjiao
        19
    pianjiao  
       2023-04-19 17:23:07 +08:00
    手机型号,拍摄参数。 设置路径 相册-设置-安全分享
    pianjiao
        20
    pianjiao  
       2023-04-19 17:23:55 +08:00
    还有 发送的时候 将 HEIF 图片转为 jpeg 图片发送
    pianjiao
        21
    pianjiao  
       2023-04-19 17:26:40 +08:00
    实测,接收方 的 动态效果被抹除了
    ershierdu
        22
    ershierdu  
    OP
       2023-04-19 18:56:59 +08:00
    @pianjiao
    感谢,这个方法确实可行,但似乎会对图片进行压缩,我尝试的图片这么操作后只剩不到 100k 了。
    其实在 qq 里不勾选“原图”的话也不会带有动态信息,应该是腾讯压缩时也把这些冗余的东西去掉了。我最初发现这个问题的场景就是朋友传照片给我,为了保证清晰度选了原图。


    @azui999
    这个问题很尴尬,小米是没有办法在第三方 app 选照片的界面里打标识的,但第三方 app 又都不适配这个东西。谷歌应该推出很久了,没多少人搞…目前看来,MIUI 仁至义尽了,顶多再加一个无压缩去除视频的功能。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2282 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:11 · PVG 00:11 · LAX 08:11 · JFK 11:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.