-
Notifications
You must be signed in to change notification settings - Fork 9
userUuid および secret の廃止 #514
Comments
ご提案ありがとうございます。 UserUuid / Secretは二つの役割を持っていまして。 では、UserUuidは何に利用しているかといいますと、Optoutの為です。 この過程と同様に私たちも考えたのですが、本来論のGDPRに対応する為にも、14日間経過前に削除するというOptoutがあったほうが良いのではないか?との考えに至っています。(もちろん本来の実装にはありません。) Optout APIはサーバ側は配備されており、今後クライアントに実装する予定ですが、このAPIの呼び出しによって該当UserUuidとSecret、そして診断キーをDBから全削除し、ユーザーが送った一切のデータは削除される仕組みとなっています。 廃止される事によって、GDPRには準拠できなくなるのですが、この辺りのお考えと他に良い方法などあれば私たちもうれしいです。 |
optoutと言っているのは、何のoptoutのことでしょうか? |
ユーザー自身の登録データの削除です。 |
それはTEKリストを送ってそのTEKを削除するのではなく、UUIDを用いて2週間以上の長期にわたってユーザーを識別し続けなければ実現出来ないものなのでしょうか? |
TEKリストを送って、クライアント側で削除ってできるのですか?だとすると把握していない可能性があるので、教えてください。 |
クライアント側での削除ではなく、クライアントからサーバーに送ったTEKリストをサーバー側で削除したいということではないのでしょうか? であれば、クライアント側から再度削除してほしいTEKリストを送れば良いかと。 |
えっと、その場合なのですが、クライアント側から送られてきたTEKがそのスマートフォンのアプリであると、どの様に一致させたら良いでしょうか? |
その検証が必要な理由はよくわからないのですが、それを検証する必要があるのであれば、TEK送信後一定期間のみ有効な識別子を生成するのが良いのではないでしょうか。 |
送信時UUID生成は良いですね。 |
どのAPIをどういった攻撃から保護したいのかはよくわかりませんが、API保護よりも14日以上永続化されてしまう識別子を排除することが求められているアプリかと思います。 |
陽性登録APIです。 |
そのために「処理番号」なるPINのようなものを発行しているのではないですか? 現状UUIDやSecretはRegister APIさえ叩いてしまえばいくらでも発行できるようなので、特にSecret単位でアクセス数等を制限しても効果は見込めないかと思います。 |
この点については、私たちだけでの判断では、ちょっと厳しいので、この提案について政府の担当さん通じて少し相談するお時間をくださいませ。 |
ちゃんと追わないでやや無責任な言説なのでおかしければ聞き流してください。送信時にuuidを送りシークレットで認証するより、送信時に鍵ペアを生成して、公開鍵を識別子として送信、APIアクセス時にはnonceを含むリクエストにsecure enclaveで保護している秘密鍵で署名して送ればよくありませんか?破るのはかなり困難になると思いますが。 |
鍵ペアである必要もないかと思います。 |
ご意見、ご提案ありがとうございます。 現行のSecretを削除するとき問題点として以下の認識です。
ご提案として3.の解決策をいただきました。 |
処理番号に電子署名を付けてフロントエンド内で検証できれば1,2についても解決できそうですが、その部分を変えるのは難しいでしょうか? |
@tzik さんが仰るように、1, 2 は、より確実な形で解決できています。 単に(bearer) token でよいのではないかという点については、想定する攻撃者モデルによるということになります。テロを想定するのであれば、かなり強い攻撃者を想定することになるので、送信されたトークンは読むことができるnetwork attacker を想定すると思います(名前に反し、必ずしもトークンはネットワーク上で読まれるとは限りませんが)。このような場合、上記のような鍵ペアの利用は有効です。 |
すいません。私が理解に至ってないようです。 電子署名の元となるものは、公開キーになるということでしょうか? |
ユーザーデータの保護という意味での、トークンを読むことができるという点については確かにそうで、これはクライアント証明書によるエンドポイントの保護を考えています。 |
問題としての1と2は、 |
言葉足らずでしたね。すみません。 |
MITMが成立している想定でのモデルはあまり考えたくはないのですが、その想定だと送った公開鍵がすり替えられることまで気にする必要がありませんか。 |
1, 2 については、保健所から発行される処理番号が保護の役目を果たしていると認識しているのですが、違いますでしょうか? |
電子署名である必要はありますか?処理番号が十分に推測困難ではないとしても、スマホの操作に不慣れなユーザーでも簡単に入力できるように、8桁くらいのパスワードを組み合わせるので十分ではないでしょうか。 |
らしいので、裏にあるサービスにアクセスすることなく正当性を検証できる必要があるように思えます。 |
「裏にあるサービス」とはなんのことでしょうか? |
ここでは厚労省のポリシーや保健所が発行するコードの仕様変更を伴うような全体アーキテクチャに関する議論を行うのはあまり効果的ではないようなので、こちらのツイートで公開されている厚労省の連絡先に連絡させていただきました。 こちらから Close してしまって良いのか判断しかねますが、個人的にはこれはこのオープンソースアプリ単体で解決できる問題とも思っていないため、私としては Close いただいて結構です。 |
技術的な公開議論にはGithubが便利ではないでしょうか。 |
既に必要ないかもしれませんが、一応。
遅レスすみません。読めるのと変更できるはまた攻撃者の強度が異なりますね。書換も自由だとちょっと手立てが難しくなりますが、前記のネットワーク攻撃者だと、TLSで守られているチャネルで伝送される情報は読めるけど書き換えられないという前提で、それなりに納得性があるものだと思います。この前提であれば、処理番号が安全に渡されかつ十分なエントロピーがあれば、公開鍵の登録時にやられるというのは、TLSは安全であるという前提に反するので無くなることかと思います。 |
これ、クライアントはモバイルアプリですよね。とするとクライアント証明書を使う場合は全てのインスタンスで別のということになります。そこまでするメリットはあんまりないと思うのですよ。raw keysで十分ではないでしょうか? |
こう言う意見も書かないと一方的な意見だけになってしまうのであえて書きますが、 政府がそこまで信用できないのであれば、アプリのインストールをしなければいいだけであり、 今の実装に同意できる人だけアプリをインストールしてもらえれば十分なので、 |
個別は現実的ではないですね。 rawkeys がなんとなく同じ認識になる気がしましたが・・・ |
普及率の目標次第でしょうね。 スマホの普及率が77.6%(2020年)、今回のアプリの効果を得るには、国民の60%以上の導入が必要とのことなので、スマホ保有者の80%近くがインストールしている必要があることを考えると、重要なテーマだと思います。 政府は信用できなくても、システムやアプリは信頼できるという状態が担保できれば、国民の多くの方たちへの普及に繋がると思います。 |
appsupport@cov19.mhlw.go.jp |
たしかに直接関係はないのですが、意図として保護したいというのはありました。 接続先含めてソースコードに含めるというわけにはいかないのでこのような形になっています。 |
@darkcrash |
すみません、理解できませんでした。 |
処理番号のフォーマット・生成は、私たちがここから直接関与できるものじゃないという点ですね |
はい。だからこそ、appsupport@cov19.mhlw.go.jp にメールだと思っています。
えっと、そもそも8桁整数じゃAPI仕様を逸脱?
8桁整数を秘密鍵で署名すると、何ができるようになるのでしたっけ? 私も諦めるつもりはありませんが、よりよくわかっている方も厚生労働省に提言いただけると、効率的かと思います。 |
@Cat-sushi @darkcrash |
@t-yamo |
@t-yamo @darkcrash |
@Cat-sushi |
WebAPIを呼ぶタイミングを変えて欲しいです。 UUIDとかsecretは難しくてわからないのですが下記の不安があります。 陽性登録したならば追跡されても仕方がない。むしろ協力する。 目的はアプリ利用者を少しでも増やすことだと思います。 WebAPIの返却値と端末が紐づけできるのかはわかりませんが、 #修辞疑問(?)の使い方合っていますか? |
そうですね。変えること自体難しいことではないんです。 なので少し前にも申し上げた通り、不安や不透明、表現がという理由で文章校正のように変えてしまうとそれはそれで大変なことになります。 |
より正確には、WebAPIを呼ぶタイミングを戻して欲しいです。 陽性登録の前のプライバシーポリシー確認付近に在ったものが、チュートリアルや利用許諾の追加によって実装位置が元々意図されていたと思われるタイミングではなくなっているからです。 |
UserUuid/Secret の廃止ではなくてですか? その前提での話であれば、 なるほど・・・発行してからすぐに陽性登録という点が失われるくらいで、妥協案としては良いかもしれません。 |
処理番号登録での対策今のところ見つからず、
を取り入れつつ、いくつかの対策を残しておこうかと思います。 |
@darkcrash
概ねUserUuidとsecret削除の方向だが、#535, #565, #566 解決までの暫定作としてWebAPIを呼ぶタイミングを戻すという意味ですか。 |
@Cat-sushi |
こちらは厚生労働省によって運用されているCOCOAのコードではありません。 |
現在アプリ初回起動時にuserUuidという永続的なアプリインスタンス識別子と、それと1-1で紐づくsecretというトークンを発行して、感染報告時にTEKと同時にそれらをサーバーに送っています。
これらの識別子およびトークンは14日間というスパンを超えて永続的に利用可能な識別子であり、Apple / Googleが14日間を超えたトラッキングを防ぐために採用している識別子発行ポリシーに逆行しているように思われます。
これらの識別子およびトークンの利用を撤廃してはいかがでしょうか?
The text was updated successfully, but these errors were encountered: