ぶうううん's Cafe

ぶうううんの気ままなブログです。

既にmokutilに登録してある公開鍵が手元に無い状態で、mokutilのリストから公開鍵を削除する

新年挨拶

 あけましておめでとうございます。本年も精進していこうと思いますので、よろしくお願い致します。

Summary

 以前、私はSurfaceUbuntuをインストールする時など、kernelに自己署名を複数回行いました。その為、mokutilのリストには複数の公開鍵が載っています。そして、リストに載っている公開鍵は、既に削除してしまい、手元にはありません。今回はこのリストに載っている公開鍵を削除したいと思います。

How to

  1. とりあえずmokutilのリストを確認
     次のコマンドでリストを確認します。mokutil --list-enrolled

  2. 公開鍵の出力
     手元に公開鍵があればそのままsudo mokutil --delte <key.der>すれば良いのですが、今回は署名に使用した公開鍵が手元に無い為 mokutil --exportでmokutilのリストに載っている全ての公開鍵を出力します。

  3. 公開鍵の削除
     sudo mokutil --delete <key.der>でmokutilのリストから公開鍵を削除します。登録時と同様に、任意のパスワードを入力する必要が有ります。

  4. 再起動
     pcを再起動すると、MOKManagerが立ち上がるので、先程入力したパスワードを入力して公開鍵の削除を確定します。

Finally

 とりあえずスッキリ。ブログ書いてる間に1/366日が終わってしまった。今年は去年以上に頑張ろう。

おまじない[INSTRSET "i486p"]

Summary

 お久しぶりです。ぶうううんです。現在、「30日OS本」をやっております。つい先ほど、悩まされたことを記事にしたいと思います。

What happened?

 30日OSの14日目、harib11eにて、asmhead.nasを改良しておりました。しかしながら、デバッグに苦労。原因がおまじない[INSTRSET "i486p"]であることが判明。無事にデバッグを完了したのでした。

Reason

 30日OS本で使用するnaskはnasmを改良して作られたアセンブラです。nask、nasm共に標準で16bit前提の機械語を出力します[1]。よって、32bitレジスタを使用する前には、おまじない[INSTRSET "i486p"]が必要となります。
 harib11dまでは、プロテクトモードへ移行する直前(要するに32bitレジスタを使用する前)に[INSTRSET "i486p"]を宣言すれば良かったのですが、harib11eでは改良の結果、プロテクトモードへ移行する前に書くMOV EAX, [ES:DI+0x28]の前までに宣言が必要となったのです。

Finally

 考えてみれば当たり前の話ですね...。初歩的なミスに時間をかけてしまった...けれどこれで開発を進められます。

Cited from

[1]

Duplicate

 「Bug Bountyやりたいな~」という気持ちが高まったので先月からBug Bountyを始めました。 私はHackerOneでBug Bountyを始め、初Submit reportしました。無事triageされたのですが、昨日、友達とお酒を飲んでいたらメールが来てduplicateになりました。残念。 Bug Bountyは甘くないですね。

セキュリティ・キャンプ全国大会2019 事前課題

概要

 セキュリティ・キャンプ全国大会では、講義によって事前課題が与えられる。この記事では、私が受講した講義に関する事前課題について備忘録として書きます。

事前課題があった講義

 私が受講した講義のうち、事前課題が与えられた講義は以下の2つ。

  • B1「クラウド時代おける大規模分散Webシステムの信頼性制御」
  • B5「体系的に学ぶモダンWebセキュリティ」

事前課題の内容

B1

 B1については、セキュキャン応募の時点で、講義紹介にて事前課題があることが明示されていた。その内容は、「簡単なクラウドネイティブなWebシステムを開発する」というものだった。
 しかしながら、いろいろあって当日のハッカソンでは、講師の方が作成したサンプルアプリケーションを使用した。
 私個人では、セキュキャンまでに、AWSを用いたストリーミングチャットアプリケーションを途中まで作成していた。

B5

 B5については、SOPやXSSに関するPDFの読み込み、XSSのサンプルを試すといったことを行った。

セキュリティ・キャンプ全国大会2019 応募課題

概要

 前回、セキュリティ・キャンプ全国大会 2019の参加記を書いたので、今度は応募課題の回答を書こうと思います(一部簡略化しています)。参加記はこちら。 buuuuuuun3939.hatenablog.com

共通問題

問1

Q.ブログや、TwitterGitHubSlideshare、Speaker Deckなど公開している活動や資料があれば、URL等を記載してください.

A. 以下にブログ、TwitterGitHubのURLを記載します。

 ブログ:http://buuuuuuun3939.hatenablog.com
 Twitter:https://twitter.com/buuuuuuun3939
 GitHub:https://github.com/buuuuuuun3939

問2

Q. セキュリティ・キャンプ地方大会などセキュリティに関するイベントに参加していれば、それを記入してください。

A. 初参加となります。(思い返せば高校生時代にCTF4bに参加していた。)

問3

Q. オープンソースなどの活動に参加していれば、どんな実績があるかを記入してください。参加の形態は開発だけには限りません。

A. オープンソース自体の開発について経験無し。しかし、「参加の形態は開発だけには限りません。」と問題文にあるので、その部分に注目して回答。Web Componentsを絡めた回答をした。

問4

Q. 自分のスキルについて、得意としている、あるいは得意としたい技術領域について、なぜその技術領域が好きなのか、その技術領域でどんな世界を作っていきたいのか、『好きなだけ』語ってください。

A. 私は、現在Web開発を行っています。私は今まで、CTFなどを通してセキュリティについて学んできました。しかしながら、私にとってセキュリティは実感が湧き難い分野であり、「果たしてこれで良いのだろうか」と思いつめる日々でした。
 大学入学後、Web開発を行っている友達と出会い、私もWeb開発を行うようになりました。すると、セキュリティのみを学んでいた頃とは異なった喜びが生まれました。なぜならば、自分がコードを数行書くごとに、自分の書いたコードがWebとして画面で生まれ変わるからです。私はそれが嬉しくて嬉しくて仕方がありません。このレスポンスの速さこそ私が求めていたものなのかもしれません。「書いたコードを一番にWebとして見ることができる」これはWeb開発者ならではの特権です。
 現在、Webの世界はどんどん広がっています。その証拠に、IPv4は枯渇し、IPv6が生まれました。今後は更にWebの世界が広がるスピードはますます加速するでしょう。果ては、頭で考えたWebを1クリックで構築・公開できる時代が来るかもしれません。
 私の作ったWebがWebの世界を構築する1つのパーツとして生きている。インターネットが当たり前となった現代において、それを実感できることはとても喜ばしいことです。
 私は共通問題 問3にて、「多くのWebコンポーネント開発を行いたい」と書きました。果ては頭で考えたWebを1クリックで構築・公開できる時代が来るかもしれませんが、その前に、これからはWebコンポーネントを自由に組み合わせ、誰でも簡単にWebを公開できる時代が来るはずです。それも2000年代初頭のようなWebではなく、現在のように見やすく、デザイン性に溢れてレスポンシブなWebです。私はそのために「多くのWebコンポーネント開発を行いたい」と考えています。
 IPv4が枯渇し、さらにIPv6も枯渇したとき、Web開発者が考えるものはなんでしょうか。私にはその答えがわかりません。そのときにはまたアドレス域が拡張されることでしょうが、私はそんな世界を見てみたく、その問に対する答えを見出したいと考えています。加速的に広がっていくWebの世界。私はそんな世界で生き、Webを豊かにしていきたいのです。

問5

Q. あなたが今まで作ってきたソフトウェアにはどのようなものがありますか?また、それらはどんな言語やライブラリを使って作ったのか、どこにこだわって作ったのか、たくさん自慢してください。

A. 大学で珈琲同好会を立ち上げたので、それの紹介HPや、インターネットラジオ用の通知ソフトウェア、コマンドラインツイートソフトウェア等について書いた。また、現在開発中のサービスだったり、その後に作りたいものについても書いた。特に、その後に作りたいものについては、Web開発をしている自分・これまでの特殊な家庭環境を絡め、結構力説した。

問6

Q. あなたがこれまで利用したことがあるインターネットサービスの中で一番すごい!と思ったものについて、技術的なのか、仕組み的なのか、ビジネス的なのか、どんなところがすごいと思ったのかを説明してください。

A. 私がそのように思ったものは、ストックフォトサービスです。中でも、スマートフォンに特化したストックフォトサービスに感動しました。実際、私は代表的ストックフォトサービスの1つである「Selpy」を利用し、「Selpy」に関する記事をブログに投稿したことがあります。(http://buuuuuuun3939.hatenablog.com/entry/2018/09/26/160159)
 以前から趣味で写真を撮影していた私ですが、利用当初は「一眼レフで撮影した写真ならまだしもスマートフォンの写真なんて売れるのだろうか」と疑心暗鬼でした。しかし、この思いはすぐに打ち消されました。実際に「Selpy」に利用を通し、私の想像よりもはるかに簡単に写真を販売することができたからです。これには本当に驚かされました。
 この体験は技術的発展とビジネス的発想がなければ生まれなかったと私は考えています。技術的発展とは「スマートフォンの写真撮影技術の向上」、ビジネス的発想とは「スマートフォン1つで写真の撮影から販売までを行う」ことです。
 近年、急速にスマートフォンの写真撮影技術が向上しています。もちろんセンサーサイズは一眼レフには及びませんが、中には老舗カメラメーカーであるLeicaのレンズを搭載したモデルや、高性能な画像処理機能を提供するチップを積んだモデルもあります。
 これらにより、スマートフォンでも高品質な写真を撮影することができ、それらを商業利用することが可能になりました。
 さらに、これにストックフォトサービスが組み合わさり、スマートフォン1つで写真の撮影から販売までを行うことが可能になりました。昔は写真といえばプロが販売するというイメージが強かったですが、現在ではアマチュア・初心者でさえ簡単に販売することが可能となり、その気になればスマートフォンさえあれば誰でも写真家になることができます。これぞ、写真における革命だと私は思います。

問7

Q. 今年のセキュリティ・キャンプ全国大会で受講したいと思っている講義は何ですか?そこで、どのようなことを学びたいですか?なぜそれを学びたいのですか?講義を担当する講師に響くようにアピールしてください(複数可)。

A. 私にとってセキュリティ・キャンプ全国大会の講義はどれも魅力的です。全ての講義を受講することは不可能ですが、特に3日目はE4「クラウドホスティングサービスのセキュリティと運用技術の研究」、B5「体系的に学ぶモダンWebセキュリティ」を。4日目はC6「事例と法律」、A7「Pythonによるマルウェア検出の自動化」を受講したいです。
 まず、E4「クラウドホスティングサービスのセキュリティと運用技術の研究」は、今回の選択問題の問5で問われている内容が取り上げられています。
 私はMicrosoft Azure、Amazon Web Servicesなどのクラウドサービスを本格的に利用したことがありません。また、コンテナ技術に関しても、Dockerを簡単に使用したのみです。クラウドサービスやコンテナ技術についての知識が圧倒的に欠けており、多くの時間を調べることに費やしました。完璧な回答はできずとも、私なりの回答を行うことができましたが、まだまだ分からないことばかりです。特に、オーケストレータとそれに関するセキュリティについて興味がありますが、この講義を通してコンテナ関連技術のセキュリティについて知識を深めたいと考えています。
 B5「体系的に学ぶモダンWebセキュリティ」では、モダンなセキュリティ機構を学ぶとのことですが、そのなかで私が特に惹かれた内容が「CSSを用いた攻撃」です。
 私はWeb開発を行うなかで、もちろん多数のCSSを用意します。Webを本格的に書き始めたころ、友人から「まだそんな書き方してるの?今は違う書き方で書くよ。」と言われたことがありました。その時私はCSS3までに廃止されている機能をいくつも使用してしまっていました。その後、友人のアドバイスを受けて、CSSを書き直しました。  私が書いているCSSは独学のため、不完全な部分も多々あります。この講義で、実際にどのような手順でCSSが利用され、最新のモダンなWebとは何なのかを学びたいと考えています。
 C6「事例と法律」では、事例を的確に解釈し、法律を適用する方法を学びたいと考えています。私は現在、大学の講義にて法律を一部学んでおります。しかしながら、その講義のみではセキュリティに関する法律について詳しく学ぶことはできません。
 セキュリティに関わって生きていく以上、法律について学ぶ必要があると私は考えます。日本で近年問題となった「Coinhive事件」では、神奈川県警による捜査が問題視されました。それにより、予定されていたセキュリティの勉強会が中止になるなど、セキュリティ技術者が活動を自粛するという結果になりました。
 確かに攻撃と防御は表裏一体です。しかしながら、技術者の学ぶ機会が奪われてしまうことは非常に悲しく、この国のIT産業の発展のためになりません。今後、セキュリティの勉強を続けていくためにも、この講義を受講したいと考えています。
 A7「Pythonによるマルウェア検出の自動化」では、機械学習を使ったマルウェア検知について学ぶことができます。マルウェア検知にはパターンマッチング法やビヘイビア法などの検知方法がありますが、近年、難読化が進み、マルウェアの検知は難しくなってきています。
 私は検知方法について少しだけ知識は持っていますが、異なる検知方法でどれだけの差が出るのかを体験したことがありません。機械学習を使ったマルウェア検知では、機械学習の量や質によって検出が左右されることが予想されます。
 これからはそういった検知方法がますます主流になっていくと考えられますが、セキュリティ・キャンプ終了後に自分のWebサービスに実装するためにも、機械学習を使ったマルウェア検知の具体的手法とその課題について深く学びたいです。

(しかしながら、実際にはE4、B5、A6、A7を受講した...。)

選択問題

問1

Q. 「1000万人が利用するTwitterのようなタイムラインサービス」をあなたが開発することになったとしたら、予算はあるとして、どんなアーキテクチャで設計しますか?具体的に利用するミドルウェアやライブラリまで思い浮かぶ人はそこまで踏み込んで書いてください。

A. まず、想定するプラットフォームはパソコン・スマートフォンタブレットの3種類を主に想定します。ブラウザでの利用はもちろん、各プラットフォームに適したアプリケーションが必要であり、それらの開発も行います。
 そして、そのようなタイムラインサービスに必要な機能として、大きく分けると「ログイン機能」「投稿をPostする機能」「投稿を見る機能」が必要になります。
 「ログイン機能」について、Twitterではツイート一覧取得などの読み込みのみOAuth 2.0が利用でき、ツイートの書き込みなどにはOAuth 1.0aを利用していますが、他サービスとの連携を考慮するとOAuth 2.0やOpenIDを用いります。
 「投稿をPostする機能」「投稿を見る機能」については、投稿を公開する範囲を適切にユーザが設定できるようにしたいです。
 Twitterでは興味のない情報が流れてくることが多々あります。これは例えるならば、Twitter内ではどのユーザも国の区別が存在しないTwitterという星で生活しているからです。
 対して、Mastodonというタイムラインサービスでは、インスタンスという単位でMastodonという星を区切って国を作り、その国のなかでユーザは生活しています。また、ユーザはその国(インスタンス)を超えて他の国(インスタンス)のユーザと情報を共有することも可能です。
 両サービスを比較すると、ユーザが属している単位が違うため、流れてくる情報も変化します。
 Mastodon内をMastodonという星とインスタンスという国に例えましたが、私が開発するならば「もう少し情報共有の幅を階層化」したいと考えます。
 例えば、タイムラインサービス内を市区町村、国、世界、星のように広げるのです。そうすることでユーザが得られる情報の広さと情報の濃さに、更に柔軟性を持たせることができると考えます。
 少し話は変わりますが、タイムラインサービスのユーザー数1000万人という数は非常に大きく、このようなサービスは災害等の非常時には災害伝言板のような役割も持ちます。実際、2011年に発生した東日本大震災や2016年に発生した熊本地震の際にはTwitter等のタイムラインサービスが様々な形で有効活用されてきました。
 しかしながら、そうした場合にはデマも広がりやすく、熊本地震の際には「動物園からライオンが脱走した」といったデマも拡散されてしまいました。
 ユーザが混乱に陥っていると、そうしたデマも拡散されてしまい、さらに混乱を招いてしまいます。
 それを防ぐ為に、ユーザの反応から投稿のデマを発見し、ユーザが情報を共有する際は「デマではないかという警告」を行う機能がなどで必要だと考えます。
 また、セキュリティ観点・非常時観点から、サーバを1カ所に全て設置することはよろしくありません。サーバは分散して設置するべきであり、また、ロードバランサや自家発電装置などを有効活用する必要があります。

問2

Q. クラウド上のインフラやサービスや技術的仕様から、1人目の社内のシステムおよびセキュリティ担当として、どのように組織的な設計をしていくか自由に書いてください。組織的にスケールする構成やフレームワーク、優先順位などを検討したうえで、なぜそういう設計にしたかを自分なりの言葉で説明してください。

A. 私がそのような立場になった場合、まずAWS(Amazon Web Services)を用いることにします。「1人目の社内システムおよびセキュリティ担当」ということで、これから大きく成長していくシステムだと考えられます。
 まず、最小構成として
Amazon EC2(仮想サーバ)
Amazon Aurora(RDS)
Amazon S3(ストレージ)
・Elastic Load Balancing(ロードバランサ)
Amazon Route 53(DNS)
Amazon Certificate Manager(SSL/TLS証明書用)
を使用します。
 AWSには様々なRDSが存在しますが、ここではAmazon Auroraを選択しています。これは、MySQLPostgreSQLに互換性があり、ストレージシステムが分散型であるからです。Multi-AZ構成にすることで、異なるアベイラビリティゾーンにレプリケーション可能であることは、大きなメリットです。
 また、最小構成にロードバランサであるElastic Load Balancingを組み込む理由として、負荷分散だけでなく、WebサーバをInternet Gatewayを通じて直接公開することが無くなるということが言えます。EC2は異なるサブネットに複数用意することで、冗長性の確保を行います。
 次に、
Amazon Cloud Front(SDN)
AWS WAF(WAF)
Amazon GuardDuty(脅威検出)
を使用し、キャッシュの利用による高速化やWebサーバの保護を行います。
 さらに、
AWS Auto Scaling(自動的なスケーリング機能)
Amazon ElastiCache(キャッシュのデプロイ・運用・スケーリング)
・Fluentd(ログ収集用)
を使用し、急激な負荷やセッション管理に対する対策を行います。
 最後に、
Amazon CodeCommit(ソース管理)
AWS CodeBuild(ビルドサービス)
AWS CodeDeploy(デプロイの自動化)
AWS CodePipeline(パイプラインリリースの自動化)
Amazon Elastic Container Service(コンテナオーケストレーションサービス)
Amazon Elastic Container Registry(Dockerコンテナレジストリ)
Amazon Athena(データ分析)
Amazon QuickSight(データの可視化)
を使用し、高速にデプロイ可能な環境と集積したデータの有効利用を可能にします。
 私がこのような設計にした理由として、安全性をいち早く確保するという目的があります。そこで、最小構成の後、安全性を確保しています。また、先述したようにRDBはMulti-AZ構成にすることにより、冗長性を確保しています。データセンターが被災するという可能性は低いと考えられますが、万一に備えた構成をすることが大切だと私は考えています。

問3

Q. XSS (Cross-Site Scripting) とは何か、自分の言葉で説明してください。またあなたが Web サービスを開発・運用するとしたら XSS 攻撃に対してどんな対策を取るかを、できるだけ多くの視点から考え、思いついたことを教えてください。

A. 各種XSSを他のものに例えて説明した。また、XSS防止のための適切なフォームについて考察したり、XSSフィルタやCSPを用いる理由を書いた。

問4

Q. OpenIDやOAuthといった技術を使ったアプリケーションのメリットとデメリットについて回答してください。なお、FacebookTwitterなどのソーシャルログインを実装したことがある場合には、その環境(ライブラリやフレームワーク、開発言語など)と開発してみて感じたことを自由に回答してください。

A. メリットとして「簡単に様々なAPIを利用できる」「クライアントは自身のクレデンシャルとユーザのトークンのみを管理すればよく、仮にクライアントのいずれかから情報が洩れても、リソース所有者のクレデンシャルが外部に知られない」「ユーザが1つのアカウントで複数のサービスを使える」といったものがあります。
 また、従来のアプリケーションと比べて、「大きな情報拡散能力を持つ」と言えます。
 例えば、スマートフォン向けのゲームを開発したとして、ステージクリアした際にスコアをそのままSNSで投稿できるようにすると、ユーザにそれほど手間をかけさせることなく世の中に情報を拡散することが可能となります。
 デメリットとしては、認可サーバやリソース側について「仕組みが複雑になる・更にセキュリティの責任を負う・攻撃が集中する」といったものがあります。また、仮に利用中のどれか1つのサービスのアカウント情報が流出した場合に、パスワードリスト攻撃によって短時間で複数のサービスで情報が流出することが懸念されます。
 そのため、認証の際にOTP(One Time Password)を用いたり、指紋などのバイオメトリクス認証を用いて強固な認証を行う必要があります。
 共通問題で既に書かせて頂きましたが、Python3を用いたアプリケーションの一部でTwitterのログイン/ダイレクトメッセージへのPOST機能を実装したことがあります。その際、ライブラリはrequests_oauthlibを用いりました。
 TwitterはOAuth 2.0にはツイート一覧取得などの一部のみ対応しており、OAuth 2.0に対応するソーシャルログイン実装とは少し異なりますが、比較的簡単に実装ができたと感じました。しかしながら、仮にこのクライアントが悪意のあるクライアントだった場合は脆弱なのではないかと考えました。

問5

Q. コンテナや関連技術を使って今からクラウドホスティング、マネージドサービスを作る場合にどういう設計にするかを自由に書いてください。設計の際には大規模にスケールすることとセキュリティをどう担保するかを検討の上、自分らしい創意工夫をひとつ以上明示してください。

A. まず、多数の国に分散させた複数のリージョンを用意し、各リージョンにはIP-VPNなどを用いた相互アクセス可能な複数のデータセンターを設置します。データセンター内では、VPC(Virtual Private Cloud)を用いてユーザごとに分離したネットワークを構築します。
 VPCの中には必要に応じてパブリックなサブネットとプライベートなサブネット構築します。これにより、公開・非公開する情報を分けることができます。各サブネット内にはコンテナを用いてデータベースサーバやWebサーバ機能などを構築することでき、ユーザは必要に応じて機能を縮小・拡張可能です。
 VPCをインターネットに接続する場合はInternet Gatewayを通じてアクセスします。IPv6を用いる場合はIPv6専用のInternet Gatewayを使用します。また、プライベートなサブネットに属するサーバは直接インターネットにアクセスすることはできない為、必要な場合はパブリックなサブネットに設置したNAT Gatewayを通じてアクセスします。ユーザがオンプレミスなネットワークとVPCを接続したい場合は、VPG(Virtual Private Gateway)を通じてアクセスします。
 従来であれば、ストレージサービス、サーバ機能提供サービスといった具合に機能ごとにサービスを分ける必要がありました。しかしこのような形であれば、マイクロサービスアーキテクチャの考えを基に、クラウドサービスという大きな枠組みの中に複数のサービスを存在させることができます。
 これらのサービスではユーザから大量のデータを預かることになります。サービスの性質上、特に重視すべきことは可用性と安全性だと考えます。日本では毎年多くの地震などの自然災害が起き、その被害を受けた場合、サービスが利用できない期間が長期間に及ぶことが予想されます。そのため、多数の国にリージョンを分散させることが必要となります。また、分散ファイルシステムを用いて、リージョン間でファイルを分散させることで、高い安全性が得られます。
 一般的にデータセンターは地上に設置しますが、私はそのいくつかを人工衛星内に設置したいと考えます。
 人工衛星内にデータセンターを設置するメリットとして、人工衛星で得られる情報を瞬時にバックアップし、人工衛星局を通してそのままユーザに提供することが可能になります。また、地球などの惑星で起きた災害の影響を受ける確率は低く、地上に存在するデータセンターが使用困難になった場合でも使用可能です。  このように多数のメリットがありますが、私は人工衛星で得られるデータをそのままユーザに提供するだけでなく、「データマート・データウェアハウスとして提供する」ことも創意工夫として視野に入れています。
 人工衛星には気象衛星・測位衛星などの種類があり、それぞれのデータには様々な活用方法を見出すことが可能です。例えば、気象衛星で得た気象データを基に、「小売店で販売する商品の入荷量を制御する」ことや、測位衛星で得たGPSデータを基に「道路渋滞を回避する」ことが可能です。
 ただクラウドホスティング、マネージドサービスを作るのではなく、人工衛星から得られるデータ提供を組み合わせることで、「顧客にとってより価値あるサービスが生まれる」と私は信じます。

(キャンプ応募の時期に、丁度大学の講義にて無線局について学んでいたので、人工衛星局を織り交ぜたら面白いのでは?と思ったのが始まり。応募課題を書いている途中で調べたところ、海外ベンチャーが既に構想していた[1]。そりゃそうだ。)

www.bizcompass.jp

問6

Q. UNIXpingやtraceroute、dig、vimemacsといったコマンドの利用経験があれば、それをどのようなときにどのように使ったか、使ってどのように考えたかを教えてください。また、DNSサーバやルータの設定経験があれば、どのような理由で設定したか、どのように設定したか、設定してどのように考えたかを教えてください。

A. vimを多少使った経験、スループットについて、CISCOルータの設定経験について書いた。

問7

Q. 「セキュリティ」は幅広い分野から成り立っていますが、その中で自分がもっとも興味があるテーマについて、『好きなだけ』書いてください。

A. 私がセキュリティで最も興味があるテーマは「Webセキュリティ」です。セキュリティの中のWebセキュリティとはいえ、非常に幅広く、奥深い分野であり、今後も急速に発達し続けると考えられます。
 それは、Webセキュリティの歴史はインターネットの歴史といっても過言ではないからです。古典的なセキュリティといえばソーシャルエンジニアリングですが、Webセキュリティはインターネットが無ければ生まれませんでした。インターネットの先駆けとなるARPANETが生まれて約50年が経ちますが、インターネットの成長とともにWebセキュリティは成長し、Web開発者とクラッカーの戦いが繰り広げられてきました。
 私がなぜ「Webセキュリティ」に興味があるのかと申しますと、私が現在Webサービスを開発しており、そのなかでWebセキュリティ対策を講じる必要があるからです。過去、静的なWebサイトや、私個人のみが使うためのWebサービスはいくつか開発してきました。しかし、動的なWebサイトを用いた一般に公開するWebサービスを開発したことがありません。
 今までの開発と勝手が違う部分も多々あり、試行錯誤の開発を行っています。昔、ある方から「セキュリティと攻撃は表裏一体」と言われたことがありますが、開発していくなかで「まさにそうだと」実感しています。
 2011年、PlayStationNetworkにて大規模なDDoS攻撃・個人情報流失が発生しました。当時私はゲームに夢中で、同サービスを利用しており、被害に合いました。私が「Webセキュリティ」について意識するようになったのはこの事件がきっかけです。その後、そのような被害に合うことはありませんでしたが、「自分のWebサービスでああいった被害を起こさないためにはどうしたら良いのだろう」という考えの結論には至っていません。
 私はこの世でいつでも完璧なセキュリティは存在しないと考えています。仮に「今、最強のセキュリティ」と言われているものがあったとしても、「数年後には破られてしまう」と考えられるからです。  例えば2017年、GoogleとCWI Instituteが「SHA-1の衝突に成功した」と発表しました。ハッシュ値の計算は非常に膨大ですが、計算機の計算能力向上は凄まじく、将来的にはクラスタを用いらずとも、既存のハッシュ関数は無意味になるでしょう。
 今後、Web開発者とクラッカーの戦いはますます激しくなることでしょう。Web開発者はモダンなWebを追い続け、クラッカーはそのモダンをレガシーへと変えていく。この戦いに終わりはあるのでしょうか。
 私の大学の友達に、セキュリティ・キャンプ全国大会を卒業して脆弱性報告を行っている友達や、個人で案件を取ってきてWebサービスの開発を行っている友達がいます。私はまだ知識・技術ともに彼らには敵いません。「ある程度Webセキュリティに触ったことがある」と言いましても表面的でしかなく、「本質的に触った」とはとても言えません。
 まだまだ未熟な自分を脱却する一歩として、このセキュリティ・キャンプ全国大会2019に参加したいです。
 Webセキュリティは常にモダンを追いかける必要がある分野であり、移り変わりの激しい分野です。私はまだ学生ですが、将来的にはWeb開発者として、その移り変わりの激しい分野の中で生きていきたいと考えています。

まとめ

 全体的に調べながらの回答となりましたが(特にAWSの部分)、ある意味独創的な回答ができたと思います。しかしながら、キャンプ修了後に読み直すと、「何言ってんだお前」という部分が多々あり、もう少し技術寄りな回答ができるようになりたい。実際の文章量としては、回答だけで15,000文字程度でした。

引用

セキュリティ・キャンプ全国大会2019に参加してきた。

セキュリティ・キャンプとは

 「セキュリティ・キャンプ」は、学生に対して情報セキュリティに関する高度な技術教育を実施し、次代を担う情報セキュリティ人材を発掘・育成する事業です。2004年に開始され、現在は全国大会を首都圏で毎年1回、2013年に開始された地方大会を毎年各地で10回程度開催しています。 全国大会、地方大会とも、参加するには応募課題を提出し、書類審査に通過する必要があります。[1]
 全国大会参加者には、地方大会であるミニキャンプ経験者も多くおりましたが、私は参加しておりません。

応募課題について

 応募課題については別の記事に書きたいと思います。書いたらリンク貼ります。追記、8/26日に書きました。(本当は先に応募課題の記事書くんでしょうけども)   buuuuuuun3939.hatenablog.com

参加したコースについて

 私はBコース(開発と運用トラック)に参加しました。私自身、Webに興味を持って開発をしているので、こちらのコースを選択しました。今年のプログラムはこちら。[2] www.ipa.go.jp

事前課題について

 全国大会参加決定後、事前課題があります。こちらについても別の記事に書きたいと思います。追記、8/31日に書きました。

buuuuuuun3939.hatenablog.com

Day0

 人によっては前泊する為(遠方からの参加等)、Day0(前日)から参加の方もいるようでした。私は都内在住なので、Day1からの参加です。私のDay0は、キャリーケースに必要なものを詰めてベッドインした後、朝まで寝れず、The BeatlesのHelp!を聴いたりしながら不安と格闘した1日でした。

Day1

 初日です。会場であるクロス・ウェーブ府中に12:00~12:30に集合です。不安と不眠もあって具合が悪かったです。会場最寄り駅である北府中駅からGoogle マップ先生にお世話になったのですが、クロス・ウェーブ府中の隣に建っている建物を会場だと勘違いしてしまいました。入口の警備員さんに場所を尋ねたところ、「来たばかりで分からない」という返答。すぐ隣で良かったです。

f:id:buuuuuuun3939:20190820034307j:plain

 入口で受付した後、まずは昼食。

f:id:buuuuuuun3939:20190820041303j:plain

セキュリティ・キャンプはご飯が美味しいです。昼食と夕食は2,3種類から選べるのも嬉しかったですね。
 昼食後、開会式と全体講義が行われました。全体講義では、倫理に関する講義やセキュリティ基礎、コミュニティ活動に関する講義を受けました。私はIT系のコミュニティに属していないので、コミュニティ活動に関する講義は特に新鮮味がありました。

f:id:buuuuuuun3939:20190820042105j:plain

 夕食の後、交流の為のデザートタイム。デザートタイムは立食パーティーみたいな感じでした。名刺交換大事です。初日からもっと交換するべきでした。
 その後はLT大会とグループワーク。LT大会では、チューターや講師の方々の発表を見ることができます。大部屋で一度に複数のLTが行われるので、好きな発表を見ることができます。グループワークはキャンプ5日間を通して行われるプログラムで、今年度はキャンプ終了後に取り組むことを見つけることが目的でした。やりたいことが共通している人達でグループを組み、具体的な内容を詰めていきました。私はWeb開発をやりたかったので、Web開発したい人達とグループを組みました。

f:id:buuuuuuun3939:20190820224411j:plain

 参加者一人一人に個室が割り当てられます。ベッドはこんなかんじ。枕元に時計とラジオが埋め込まれていました。私はラジオを聴くことが多いので、ラジオがあるのは地味に嬉しかったですね。寝る前にちょっと聴いたり。ちなみに、キャンプでは毎日、水とスポーツドリンクが配布されます。食事ではパックジュースも。講義中も自由に飲んでいるのですが、日に日に部屋の冷蔵庫に貯まっていきます(笑)私はキャリーケースに何本か入れて帰ってきました。

Day2

 選択コースの私は、この日は専門講義です。とはいえまずは朝食。朝食はキャンプ中、ビュッフェです。朝はパン派なのでフレンチトーストやミニクロワッサンをメインに食べてました。クロス・ウェーブ府中のミニクロワッサンはめっちゃ美味しいので来年も同会場であれば、参加者の方には一度食べて頂きたい。
 そして講義。午前は座学、午後はハッカソン形式で「クラウド時代における大規模分散Webシステムの信頼性制御」について学びました。
 座学では最初にSREについて学んだのですが、直近の信頼性を重要視して変更をデプロイできなくなった結果、運用の負荷が大きくなるというのは、日本企業による開発運用では多いのではないかと思いました。確かに信頼性は重要ですが、100%というのはまず難しいですし、「一時的な信頼性低下を許容してSLOを過剰達成しない」ことはなるほどと思いました。こうすることでデプロイする頻度(速度)が最大化するわけですね。個人的にはDevOpsとSREの区別をまだ明確にできていないので、そこを詰めていきたいです。両者に共通する部分が多いですし。

f:id:buuuuuuun3939:20190820225738j:plain

 ここでお昼。炭水化物+炭水化物という組み合わせが度々存在するので、小食な方は回避すると良いかも。
 午後のハッカソンでは、Twitterのようなタイムラインアプリケーションのサンプルをグループごとに改良・実装していきました。大規模なユーザ数を想定し、どのように適切な情報取得を行うかなどといったことを議論しながら進め、最終的に発表しました。

f:id:buuuuuuun3939:20190820230017j:plain

 想像以上にハッカソンが難しい。というわけで夕食をさっさと切り上げて開発に戻りました。しかしながら、私はほとんど実装に貢献できなかったので、自らのコーディング力の無さを思い知りました。コーディング力が欲しい。
 この日はグループワークが無く、ホームルームの後は教室解放。教室解放では他トラックの教室に行って交流することができます。話しているとあっという間に時間が過ぎてしまうので、教室解放の時間はもう少し欲しかったですね。

Day3

 例年この日くらいから寝坊する方が増えるらしい。ちなみに寝坊すると看護師が飛んでくるらしい。朝のホットティーは美味い。
 この日、午前はE4「クラウドホスティングサービスのセキュリティと運用技術の研究 」、午後はB5「体系的に学ぶモダンWebセキュリティ」を受講しました。
  E4は座学でした。圧倒的スライド数。どのようにして高集積化とセキュリティを両立するかといったことや、Pod関連の話がメインでした。DockerやVMを使う機会も多いですが、Podについて私は詳しく調べたことがなく、新鮮でした。コンテナランタイムの違いなんて意識したことがなかった。

f:id:buuuuuuun3939:20190821010049j:plain

 お昼はカレー。このカレー、初日のカレーよりめっちゃ辛い。たまたまAコース(脆弱性マルウェア解析トラック)チューターの方々と一緒に食事しておりましたが、ひーひー言いながら食べてました。
 E5は座学でOrigin等の話を受けた後、ハンズオン形式でCSS Injectionやったりしました。ぶっちゃけ難しかったです。考え方は合っていたのに最終的な目標であるユーザIDを抜くことができなかった。残念。もっと手を動かさないといけない。

f:id:buuuuuuun3939:20190821012657j:plain

 夕食で気力回復。好物の珈琲も飲んで次に備える。
 Day3とDay4は夕食後、会員企業のお仕事紹介があります。定員に限りがあるので、人気のあるものは抽選となりました。幸いにも私は全て第一希望を聴くことができました。こういう場でないと企業様から直接お話を聴く機会は無いので、嬉しいですね。
 グループワークでは、ヒアリングにてフルボッコされた気がします。というのも、初日にオープンソースなCTFを作ろうという案が出たのですが、現状のCTFのレベルが高いことを知りました。私自身、CTFは高校生時代に個人で少し齧っていた程度なので、知識不足でした。

Day4

 夜中にスライドを読み込んだりPython書いたりしていたので少し遅い7:30に起きました。講義は8:30からなので私的には十分な時間です。朝がっつり食べる人じゃないので。
 この日、午前はA6「マルウェアの暗号処理を解析しよう 」、午後はA7「Pythonによるマルウェア検出の自動化 」を受講しました。お前本当にBコース受講者か?という気がしてくる。しかしながら、普段扱っていない領域を学べるのも、選択コースの良さだと思います。
 A6では、マルウェアの暗号処理とその特徴を学び、IDA上でその処理を見つけるということを行いました。IDA自体あまり触ったことがないので、この講義は苦戦しました。暗号化のプロセスを理解しても、それをIDA上でなかなか見つけられないという...。隣の方はバンバン見つけてました。

f:id:buuuuuuun3939:20190821021106j:plain

 お昼は冷しゃぶ。やっぱり夏はさっぱりしたものがいいですよね。うまいの一言に尽きます。
 A7は講義のタイトル通り、Pythonマルウェア検出の自動化を行いました。なかなか検出率が上がらない。アルゴリズムをよく理解して使わないといけませんね。数学的知識が不足していると実感しました。キャンプ中、Zコース(アンチウィルス実装トラック)にお邪魔したのですが、検出率が凄かったです。あとTP(True Positive)も。集中コースは精鋭揃いだと感じました。実際、Day5の成果報告も凄かった。

f:id:buuuuuuun3939:20190821022350j:plain

 最後の晩餐豪華。お肉美味しい。鯖に骨が無くて良い仕事しているな~と個人的に思いました。デザートを餡かけ豆腐的なものと勘違いして食べたのは内緒。
 夕食後、ラストナイトイベント。会員企業様や講師の方々から提供して頂いたグッズや本の配布会です。例年は若い順みたいですが、今年はグループワークのグループ名のハッシュ値順でした。こういうところもセキュキャンらしくて面白いですね。

f:id:buuuuuuun3939:20190821023137j:plain

私はシェル芸本などを頂きました。作者の方にTwitterで「(変態)シェル芸人になってよ!」と言われたのでシェル芸人目指します。
 本日も会員企業のお仕事紹介の後、グループワークです。グループワークでは、自分たちのグループが根本的に何をしたいのか、何を重要視しているのかを再度話し合いました。

Day5

 いよいよ最終日。あっという間です。朝からグループワークの後、写真撮影をして講義の成果報告です。集中コースの成果報告が凄かった。コンパイラ自作してセルフホストしてたり、前述の通り高精度なマルウェア検出の自動化やってたり。

f:id:buuuuuuun3939:20190821024528j:plain

 最後の最後までご飯が美味しい。4泊5日という日程において、ご飯の美味しさってやっぱり重要だと思います。
 昼食の後も成果報告をして、閉会式です。Bコース講師でいらっしゃる、仲山さんが前日からおっしゃっていた「アウトプットしないのは知的な便秘」という言葉が個人的に非常に刺さりました。

まとめ

 振り返ってみると、やはりあっという間なんですよね。まだまだ受けたい講義もありますし、他の参加者の方とも交流し足りない。いつも大学で過ごしている日常とは違う非日常。それだけに朝から夜まで刺激満載で、自分の実力不足を実感し、今後の活動の源にもなりました。また、何らかの形でセキュリティ・キャンプに関われればと思います。

引用

https://www.ipa.go.jp/jinzai/camp/index.html [1]
https://www.ipa.go.jp/jinzai/camp/2019/zenkoku2019_program_timetable.html [2]