Honkitを使う
Honkitとは?
そのため、Honkitという名前で作者の方がgitbookからforkして開発を続けているドキュメントページを作成するツールです。
インストール方法
NPM or Yarnを使ってhonkitをインストールします。
$ npm init --yes
$ npm install honkit --save-dev
Create a book
honkit initコマンドでセットアップできます。
$ npx honkit init
honkit serveコマンドでプレビューができます。
$ npx honkit serve
ドキュメント
と資料を読むとわかるようにドキュメントが非常に整理されており、使いやすかったです。
gitbookを使っていた方はコマンドがgitbookからhonkitに変わるだけなのでそのまま使うことができます。
あんまり書いてないですがhonkitを使ってみたと感想の記事でした。
過去、現在、未来、Helloクリエイティブコミュニティアドベントカレンダー
これは学生クリエイティブコミュニティHelloのアドベントカレンダー、22日目の記事です!
テーマ
『過去or現在or未来への自分へ』だそうです。
こういうテーマでブログを書いたことがないので気恥ずかしいです。
当初はテーマ自由だと勘違いしており、好きなラッパーについて書こうかなと思っていましたがなんかそういう感じではなかったためやめました。
他の人の記事を読むと雰囲気がわかる。。
テーマ難しいね。
テーマの中ではとりあえず現在を頑張ろうと思います。必死にアドカレ書いてます。
字数稼ぎたい。画像とか貼りたい。
といっても現在がんばっていることについて書くこともないので
とりあえずHelloに入った動機でも言います。
Helloに入った動機
プログラミングやIT技術の面で力になれるかと思った。何かのイベントの配信やサイト制作など。
また、コミュニティ運営やイベント開催に興味があったから。IT分野では働いてからコミュニティ活動をするため、他分野のイベントやコミュニティに参加したかったからです。
Helloに入ってから
えぞ財団とのイベントに関わらせていただきました。
準備期間が短く大変でしたがHelloの方々はイベント運営に慣れており、意見や考えをきちんと持っているなと感じました。同じようにやろうとしても自分が運営しているcistLTではできなかっただろうと思います。
Helloにせっかく入ったので何かしないとという気持ちがあったため、入った動機につながる活動が1つできてよかったです。
ありがとうございます。
来年
もう卒業なのでHelloで活動することがなさそう。
あとなんか1回くらいやれたらいいなあ
おわり
Next.js 再々入門
こちらはLOCAL students Advent Calendar 2020 21日目の記事です!
ネタなににしようかまよってまよって締め切り日の本日21時からNext.js再々入門しました。
入門1回目はlocalhost:3000でWelcomeページを表示し、ルーティングがReact.jsより簡単だああということを理解してやめていました。
2回目はNext.jsのTyepScriptで環境構築して1回目同様Welcome to Next.jsを見てうごいた。でおわりました。
そろそろチュートリアルぐらいは終わらせたいといういことで再々入門します。
といいましても本日21時半から開始したため、これはまた途中で投げ出すでしょう。
フロントエンドの楽しさも最近感じてきたので頑張る。
Nex.jsチュートリアル
クライアント側のナビゲーション
ブラウザがページ全体をロードせず、クライアント側のナビゲーションが機能していることを示しています。
コードの分割とプリフェッチ
Next.jsはコード分割を自動的に行うため、各ページはそのページに必要なものだけをロードします。つまり、ホームページがレンダリングされると、他のページのコードは最初は提供されません。
これにより、数百ページある場合でもホームページがすばやく読み込まれます。
Client-Side Navigation - Navigate Between Pages | Learn Next.js
とかやっててまとめようとしましたが、ここでおわります。
後日追記する。
※追記↓一応おわった
seccampに参加したい人のための、参加課題の解き方【コンテストとワークショップトラック】
Security Camp20というものに参加しました。
この記事は応募時に解いた課題の内容を解説していきます。
最近ブログやら書きものが多くて大変です。💦
ちゃんと文章を残していないため、どんな内容を書いたかの大枠の説明となっています。申し訳ございません。本当に悔いです。
記事について
seccamp'20は終了後もグループで続けてほしいという考えがあります。そのため、住んでいる地域が近い参加者同士でグループ分けをされました。今回の記事はそのグループの1つ「電源50Hz」メンバーが週替りで書く記事となっています。
問1
本コースが求める人物像を以下の通りです。それらをアピールできるエピソードを書いてください。
・ セキュリティ系イベントの設計や運営に興味がある
・ 低レイヤーに興味があり手を動かして、実際に現象を確かめてみないと気が済まない
・ 自分が得た知見をより多くの人たちと共有しようとする
・ セキュリティ系イベントの設計や運営に興味がある
これはハードニングやCTFにでる機会があり、自分でもそういった活動をしたいと思っているなどのことを書きました。
SC4Yやmh4yに参加する中で本学の先生の活動をみて刺激を受けたのが一番大きいです。
大会運営がしたいんだ!とここを一番あつく書いてました。
実際運営として核となることはできてないのが今回のキャンプの反省です。
・ 低レイヤーに興味があり手を動かして、実際に現象を確かめてみないと気が済まない
サーバ、インフラが好きで実際にサーバ立ててネットワークやログ監視の勉強してる。
インフラのアーキテクチャとかも勉強してます?や
セキュリティの脆弱性をやられアプリをつくりながら攻撃防御を学んでいる。また、その教材の作成をしている。(CTFのビギナーレベル)
研究室の先輩が作ったVM貸出サービス(Qemu KVM)を個人でも触ってみて基盤部分だけ同じ環境を作成し勉強ていた。
あとは、自作Unixコマンドつくったり...。
まあこのように自分は特に技術で尖ったことはしていないため、あんまり書けることがなかったです。
自作系(OSやコンパイラ、プロトコル)などが話せたら強いのかな?
・ 自分が得た知見をより多くの人たちと共有しようとする
LTサークルの運営をやっています。学内でですが勉強会もやっています。ブログを書いています。
この3つのごり押しをしました。
LT、勉強会、ブログはすべて知見共有につながると思いますのでこの経験がよかったかなと感じています。
教え合いや学び合いの文化がこの業界の個人的に一番好きな部分です。
問2
あなたのスキルを示すエピソードを書いてください。
これはセキュリティに関わらず自分がやってきたことベースで書きました。
どこそこのインターンに行ってた。長期エンジニアバイトしていた。
などです。
具体的には
- PHPでゲームのサーバサイド開発
- PHPで音声認識APIやライブラリを使ってた
- PythonでTensorflowを使いチャットボットの開発
- インフラのアーキテクチャコンペでた
- データベースサーバの冗長化してた
インターン以外では 大学のゼミ的なものでJavaを使ったシステム開発や、ゲーム開発をしていたなどです。
自分は大会などで賞をもらった経験がないため、不安でした。
最後に
もっとちゃんと書けよという言葉が飛んできそうですがお許しください。
園児ニアでもセキュリティキャンプに参加できたので気負わず参加登録していただければと思います。
技術は1日にしてならずだと思いますのでセキュリティキャンプを機会にまた頑張っていきたいです。
おわりです。
SecurityCamp online 2020に参加しました!
- SecurityCamp online 2020とは?
- [A1]ロバストプロコル・オープンチャレンジ運営会議
- [A2]暗号アルゴリズムのFPGA実装
- [B3]クラウド時代における分散Webシステムの構成とスケーリング
- [A4]ワークショップで学ぶ傍受対策
- [C5, C6]実践・難読化バイナリ解析(前編・後編)
- [A7]ワークショップで学ぶ偽装通信対策
- [A8]ロバストプロコル・オープンチャレンジ大会
SecurityCamp online 2020とは?
プログラム↓
セキュリティキャンプ全国大会2020の参加記事ですが、すべてまとめることが大変だったためかなりざっくりしています。ご容赦ください。
2020はコロナウイルスの影響もあり、オンラインで行われました。
オンラインのため、期間は約1か月半でした。
[A1]ロバストプロコル・オープンチャレンジ運営会議
- 学んだこと
運営会議(前半)
・レギュレーション
・どういうファイルを送受信させるか
・照合方法
・ノイズのアルゴリズム
・大会当日(A8, 11/22)へ向けて
・タイムテーブル
・参加者への連絡
・大会の周知・観戦の呼びかけ
・コンテストを盛り上げるための工夫
・その他
・運営する上で起こりそうな問題など
などの準備をキャンプ生で一から考えて行いました。
準備に必要な項目や決めごと、重点を置くものなどの決め方を学ぶことができました。
- 感じたこと
運営する上で起こりそうな問題をひたすら探しつぶすことが大変に感じました。
[A2]暗号アルゴリズムのFPGA実装
- 学んだこと
暗号アルゴリズムのAESのCのソースコードとFPGAソースを事前に示します。ゴールは特に設定しませんが、CのソースコードからHDLに書き替えるスキルの習得を第一目標とします。特に重要な点はアルゴリズムの中から並列化できる個所を見つけだし、ハードウエア実装することでどの程度の高速化が期待できるか見積れる知見です。
AES暗号のFPGA実装をしました。
ボードがないため、シュミレーター使いました。
AESはブロックタイプ16byteずつ平文から暗号文にします。
1つのラウンドに4つの処理があります。
AESは前後に依存関係があるのでFPGA(ハードウェア)にもっていくには並列化をほどこす必要があります。
どんなに高速化を図ろうとも43ステップは必ず消費します。
・subbyte
AES用の変換テーブルがあるので元のバイトごとに変換します。
16✕16で256
この変換テーブルの表は行列計算によって導かれたものです。
・shiftrows
1列目ずれなし
2列目 1つずれ
3列目 2つずれ
4列目 3つずれなので右に1つずれ (4マスなので)
・Mixcolumns
有限体演算、ガロア体とかの話です。
今回はハードウェア実装のときはLookuptableを使っているため、詳しい説明はなかったです。
- 感じたこと
実機を触れたらもっとよかったなと思いました。
シミュレーションだけでは想像しづらかったです。
[B3]クラウド時代における分散Webシステムの構成とスケーリング
- 学んだこと
サーバレスなアプリケーションの作成
Azureを使用したアプリ開発(SNSのようなもの)、モブプログラミングで行いました。
自分達はスケーリングに関して時系列のパーティショニングを考えてました。
以下の理由から時系列でも大丈夫であることを確認しました。
「実際にはほとんどのクエリは、より新しい情報へのバイアスがかかっている」(同)からだ。ほとんどの人のリクエストは最新のパーティションに対するクエリで完結する。すべてのユーザーがアクティブなわけではないため、「あるユーザーの直近のつぶやき20件」は、複数のパーティションにさかのぼっていくことになるが、それでもこの戦略によりアクセス時間の平均は事実上O(1)となっているのだという。
- 感じたこと
座学と実装が講義時間に含まれていたため、実装の時間が少なかったです。
そのため、チームごとに行ったスケーリングの議論と実装の両方が駆け足になってしまいました。講義タイトル通りスケーリングであるのならばそこをもっと深掘りたかったです。
逆に、自分の実装力を磨かねばとも思わされました。
[A4]ワークショップで学ぶ傍受対策
LANにおける盗聴の検出とその防止方法は一般に物理層よりも上位層で行われています。これは、一般的に知られている盗聴方法がデータリンク層(L2)またはその上位層に対する攻撃であることが多いためです。 この講義では、今まで見過ごされがちなネットワークの物理層の盗聴方法に注目します。またWiFiに於いても簡易的な方法で電波の検出方法を紹介します。講義前半は各自手を動かして ワイヤータッピングプローブやWiFi検出器を製作し実際のワイヤータッピングを体験いただきます。その後この技術を用いた攻撃ユースケース(シナリオ)を設定してもらい、そのユースケースの防御手段を提案頂き、物理層の脆弱性とその対策について理解を深めます。
- 学んだこと
LANとWiFiをイヤホンで聞き、Wiresharkでパケットを確認しました。
ネットワークの物理層による盗聴が体験できました。
- 感じたこと
講義概要(理論)の説明がなく理解があまり追い付かなかったです。
LANを聞くやパケットで見ること自体はできましたが、こういうことができるのかあという。なんというかもっとこうすればいいやん!が思いつかないです。うん。
また、講義で使用する機材を個人で準備する必要があり、すべてキャンプ側で行ってくれるとありがたかったです。
家にいるかどうかの判断ができると最後の攻撃シナリオの発表で行っている方がおり、着眼点が素晴らしいなと感じました。
[C5, C6]実践・難読化バイナリ解析(前編・後編)
全国大会選択コースC5「実践・難読化バイナリ解析(前編)」では、主にマルウェアにおける難読化とその解除手法について、ハンズオンを交えながら学習していきます。マルウェアの挙動に触れつつ、難読化することの利益やその類型など、難読化バイナリについての体系的な講義が行われています。 pic.twitter.com/PfGtp3c6sa
— セキュリティ・キャンプ (@security_camp) 2020年11月15日
本講義はGlobal Cybersecurity Camp (GCC) Tokyo 2020で実施した講義「Advanced Binary Deobfuscation」のアップデート版です。
その上バイナリコードが難読化されていたとしたら? ひとたび難読化が施されると、単純な手法ではバイナリを正確に解析できなくなってしまいます。このクラスでは、難読化の原理原則(特にマルウェアで使用される)、難読化コード分析の理論と実践、および難読化解除のための独自ツールの作成方法を学びます。特に、難読化を無効化するための手法として、データフロー分析とSAT/SMTベースのバイナリ分析(例:シンボリック実行)を掘り下げます
- 学んだこと
IDAを使用したバイナリコードの難読化と解除の方法を学びました。(サンプルコードでためしました)
- 感じたこと
コンパイラのフロントエンド バックエンドなど基礎から学ぶことができたため勉強になりました。
[A7]ワークショップで学ぶ偽装通信対策
全国大会選択コースA7「ワークショップで学ぶ偽装通信対策」では、ARPを装った偽装通信をArduino(Atmega328p)で行います。また、この技術を用いた攻撃ユースケース(シナリオ)を設定し、そのユースケースの防御手段を提案します。#seccamp pic.twitter.com/WGDPrusexT
— セキュリティ・キャンプ (@security_camp) 2020年11月22日
- 学んだこと
LAN上はMACアドレスだけどインターネットはipアドレスをつかいます。
arpはMACアドレスとipアドレスの紐づけたそのテーブルをつくるためのものをarpで確認します。(後から来た人とかがわかるように)
arpは46byteだから0埋めする必要があります。
イーサネットのフレームを64byteにするために必要です。
0埋めの部分はインターネットの規格では検知されないため、秘密のデータ
(悪意あるデータ)を送るのがアープコベルトチャネルアタックです。
本来はpcを使いますが、マイコンのようなpoorな性能でもできてしまうというのが本講義です。マイコンのようなpoorな性能なため、家電とかの基盤にチップを埋め込まれるときづかないという怖さもあります。
今回はarduino16MGを10basetの規格で20MGに変えています。
- 感じたこと
受講生の実行環境が異なり、講義の最後まで動かない原因がわからなかったのはもったいないように感じました。
最初に講義概要、その後やってみよう!という形式だったため理論と実践を学ぶことができ非常にわかりやすい講義内容でした。
[A8]ロバストプロコル・オープンチャレンジ大会
全国大会選択コースA8「ロバストプロコル・オープンチャレンジ大会」が行われています。この講義では、選択コースA1受講生が策定したルールにより、各自が開発したプロトコルの性能を競います。さらに可視化システムによって競技の様子を視覚的に把握できます。 pic.twitter.com/6hmKsX04PR
— セキュリティ・キャンプ (@security_camp) 2020年11月22日
- 学んだこと
[4hour = 240min]
[10min] オープニング & 個人戦競技説明
[11min / 1人](前半)個人戦(4人)
-
[2min] オペレータ準備
-
[4min] 競技開始
-
[5min] アルゴリズムの紹介 (裏でランキング更新 & オペレータ後始末)
[5min] 結果発表 & 表彰式
[5min] 団体戦競技説明
[120min] チーム開発
[11min / 1チーム](後半)団体戦(3チーム)
-
[2min] オペレータ準備
-
[4min] 競技開始
-
[5min] アルゴリズムの紹介 (裏でランキング更新 & オペレータ後始末)
[20min] 結果発表 & 表彰式 & 講師・チューターの総評
- 感じたこと
お疲れ様でした。
Hardening2020 H3DXに参加しました!
Hardening2020 H3DX
ハードニング本選に出場しました!
初オンライン!
今回はDXでした。
最近よく聞きます。DX。デラックスではないんです。
大会内容に関しては優勝されたチームの方々や出場者の方のブログがありましたのでそちらをご覧いただきたいです。さすが!
sirabete-manabu.hatenablog.com
自分はハードニング本選の感想を学生目線で少しだけ書きたいと思います。🙇
その前にざっくり結果を振り返ります。
自分のチームは
チーム名 壱ノ型阿吽之呼吸
人数 11名
チームフラッグはかっこいいのを作ってもらったので今後も使うつもりです。(無限列車編よかった。)
結果は?
見込み販売力は3番目でした。
初出場の自分にとっては上出来すぎました!
チームの方には めちゃくちゃ助けていただきました。
とてもやさしく経験豊富な方がおおかったです。準備の何から何までお世話になりました。にもかかわらず、ソフトニングDay寝坊しました。すみません。死んだと思いました。全員揃わないとzoomに入れなかったため、一瞬だけクビにされてました💦 チームの方にはご迷惑をおかけしました。猛省です。
以下ソフトニングの動画です。↓
表彰動画です。↓
感想
学生が参加するメリット
- 最近のセキュリティ情報などがチームの話し合いや競技用のDiscordサーバで聞けた。競技にもでてきた。
学生にはつらい点
- ネットワーク周りの勉強不足が露呈しました。自分の担当範囲ではなかったですが、学生は複数台サーバを触る経験がないため、そこのギャップがあるように感じます。
- エンジニア業務を意識しながらソフトニング面も考慮するのは難しく感じました。ソフトニング面は競技終了後も正直あまりわかってないです。さいわい理解のあるチームの大人の方々がソフトニング面を担ってくださったため、当日はエンジニア業務に集中できました。ソフトニングスキルを磨きたい!が目標でもなかったですがソフトニングの勉強も必要に感じました。(勉強法はソフトニング Dayの動画で振り返るとか?)
- オンラインもあってか競技中反応がしづらかったです。社会人の方にはどうしても気をつかってしまいます。(これは僕個人の問題かもしれないです。)競技中に質問をしても忙しそうとか考えていました。(オンラインによって誰が今どのくらい大変そうなのかが把握できないのが問題)しかし、競技中に手が空いたら『困ってることないですか?』とチームメンバーの方が聞いてくださったのでとてもありがたかったです。そういうのがないとそのまま時間が過ぎていく人もいると思います。(学生は知識不足がゆえに尻込みしてしまうかも。甘え。)
- 他の人がどういう状態とかまで考えられなかったです。自分のタスクに一生懸命で途中から無言なってしまいました。経験の差なのでしょうか。(他の人をカバーできる技術力も備わってないですが。)
学生が参加までにすべきこと
- 当日は忙しいです。そのため、事前の当日Todoリスト(セキュアな設定のコマンド)を手を動かして確認して勉強するのが大切です。Todoリストは参加経験のある方が準備していただいたため、助かりました。なかったらしんどいかも。
- 事前ブログや動画をみて競技概要をたたきこむ。資料公開は1日前なので準備なしでは間に合わないです。(チームの中でこの動画は見といてください。など色々アドバイスを頂けたのはよかったです。やみくもな準備をしなくて済みました。)
- ショッピングサイト部分であればwordpress eccubeをたてていじるのがいちばんいいです。FWなどは環境がないと試せないかもしれません。(チーム1ではFWの設定が試せるよう外部公開されたサーバを用意してくれた方がいました。ない場合はvps、awsの無料枠などで外部公開させるサーバを用意するのがいいのかと思います。)
- マイクロやミニのどちらかの参加経験がないと本選は想像しにくいかもしれないです。そのため、どちらかの参加経験があると好ましいと思います。
最後に
準備から競技を通して、自分からこうしませんか?などという提案ができなかったなと感じています。
一番にそれを感じたのはチームビルディング後です。最初のやりとりがメールだったため、Slackにしたいなと思ってました。しかし、行動に移せなかったです。結局はチームメイトの方が作ってくださいました。自分でやればよかったなと後悔しています。
急ですがまとめますと笑
競技は難しいですが出場を悩んでいるのであれば思い切って参加すべきだと思います。特に学生は出ることで得られるメリットは大きいと思います。
競技を終えてよっしゃ~頑張るぞ!って気持ちより、力不足を感じて落ち込みました。乖離が大きいとこうなりますね。
とはいえ学生のうちに本選に出られてよかったです。貴重な機会をいただきありがとうございます。
僕たちのHardeningはこれから。。。!