Japanese subtitles

← 07-25 Security

Get Embed Code
3 Languages

Showing Revision 1 created 10/23/2014 by Udacity.

  1. 休憩してコンピュータの
    セキュリティについて話しましょう
  2. これまであまり触れてこなかった話題です
  3. セキュリティは敵対的な存在がいる時に
    行う処理であると言えます
  4. 他の人がコンピュータやネットワークなどの資源を
  5. 使おうとしているのを退けて
    自分が資源を使うことです
  6. 驚くかもしれませんが
    インターネットはセキュアではありません
  7. 悪意のある人が悪意のあるWebページや
    JavaScriptを書くことができます
  8. 一番簡単な方法は永遠にループする
    JavaScriptを書くことです
  9. 停止条件がないフィボナッチを求める
    関数を書けば
  10. ただずっと続きます
  11. そのページを開くとブラウザが停止します
  12. サーバから切断され
    コンピュータを使えなくなるかもしれません
  13. 実際にはブラウザはスクリプトの実行に
    時間制限を設けています
  14. 3、4秒はスクリプトを実行しますが
    それでも終わっていない場合は停止させます
  15. 最適化が重要な理由の1つですが
    セキュリティの観点からの施策です
  16. Webブラウザを設計する時にミスをすると
  17. 外部の人が個人的なメールや重要な書類に
    アクセスできるようになるかもしれません
  18. そういうことが起こらないようにしたいのです
  19. セキュリティに詳しい人から
    現実のWebブラウザについて聞いてみます
  20. Webはすばらしい場所であると同時に
    危険な場所でもあります
  21. 悪意のあるコードやWebサイトを作り
  22. コンピュータやブラウザへの乗っ取りを
    止めるものは何もありません
  23. セキュリティホールやエキスプロイトを突く
    コードもあるかもしれません
  24. 言語の実装面においてMozillaから見た
    セキュリティについて話を伺えますか?
  25. もちろんです セキュリティは
    Mozillaでも大いに関心を持っています
  26. 私がまだ子どもだった頃
    ソフトウェアを入手するというのは
  27. 店に行って棚を見て箱を取って
    お金を払って家に持ち帰ることでした
  28. 信頼できる会社や第三者から
    ソフトウェアを買っていたので
  29. そのソフトウェアは私のコンピュータに
    私の代わりに何かをしてくれるのであって
  30. 攻撃するものではないと信じていました
  31. Webではそのようにいきません
  32. Webアプリケーションでは
    世界のいかなるWebサイトへも行き
  33. 会ったことのない人の誰も保証しないコードを
    自分のコンピュータで実行していくことになります
  34. 世界が変わりました
  35. 厳重なプラットフォームを作りプログラムが
    私の代わりに何か重要なことをする時に
  36. それが自分の利益に反しないことを
    確かめなければなりません
  37. 銀行の口座などの重要な情報を載せるにつれて
    守るべき重要なものが増えていきます
  38. セキュリティについて一番語られているのは
    信頼できる処理基盤です
  39. 知らない第三者から
    コードをダウンロードしたとします
  40. 悲観的に考えるとすると
    そのコードは完全に信用ならないことになります
  41. 何かをしてくれるかもしれませんが
    悪意がないかどうか分かりません
  42. しかしそれはFirefoxのような
    Webブラウザの中で実行されます
  43. Mozillaで書かれたコードで
    私はFirefoxを信用しています
  44. システムのセキュリティについて言えることは
  45. 信用するシステムの一部をできるだけ小さくして
    つまり信用できる処理基盤を小さくして
  46. 重要な情報を盗まれるような悲劇を
    起こす可能性のあるソフトウェアを
  47. できるだけ小さくすることが必要だということです
  48. 現代のWebブラウザは
    すべてC++言語で実装されています
  49. C++言語はとても強力な言語で
    多くのことができます
  50. しかし特に安全な言語というわけではありません
  51. プログラミングでミスをすればシステムを
    悪意のあるプログラムにさらすことにもなります
  52. たとえばC++言語でデータの配列を持ち
    プログラムが配列の終わりの指定を忘れたとします
  53. 多くのプログラミング言語では
    ランタイムエラーが起きて
  54. 配列の終わりを越えてアクセスしようとしたことを
    教えてくれます
  55. C++言語にはこのような安全装置がありません
  56. C++言語はただ配列の終わりのあとの
    メモリにあるものを読み続けます
  57. メモリにあるものはブラウザの別の部分や
    パスワードといった内部的な情報かもしれません
  58. システムで走る別のプログラムかもしれません
  59. 世界には多くの人々が
    そのようなバグによる穴を見つけて
  60. 他の人のコンピュータを乗っ取り
    個人的なデータにアクセスしようとしています
  61. 人々が信頼できるWebブラウザを作ることと
  62. ユーザのために動作するWebブラウザを作ることは
  63. ユーザが信頼できるソフトウェアを作ることです
  64. そのためにはプログラミング技術をよく知り
    効果的に安全なプログラムを作ることが必要です
  65. 講義でもJavaScriptの悪意のあるコードが
  66. 私たちのインタプリタで実行され得ると話しました
  67. ソースコードを見て実行する前に悪いコードか
    どうかを判断して実行を制御できないでしょうか?
  68. Mozillaではそのようなことはしないのですか?
  69. 残念ながらコンピュータ・サイエンスの定理で
    それは不可能だということが証明されています
  70. 停止性問題については教えましたか?
  71. はい 教えました
  72. もしどんなコードも悪意がないと証明できれば
  73. 停止性問題も解けたことになってしまいます
  74. しかしそれはコンピュータ・サイエンスでは
    不可能であると示されています
  75. 明るい面を言うと
    私の仕事はなくならないということになります
  76. ちょうどコンパイラ製作者の
    雇用不滅の法則と同じですね
  77. 確かに