Signalのセキュアバックアップ!機種変更時のメッセージ履歴消失問題に終止符か
引用元:https://news.ycombinator.com/item?id=45170515
AndroidからiOSに機種変したとき、Signal、WhatsApp、ThreemaみたいにE2EE使ってるメッセンジャーアプリの履歴が全部消えちゃったんだ。Telegramだけは暗号化されてないから「ただ動いた」けどね。WhatsAppにはiPhone設定時にやる移行アプリがあったけど、バグで失敗したし、SignalのバックアップもOSバージョン間で互換性がないみたいだった。これ、ずっと欲しかった機能なんだよな!
AndroidからAndroidへの履歴移行はいつもできてたよ。iOSに機種変したときは、妻がMessagesを使い始めることになったから、履歴は移行しなかったんだ。俺は妻とSignalで画質を落とさずに画像をやり取りするためだけにSignalを使っていたからね。
Signalは画像に非可逆圧縮をかけるんだよ。「Standard」から「High」に設定で変更はできるけど、無効にはできないんだ。
すでにデスクトップ版をセットアップしていれば、メッセージ履歴は移行できるよ。ただし、45日より古いメディアはダメだけどね。暗号化バックアップがどこでも使えるようになるまでの一時しのぎにはなるかもな。
他のデバイス間ではいくらでもデータ移動できるのに、この奇妙でひどい恣意的な制限は何なんだよ。Signalの最悪な部分だよな。
その上、Androidにはこの制限がないんだぜ。まるで企業ITでファイル制限があるのに、みんな個人用のOneDriveにファイルをアップロードできるような感じだよ。
Windowsクライアントだとエラーで動かないんだ。AndroidとLinuxは問題ないんだけどね。
俺の場合は動くよ。なんで君のところでエラーになるのかは知らないけどね。
WhatsAppの移行アプリはバグでダメだったって?あんな大企業のQAがこれほどひどいのは驚きだよ。Androidデバイス間の移行ツールも、俺が2年前に試したときは動かなかったんだ。
Signalって、もう別のデバイスにメッセージを転送する機能あるよね?
Android同士なら隣同士の端末間で数年前からできたよ。でもAndroidからiOSへの転送はまだ無理だと思うな。
iOS同士はいけるし、Android同士もいけるよ。でもiOSとAndroid間はダメ。あと、盗まれたスマホから新しいスマホへの移行もできないよ。
盗まれたスマホから新しいスマホへ移行できないって話、気になるな~。持ち主が気付く前に、実際に“盗んだ人”が試したことあるのかな?
あー、俺はスマホがもう手元にない状態でSignalの履歴を見たいケースを考えてたんだよ。でも、そう読むこともできるね。
それには、まずスマホのロックを解除できて、SignalのPINコードも知らないと無理だよ。
これ最高じゃん!テストリストアを簡単にさせてほしいな。メイン端末をいじらずに、秘密鍵で新しい端末にリストアしたいんだ。PC版Signalじゃメッセージ履歴は見れないけど、今回のバックアップでPCでも全部見れるようになる?大画面で見るのはすごく便利なんだよ。
やあ、Signalの開発者だよ。ある程度はできるよ!新しい端末にリストアすると古い端末は登録解除されるけど、データはそのまま残るんだ。だから新しい端末で何か変なことがあっても、古い端末で再登録すれば元に戻れるよ。実はこれ、僕たちが自分たちのデータで機能をテストするやり方の一つでもあるんだ。
Signal大好き!ありがとう!バックアップのテストって、実際にリストアしようとする時とは別に重要だよね。必要な時にバックアップが壊れてたって分かったら最悪だよ。Mike Nahas氏の「Tao of Backups」っていうのを強くおすすめするよ。
http://taobackup.com/
これに関連した質問なんだけどさ、Androidに機種変更した時に移せなかった古いSignalメッセージが全部残ってるiPhoneがあるんだ。この新しいツールを使って、iPhoneの古い会話を、今Androidにある新しいメッセージを消さずにAndroidに移動させる方法ってあるのかな?つまり、2つの履歴をマージしたいんだけど。
iOS版がリリースされたら、新バックアップ機能を使うにはまず古いiPhoneのデータをAndroidデバイスに転送する必要があるみたいだよ(予備のAndroidでも、今のAndroidにバックアップを取ってからでもOK)。詳しくはこのURLを見てね。https://news.ycombinator.com/item?id=45174779
残念ながらすぐに履歴をマージする予定はないんだって。他の人も言ってるけど、サードパーティ製ツールでマージできるかもしれないけど、それはすごく“at your own risk”って感じだよ。
マルチデバイス対応は良い機能だね。質問だけど、今日Androidで取ったバックアップは、iOS版がリリースされたらiOSに復元できるのかな?
このURLを見てね。https://news.ycombinator.com/item?id=45171576
困ったな。iPhoneを再インストールしたいんだけど(機種変更じゃなくて)、チャットを保存する方法が見つからないんだ。MacのSignal Desktopアプリはチャットが表示されるけど、写真が全部なくて“ダウンロード失敗”になるし、Desktopから消去したiPhoneにインポートできるかも分からないんだよね…。
数ヶ月前から、Desktopアプリをセットアップするときに、メッセージ履歴をコピーするオプションが実際に使えるようになったよ。
情報ありがとう!この一年、DebianベースじゃなくてArchベースのディストロ(UbuntuからManjaro)に移行したから、Desktop版のSignalからは遠ざかってたんだ。これを機にまた使うことを考え直すかも。(うーん。)
Signal開発者さんへ。バックアップの選択肢が“locally”(柔軟だけど一部のユースケースだけ)か“to Signal’s special servers”(柔軟性なし、多くのユーザーには法的に不可能かも)の2つしかないのはなぜ? Signalのユーザーは、すでに信頼しているバックアッププロバイダーを使いたいと思ってるはずだよ。iCloudやGoogle Driveみたいなサードパーティプロバイダーにも対応して、データはSignal側で完全に暗号化するべきだよ。Signalのサーバーにバックアップするよりも、他のプロバイダーに預ける方が、データへのアクセスを心配する必要が減って安心できるはずだから。
ひょっとしたら対応するんじゃないかな?> 将来の計画には、選んだ場所にセキュアなバックアップアーカイブを保存できるようにすることが含まれています。
バックアップオプションは何年も前からなくて困ってたんだ。この件に関する将来の計画は、永遠にかかるみたいだね。
昔作ったセキュアなジャーナルアプリでもバックアップが一番脆弱だと感じた。Signalのバックアップ遅延は、技術と思想の両面での懸念があったんだろうな。俺も同じ経験したよ。
もっとコメントを表示(1)
データはどんな方法で暗号化してたの?それがバックアップには向かなかったのはどうして?
SQLcipherを使ったけど、アプリ起動時に毎回パスワードを求めると、みんな短いのを設定しちゃうから、特にAndroidではハッキングされやすくなるんだ。今はPINとPasskeyの組み合わせも考えられるけど、紛失時の復旧とか、俺が保管しない方法を考えると、すごく複雑になるね。
俺は何年もSDカードにバックアップしてるよ。デバイス外へ転送するスクリプトは設定してないけどね。
それ、Androidでしか使えないでしょ。スマホ内へのバックアップみたいな基本的な機能ですら、今までずっと無かったんだよ。
混乱してるんだけど、Signalがファイルとしてスマホにバックアップするなら、既存のバックアップサービスでそれを自動同期すればいいんじゃない?毎日自動で同期できないの?
Androidの既存バックアップは増分じゃなくて、俺のバックアップは850MBもあるんだ。毎日アップロードするのは面倒だし、主要なクラウドストレージもAndroidでの同期を提供してない。今のところ、数ヶ月に一度手動でOneDriveにアップロードしてるよ。新しいサービスには課金しない、これ以上ストレージサービスには払いたくないね。
「850MBのバックアップは毎日アップロードするには大きい」って言うけど、アプリのストレージ確認機能を使って、画像やファイルをアプリ外に保存して削除すればサイズは減らせるよ。君がバックアップしてるのは「チャット」じゃなくて、チャットアプリ内の画像ライブラリでしょ。850MBの全てがチャット内に必須なデータだとは考えにくいね。
バックアップサイズを減らすのは一つの解決策だけど、本当に困るのは自動化されてないことなんだ。
部分的には実現してるよ。「ストレージ」でメッセージ保存期間を設定できるから、俺は1年にしてる。ちゃんと古いメッセージは削除されるんだ。Google Messagesにはこの機能が全くないし、SMSの整理やバックアップにはサードパーティツールが必要で、Signalの方がはるかに進んでるね。
iOS版Signalって、これまでバックアップ全然サポートしてなかったんだぜ。
Signalはバックアップを暗号化すべきだけど、特定のアプリやデバイスでしか読めないのは多くの人にとって不便だよな。E2EEが重要なんだから、メッセージが自分のデバイスにあれば制御したいんだ。安全なアーカイブの選択肢も欲しいぜ。
気持ちはわかるけど、Signalがプレーンテキストエクスポートを許可しないのは、みんなが不安になるからってのもわかるんだ。でも俺はsigtop
(https://github.com/tbvdm/sigtop)ってプロジェクトでメッセージをプレーンテキストにエクスポートして、検索できるようにしてるよ。便利だぜ。
プレーンテキストエクスポートを許さないのは非合理的だろ。Signalだってアナログホールには弱いんだから。メッセージ受け取った人が、その情報を残したり共有したりするのを止められないんだよ。「消えるメッセージ」もカメラ使えば意味ないしな。相手を信頼できないなら、送らないのが一番だよ。
人は合理的じゃないし、Signalはみんなを安心させたいってこと?でも、メッセージエクスポートに手間がかかることで保護になるケースもあるんだ。例えば、4週間で消えるメッセージを使ってるとして、エクスポートが簡単になったら、今まで保存してなかった人まで保存し始めるだろ。そしたら消えるメッセージの意味が薄れちゃうじゃん。
Signalのユーザーが既存のバックアッププロバイダーを信頼したいって言うけど、俺は1週間以上前のメッセージなんてどうでもいいぜ、プライバシーに関わるしな。プライバシー気にする人は消えるメッセージ使うだろ、バックアップとは逆じゃん?このバックアップ機能って誰のためなんだろうな?メディアバックアップとして使われてるのか?
そうだよな。昔からのSignalユーザーは、信頼できるバックアップよりも履歴が完全に消える方を好むんだよ。でも、この層はもうそんなに増えてないみたいだな。
Signalってなんか怪しいことやってるよな。インフラ自動化のバックエンドコードとか、秘密にしとく理由ないだろ。全部公開すべきだぜ!
Android版Signalのバックアップって、ずっと無料でオフラインでできたんだぜ。アプリがスマホのメモリにバックアップファイル作ってくれるから、それをコピーして新しいスマホに戻せばいいんだ。ファイルはパスコードで暗号化されてるし、データベースも抽出できるよ。これ使えばできるぜ:https://github.com/bepaald/signalbackup-tools
Signalの既存バックアップって問題が2つあるんだ。
1. 非増分で容量と時間がかかりすぎる(俺のは18GBで数時間かかった)。
2. バックアップをスマホから移動させるのが大変。特にSyncThingがPlay Storeから消えてから、明確な方法がないんだ。ローカルで良い方法があれば最高だけど、月2ドルのクラウドバックアップは現実的な選択肢だよな。
「バックアップをスマホからどうやって出す?」って?adb pull使えばいいじゃん?少なくともHackers Newsの読者ならできるっしょ。
人が手作業でやる必要があるバックアップなんて、もうバックアップとは言えないぜ。
クラウドなしのバックアップの話だと思ってたんだけど。それだと、手動でスマホと何かを接続しなきゃならないってことだよね…。
SyncThingがPlay Storeから消えたのは、Googleがアップデートを拒否したせいだよ。元の開発者がやめた後、F-droidには完璧に動くフォークがあるから、そっちを使えばいいんだ。
WireguardとF-DroidのSyncThingはちゃんと動くよ。充電中に起動させれば、PCからスマホへの同期も超簡単になるんだ。
リモートマシンで復号されない暗号化されたバックアップが、どうやって増分バックアップになるか考えたことある?
大量のデータをスマホとやり取りするなら、USB転送がダントツで最高のやり方だぜ。
はっきり言っとくけど、SignalとSyncThingの組み合わせも問題なく動くからな。俺もそうしてるし。
マジ?Androidが普通のUSBストレージじゃなくてMTPになってから、全然うまくいったことないんだけど。MTPってマジで遅いんだよね。
月1.99ドルって、今のバックアップの問題を直すためのものじゃなくて、結局YACSS(Yet Another Cloud Storage Subscription)に組み込んで、みんなからカネを巻き上げる口実でしょ?スマホのデータ同期ができないってのが、YACSSにお金払う価値ある問題だとは思えないんだけど。
新しいスマホにバックアップを復元するとさ、デスクトップPC全部を再同期しなきゃいけないんだよ。Windowsだと古いメッセージの同期がうまくいったためしがないし。
もっとコメントを表示(2)
うん、あんまり触れられてなかったけど、今の機能はまだ使えるんだよね?使えるって信じてるよ。
全然うまくいかないんだよ。スマホにデータベースサイズの2倍の空き容量がないとバックアップできないとか、全然解決策になってないじゃん。だから俺はもうやめたよ。Syncthingじゃファイルの削除もできないし、めちゃくちゃ難しいスクリプトを書かないといけないんだよね。
LinuxのKDE Connectなら、FUSEファイルシステムとしてスマホのファイルシステムをマウントできるから、Dolphinみたいなデスクトップファイルエクスプローラーで使えるよ。統合されててオプションとして自動で出てくるし、かなり便利。パフォーマンスも結構いいよ。
どんな方法がもっと速いと思う?
どんなLinuxデスクトップでもMTP経由でできるよ。(Googleはマスストレージとしてのアクセスをもう許可してないからね)
Signalは今ある便利な機能をやめて、自分のサーバーにデータを保存させる、もっと悪いサービスを強制してくるだろうなと俺は思うよ。PINの時みたいにさ。あの時はすっごい反発があって強制を止めたけど、それでも1年か2年はしつこく通知が来たし。PINとリモートアテステーションがどうとかで、小さいパスフレーズでデータが保護されるって理屈も信用できなかったし、既存の便利なバックアップ機能を削除しないってのも信用できない。あと、既存のバックアップソリューションって、リバースエンジニアリングされたコミュニティのソリューション(GitHubプロジェクト)を使わないと、暗号化を解除してチャットをエクスポートできないんだぜ。他のメッセンジャーじゃこんなこと一度もなかったのに。
Signalはセキュリティ上の理由で、サブのクライアントには古いメッセージを同期しないんだよ。
多分、彼らが言ってるのはGoogleが全アプリに開発者署名必須にするって計画のことだね。これ、F-Droidからインストールしたアプリにも影響するんだよ。
参照: https://news.ycombinator.com/item?id=45017028
Syncthingってあんまり理解できなかったんだよね。最近、Windows用のGo GUIを雰囲気で作って、rcloneとsshd4aを使ってスマホからファイルを引っ張ってきて、必要なら削除してるんだけど、sshd4aをスマホで起動しとかないといけないから、すごく手動なんだ。
君の批判は理解できるし、僕も同じ気持ちだけど、Signalはローカルバックアップを引き続きサポートするみたいだよ。
参照: https://news.ycombinator.com/item?id=45171576
参照: https://news.ycombinator.com/item?id=45172188
個人的には、ファイルをデバイスから別の場所にエクスポートするのを調整して定期的にスケジュールしたり、それをそこで管理したりするのは「無料」じゃないと思うな。新しいサービスは妥当な価格だと思うよ。
記事から明確に引用するね。「でも、セキュアバックアップはこれで終わりじゃないんだ。この初期バージョンのセキュアバックアップの基盤となる技術は、近い将来、よりセキュアなバックアップオプションの土台にもなるだろう。今後の計画には、好きな場所にセキュアなバックアップアーカイブを保存できるようにしたり、暗号化されたメッセージ履歴をAndroid、iOS、Desktopデバイス間で転送できるようにする機能も含まれてるよ。」
もしGrapheneOS版のAndroidを使ってるなら、そうじゃないよ。
え?僕のスマホには完璧に動く802.11チップセットがあるし、クラウドじゃない自分のマシンと会話できるよ。手動接続もいらない。これは純粋にソフトウェアかエコシステムの問題だね。
すごいね、副次的な効果として、AndroidとiOS間でメッセージ履歴を失わずに移行できるようになるかもね。マジで、なんでこの2つのプラットフォームで移行プロトコルが完全に違うんだろう?
こんにちは、Signal開発者だよ。新しいバックアップ形式は確かにクロスプラットフォームなんだ。iPhoneでバックアップの復元に成功したし、今まさに安定化させているところだよ!
もし興味があるなら、Androidの今のローカルバックアップがクロスプラットフォームじゃない理由は、昔作られたもので、文字通りAndroidのSQLiteデータベースを再作成できる全てのSQLiteステートメントのダンプだからなんだ(強力な、ランダムなローカルキーで暗号化されているよ)。だから、あんまりポータブルじゃないんだよね!
でも、この新しいやつは全部クロスプラットフォームで、近い将来にはローカルバックアップもクロスプラットフォームにするつもりだよ。
やあGreyson!
> でも、この新しいやつは全部クロスプラットフォームで、近い将来にはローカルバックアップもクロスプラットフォームにするつもりだよ。
これは素晴らしいニュースだね!バックアップ形式に関する公式ドキュメントや、signalbackup-tools[0]みたいにオフラインでバックアップにアクセス/解析できる公式ツールも出るのかな?僕はSignal/TextSecureを10年使ってるから、バックアップはすごく大事なんだ(もちろんね)し、これまでにバックアップデータを掘り下げて処理したいと思ったことが何度かあったんだ。(会話からメディアを自動で抽出したり、もっと凝った検索を構築したり…)
僕のバックアップは15〜20 GBに達していて、毎日バックアップを取って48時間後に上書きされる前にうまく同期するのが難しくなってきているんだ。だから、新しい“クラウドバックアップ”機能[1]を使い始めない限り(使いたいかどうかわからないけど)、いつか既存のSignal会話をどこかにアーカイブして最初からやり直す(つまりアプリをリセットする)必要があるだろうね。その場合、[0]が今提供しているみたいに、新旧のバックアップをオフライン(デスクトップで)でマージして読み込める公式に文書化された方法があるといいな。
[0]: https://github.com/bepaald/signalbackup-tools
[1]: EDIT: 実際、新しいクラウドバックアップ機能はインクリメンタルバックアップもサポートしていないみたい? https://news.ycombinator.com/item?id=45175387
やあ!すごく公式なものは出ないかもしれないけど、コードは当然全部オープンソースだし、バックアップファイルはただのProtobufs[1]のストリームだから、ツールを作るのはそんなに大変じゃないはずだよ。僕もいくつか荒削りなCLIツールを持ってるから、このローカルバックアップ部分がリリースされたときに、何か整理して公開できるものがあるか見てみるよ。
あと、誰かも言ってたけど、形式は確かにインクリメンタルなんだ。だから、ディスクに最後の2つのバックアップを保持するっていうことは続けるけど、その2つのバックアップはほとんど同じメディアファイルを共有するから、ディスク上のサイズはかなり小さくなるよ。僕も50 GBのバックアップファイルを持ってるから、これは僕にとってすごく大きな目標だったんだ :)
[1] https://github.com/signalapp/Signal-Android/blob/main/app/sr…
> ローカルバックアップ部分がリリースされたときに、何か整理して公開できるものがあるか見てみるよ。
それ、最高だね!本当にありがとう!
> 僕も50 GBのバックアップファイルを持ってるから、これは僕にとってすごく大きな目標だったんだ :)
ハハ、僕だけじゃなくてよかったよ!
それらは確かにインクリメンタルで、Signalが現在作成している現在のモノリシックなバックアップよりも小さいよ。[0]やったね!
[0]: https://news.ycombinator.com/item?id=45176074
おい、Signalにインフラ自動化コード全部をリリースさせてくれよ。そうすれば、誰かがSignalのインフラ全体を監査できるし、アメリカの法律とかで必要になったらいつでもフォークできるだろ。それを秘密にする理由はないし、Signalがこの点について話さない理由もないだろ。頼むよ!
一部壊れた古いデバイスからの移行でSignal iOSインストールが使えなくなったんだけど、君たちはそれを直すアップデートを出すつもりかい?メッセージの受信・閲覧はできたけど、送信はできなかったんだ。再登録しようとしたら、今ではクライアントが完全に壊れてSMSで届く登録認証コードを入力するとクラッシュするんだ。
新しいバックアップ形式は、AndroidとiOS間のファイルタイプ変換もサポートするの?以前は、Androidからのボイスメモが参加者間で直接送られてない限り、iOSで開けなかったんだ。