はてなキーワード: 乱数表とは
サイン盗みとサイン盗み対策は日々過剰に進歩し続けて、1970年ごろになると、ピッチャーとキャッチャーは乱数を送り合うところまでになってしまった。1球なげるたびに乱数を送って隠し持った乱数表と照合して球種を決めていた。乱数はすぐにバレてしまうから試合中なんども乱数表を切り替えるようにしてた。そんなことをするようになったから試合時間がどんどん長くなっていく。1980年頃になったら、21時半の時点でまだ5回とか、試合が完了したら23時だったとか、そういうのが日常茶飯時に。テレビ放送時間には収まらないし、試合を最後までみたら終電で帰れないし、試合中ひまを持て余した選手が攻撃時間中にからあげを食べるようになったり、川崎球場ではファンが流しそうめんをしたり、いろいろな弊害が発生し社会問題となってしまった。
それをうけてゼットが「乱数送受信機能付きグローブ」を開発したんだけど、そういう問題じゃないだろ。
そこで「乱数禁止」「サイン盗み禁止」が取り決められたんだよ。
それ以来、「乱数禁止」「サイン盗み禁止」は絶対のルールになったんだよ。
高校野球でハンケツ王子がやたらハンカチに触ってたけどプロだとあれも禁止。「乱数送ってるのでは」と異議が付きかねないから。
https://players.wotvffbe.com/1322/
なんか妙だな
① 提供割合に基づいてランダムに配列した2つのリストを作成し、どちらを引くか抽選
② 上記リストの並び順で連続する10体が提供され、次の消費者は前の消費者の結果の続きから提供
③ 全体としての排出率は正しい
①②③から下の結果って導けるか?
単に「ランダム」とだけ書いてあるけど、これがカルドセプトサーガみたいに乱数の扱いがクソで事実上ランダムじゃなかったってんなら組み合わせが限られるのもまあ分かる
ああ理解できた
最初に2つのリストを作成したら、もうこのリストが再作成されることはないのか
なぜか「使い切ったら再作成されるんだろう」と問題文に書かれていない仮定をしていた
その通りに使い切ったら再作成すりゃよかったのにな
[B! セキュリティ] フェイスブックの暗号化、日米英などが見直し要求へ (写真=AP) 日本経済新聞
平文に一定のアルゴリズムに従って暗号鍵から生成したノイズデータを掛け合わせ、意味が読み取れない暗号文を作るのが暗号化である。逆に意味が取れない暗号文から平文を求める操作を復号と呼ぶ。アルゴリズムがよく知られていながら暗号鍵が無ければ復号できないものがよい暗号と言われる。一般には256bitAESでも使っておけばまずパッと見ても聞いても数学的にもほぼ乱数と区別できなくなる。
ノイズデータの生成方法には色々あり、事前に送り付けた乱数表を使い使用後は破棄するもの、事前に送り付けた共通鍵や公開鍵を使うもの、都度生成するものなどがある。掛け合わせる方法も色々あり、乱数表に書いてある数字と暗号文を足し合わせると平文になるもの、共通鍵を暗号文に使うと平文になるもの、公開鍵を使うと平文になるものなどがある。
共通鍵を平文に使うと暗号文になり、共通鍵を暗号文に使うと平文になるものを、対称暗号とか共通鍵暗号と呼ぶ。
公開鍵を平文に使うと暗号文になり、暗号文に秘密鍵を使うと平文になるものを公開鍵暗号と呼ぶ。非対称暗号ともいう。
共通鍵暗号でも公開鍵暗号でも「平文が、暗号文になり、平文に戻る」というところは同じだが、
共通鍵では「平文→ 鍵→暗号文→鍵 →平文」と同じ鍵を使い、
公開鍵では「平文→ 公開鍵→暗号文→秘密鍵 →平文」と二種類の鍵を順に使う。
なお、この二種類の鍵は順に使えば順序はどっちでも良い。先に秘密鍵で処理して公開鍵で処理することも可能だ。とにかく2種類両方を使えば良い。
共通鍵暗号は分かりやすい。zipのパスみたいなもんだ。Wi-Fiのパスワードも同じだ。だが公開鍵暗号については、二種類の鍵を順番に使うと何が良いのかと思う人も多いだろう。どうせ暗号で読めないのだからいいじゃないかと思うだろう。実は名前の通り鍵を公開しても全くノーダメージというところがメリットなのだ。書かなかったが公開鍵から秘密鍵を数学的に求めることは不可能である。逆も不可能である。そして処理する順番もどっちでもいい。つまり適当な暗号文と鍵の片割れを公開しておくことで、もう片割れの所有を証明できるのである。これが公開鍵暗号の醍醐味である。
この技術はHTTPSの証明書に使われている。というかすべての公開鍵基盤で使われている。.pemとか.cerとかid_rsa.pubはこの片割れであり、ウェブブラウザの「証明書の検証」とは、ネットを見てる時にサーバが送ってくる「適当な暗号文」として"*.hatena.ne.jp"のハッシュを知らん鍵で暗号化したもののハッシュを知らん鍵で暗号化したもののハッシュを暗号化したものに対して、事前にWindowsをインストールした時に付いてきたHatena-Masuda Ultra Global Root CAとかいったけったいな鍵の片割れを使ってみてちゃんと復号出来てるかチェックしているのである。
暗号化通信を行うには、暗号鍵でデータを暗号化すればいい。暗号化には共通鍵暗号を使うのが高速で便利だ。公開鍵暗号は原理的に計算量が多く低速である。しかし、どうやって共通鍵を事前に知らせればいい? 公開鍵暗号で共通鍵を暗号化すれば、受け取り手は自分の秘密鍵で復号できるだろう。しかし、秘密鍵は本当に秘密か? 暗号文と秘密鍵が手に入れば、公開鍵暗号でも解読できてしまうのではないか? HTTPS化しているウェブサービスでも、TLSをロードバランサで終端してデータセンタ内は平文だったりするのではないか? そこで鍵交換、セッション鍵生成の議論が登場する。
Diffie-Hellman-Merkle(Diffie-Hellman)鍵交換方式とは、ディッフィー君とヘルマン君が下宿で階段をドタドタやってる時に天啓のように降ってきたと言われる、ネット上に数字そのものを公開することなく、2者間で同じ1つの乱数を得る方法である。
送信者と受信者の間で共通の1つの乱数を得ることができ、その乱数を第三者に知られることがない。
上で何度か「公開鍵暗号の秘密鍵と公開鍵は、平文に対して両方使えば平文に戻り、順序は関係ない」と書いたのを覚えているだろうか。Diffie-Hellmanはこれに似た方式だ。まず、AさんとBさんは送信者がお互い本人であることを証明できるようにする(公開鍵基盤を使う)。そして、それぞれ手元で乱数AとBを生成する。次に、鍵用の乱数Aを適当な乱数で暗号化した鍵Aと、鍵用の乱数Bを適当な乱数で暗号化した鍵Bを計算し、お互いに送り付ける。この暗号Aと暗号Bは盗聴されているものとする。
AさんとBさんはそれぞれ鍵Bと鍵Aに対して暗号化を行う。すると鍵BAと鍵ABが生まれる。このとき数学的な都合により鍵BA == 鍵ABである。
では、暗号A、暗号B、適当A、適当Bのみから鍵ABや乱数Aを求めることはできないのか? 可能だが式変形などで「解く」ことができず、総当たりになるため計算量が膨大になる。従って実質的にはできない。
或は、暗号A、暗号Bを掛け合わせれば、鍵ABになるのではないか? これもできない。暗号AまたはBと掛け合わせるのは生の乱数AまたはBでなければ意味がない。第三者が乱数Cを作って暗号AやBと掛け合わせても、鍵ACや鍵BCになってしまい、鍵ABと一致しない。
これにより、手元で生成した乱数以外のすべての情報が公開で既知で盗聴されているにもかかわらず、2者間で秘密の暗号鍵用乱数を得ることができる。
原始的なDiffie-Hellman鍵交換の実際の計算は非常に簡単であり、この「暗号化」は事前に決めた別の方法で生成する既知の2つの整数X, Yと乱数A, Bに対して、
暗号A = XをA乗してYで割った余り、
暗号B = XをB乗してYで割った余り、
鍵AB = 暗号BをA乗してYで割った余り、
である。
なお、くれぐれも簡単と聞いてPython 2.7とかで実装しようとしないように。算数の上手い人が作ったライブラリを使え。暗号処理の自作は絶対バグらせて割られるのがオチだ。ちなみにDiffie-Hellman-Merkleの三人目のマークル氏というのは両名と何のゆかりもないので普通は名前に入れないのだが、Merkle氏の先行研究が直接の元ネタなので入れるべきだと主張する派閥もある。俺はどっちでもいいと思うが折角なので入れておく。
ここでやっとE2E暗号化が登場する。上のセクションでしれっと書いたが、DH鍵交換が完了した時に送信者と受信者が得る共通の乱数は、各々ローカルで都度生成する乱数を元にしている。身許保証は公開鍵によるが、鍵は公開鍵に縛られないのだ。つまり、SNSやメールサーバその他、身許を保証する機能と文章をやり取りする機能があるツールと、そのツールで間違いなく本人にDH鍵交換の暗号を送れるクライアントアプリがあれば、その経路で本人同士の間だけで共通の乱数を生成し、それを「セッション鍵」として共通鍵暗号方式による通信経路が設定できる。
この「公開鍵認証基盤で本人確認し、DH鍵交換でセッション鍵を設定し、鍵を端末に出し入れすることなく、受信側端末のメモリに入るまで暗号化を解くこともないまま、共通鍵暗号で通信する」のがいわゆる「End-to-End 暗号化」である。
E2E暗号化を行うと、鍵はDH鍵交換で生成され、端末の外に出ないし書き出す必要もなく、通信の中で割り出す事もできず、通信が終われば破棄してもよい。好きなだけ定期再生成してもよい。認証に使う公開鍵と数学的な関係もない。一度設定してしまえば、SNS運営にチャットログを出させても鍵交換した意味不明な履歴と意味不明な暗号文が出てくるのみで、盗聴者をなりすまさせて鍵を再設定させても前の鍵と何も関係のない新しい鍵が出てくるだけで、意味不明な暗号文の解読の助けにはならない。ちょっと量子コンピュータめいているが、端末となりすましの両方で鍵を一致させることもできない。
ざっくり言えば送信側端末と受信側端末に残っている平文か鍵をバレる前にぶっこ抜く以外に解読方法がない。
これは盗聴関係者にとって非常に大きな問題で、米国のFBIなどは盗聴能力を維持するには法規制以外に策がないと考えている。DH鍵交換のアルゴリズムは上に書いた剰余以外にも楕円曲線を用いた数学的に更に複雑なものもあり、ソースはネットにいくらでも転がっているし、電子計算機アルゴリズムの常でやたら強力な癖に計算量的には全然負担にならない。NSAなどは数学者を揃えて最高のアルゴリズムを提供する振りをして、規格書で事前に決めた一定の数学的特徴を備えているべき定数に備えていないものを指定するとか、実装でミスが出やすい関数を選ぶなど小細工を入れているが俺は二次関数も分からんので詳しいことは知らん。しばしば政府の陰謀にキレた若いITキッズが小細工を抜いて差し替えた再実装を公開したりして揉めている。
実際にSNSなどでE2E暗号化を実装する上での問題点は、本人確認、機種変とマルチデバイス、嫌がらせ対応がある。まず本人確認がコケればMITMは可能だ。E2Eでは鍵を外に出さないのがメリットなので複数端末ログインができず(鍵が変わって別端末で書いたメッセージは解読できなくなる)、運営で常時メッセージを監視できない(したら意味がない)ので嫌がらせ対応が多少困難になる。またMITBというか、改造偽アプリで抜かれる可能性は、まあ、ある。
俺はまぁラディカルというか原理主義者なので、本人確認なんてものはID+パスワードでいいと思っているわけ。
でも割とよく世間では、ID+パスだけだと本人の確認になっていないとか言うアホ理論がまかり通っていて、そんなわけねーだろということを証明します。
他要素認証を使えば本人確認になる、という説がまことしやかにまかり通っているけど、そんなのじゃ「本人確認」にはなりません。
例えばメジャーなスマホを使った確認を例に取ると、ID+パス入力だけじゃなく、事前登録したスマホに入っている暗号アプリで、自動生成した暗号を入力すると、ID+パス+スマホの所持が揃ったので本人です。って感じで認証するんだけど、これスマホ奪われてたら誰でもできるよな。
確率低い?とはいえ本人意外もできるっていう点だと、ID+パスワードと同じで「本人を確認」したことにはならんだろう。
同じことはEメールへワンタイムパスワードを送付して、ID+パスワード+ワンタイムパスワードで認証する方法もだけど、これも、メールアドレスの権利を確認してるだけど、それが奪われていたら、本人以外でも利用できる。
事前に物理的な乱数表もドングルもマイナンバーカードつかった認証も、奪われれば本人以外が認証突破できるので、「本人確認」できるとは限らない。
ID+パスワードより強度は上がるけど、それは認証の強度が上がったと言うべきであり「本人確認」できるとか、いいきっちゃうのは、本質を知らないで適当にセキュリティ語ってて、だるい。
じゃあ生体認証使えば良いという。感じもするかもしれないけど、指紋のコピーとか簡単にできます。
顔認証も難しいかもしれないけど頑張れば突破できそうだし、何なら本人の指やら首を切り落とせば、突破できると思うので、これも「本人確認」したことになるとは限らない。双子とかクローン使うこともできるしな。
例えば友人とか、本人の許可を得て代理としてシステムやサービスを操作する必要がある場面ってあるわけで、
そういう場面だとID+パスワードだけ知っていれば代理操作をすることができるわけです。
あ、お前らは友達居なかったな。でも大丈夫、ボットサービスとかに代理に処理をしてもらうことを考えれば同じで、
ボットサービスに操作してもらいたいサービスのID+パスを登録すれば、それだけで代理に操作してもらえる。
これが、多要素認証になると、代理操作出来ないくなる。「本人」が操作を代理させる意志をもっていても、端末を友達に貸し与えて四六時中持ち歩かせるわけにもいかないし、よくわからねーボットサービスに指紋情報やら、生体認証を登録するのやりすぎてる。
セキュリティ上がってるとか喜んでるけど、それは裏を返せば使い勝手が下がっているとも言えるわけです。
そこまで使い勝手が下がってて、じゃあそれに報いるだけのセキュリティ上昇が期待できるかと言われれば、前述のように本気を出せば他人がそのセキュリティを突破することはできるわけで、基本的にはコスパ悪い。
もちろん医療とか金融とかクリティカルな場面では使うべきだと思うけど、何でもかんでも多要素認証、生体認証、みたいなノリは気が狂ってるとしか言いようがない。
あとセキュリティが上がっているだけで「本人確認」ではない。ボットにスマホを預けるとかメールを読み取る権利を渡せば実現できる。くっそめんどくさいし危険だけどできる。本人意外が操作できるってことは「本人確認」として機能していない証拠です。
はい、出来ません。限りなく本人っぽいです。ということまでしかわかりません。
仮に対面で人間が認証するって事になっても、詐欺師の人は整形もすれば書類も偽造で取り揃えます。
軽々しく「本人確認」とか言うな。本人って誰が判定するんだよ。まわりか?
まわりが勝手に「本人」であることを認証したり確認したとしてだよ、その「本人」が記憶喪失になって、「本人」であることを拒絶したのならそいつは本人なのか?それとも別人か?
答えろ!
http://twinavi.jp/topics/it/5593e714-5b0c-4b21-99f5-3f94ac133a21
やめてほしいなあ、と思う理由は次の3点。
事故や犯罪によって預金が不正に払戻されたとする。あまり知られていないのだけれど、このとき、預金者に明らかな過失がなかった場合には、損失額は銀行が補填する(預金保障規程という。ペイオフとは別物)。
明らかな過失というのは「普通やらんだろ」っていう内容のもので、例えば
で、会計簿アプリのケースも、自己責任でパスワード預けていたとすれば「預金者の明らかな過失」にほぼ該当すると思われるので、銀行側が損失補てんをする必要はない。その点の心配はない。
ただし預金者から補てん請求があったときに、「預金者に明らかな過失があった」ことを証明する義務は銀行側にある。大規模なデータ漏れなどの際に不正払戻しの被害が生じたら、当行預金者の被害者の存在確認と損失額の把握、預金者が「アプリ側にパスワード預けてた」ことの立証を書類にしていく必要があるのだけれど、正直、そんな面倒な仕事をさせないでくれ、と思う。そういうときに限って「銀行がアプリにデータ提供していたからいけないんだ」とか言い出すクレーマーも絶対現れるし。
ここまで書いて気がついたけど、そもそも乱数表=取引パスワード≠ログインパスワードでしょ?データ閲覧のためだけなら乱数表データ不要なはずなのに、なんでそれ収集するのさ?
これだけフィッシングサイトに気をつけろって言っていても被害者は減らない。
アプリの画面に似せたフィッシングサイトが横行すれば(時間の問題だと思う)被害者は増加するだろう。上記とも関係するが、犯罪者に余計な知恵を付けさせないでくれ。
預金やクレジットカードの決済履歴は、その人の消費性向を如実に表す貴重なデータだ。
が透けて見える。銀行ではずいぶん前から、こういった過去のデータを分析してその人の消費性向にあった金融商品を高い精度で提案したい、という研究を進めている。銀行とすれば将来の商売の需要なネタが、他者に把握されるというのは極めて都合が悪い。やめてほしい。
~~~
もちろん預金者本人のデータを預金者がどう使おうと自由なわけだけれど、
こういう形でデータが外部に流れていくのは、所在なさというか心地悪さというか、気持ちの悪さを感じる。
そもそも、自分の中でも最もプライベートな情報をよく他所様のフォームにホイホイ入力しちゃうよなぁ、ってのが個人的な感想で。