zkat’s diary

技術ブログ

Chromeの履歴はSQLiteらしいのでいじってみる

概要 Chromeの履歴はSQLiteで管理されているらしく、容易に中身を見れそうなので試してみました。 自分のChromeの履歴を用いて、どのウェブサイトに頻繁にアクセス(回数、滞在時間)しているか見てみます。 おことわり SQLiteの.schemaコマンドを用いること…

what3wordsをDNSで引けるようにした

概要 what3wordsというサービスを使うと、地球上のあらゆる場所を3つの単語で表せます。 例えば自由の女神の松明の場所はtoned.melt.shipで表せます。 https://w3w.co/toned.melt.ship これを次のように、ドメイン名部分に単語を含ませる形でアクセスできる…

完備化の問題をいくつか解いてみたーその2

概要 拙作の完備化ツールをいろいろ使ってみたメモのその2です。 今回は、簡単な状態遷移図に対して用いてみます。 その1はこちらです。115個の完備化の問題を解いています。 zkat.hatenablog.com やってみた 今回ツールに与える状態遷移図は以下のようにし…

完備化の問題をいくつか解いてみた

概要 先の記事に書きましたとおり、等式の完備化ツールをCommon Lispで作ってみています。 zkat.hatenablog.com このツールを使って、いくつかの問題を実際に完備化してみたいと思いました。 試してみる とは言っても、いい感じの入力となる問題を自分で作る…

Common LispでKnuth-Bendixの完備化アルゴリズムを実装した

概要 Knuth-Bendixの完備化アルゴリズムを実装したツールを作ってみました。いくつかの簡単な問題に対して使ってみながら紹介します。 github.com なお、Knuth-Bendixの完備化アルゴリズムの詳細自体については、こちらのページが分かりやすいです。 www.nue…

Google Chromeの中間証明書失効情報(CRLset)を監視するボット

作りました。 twitter.com

ACMEでサーバー証明書を発行するプロセスを理解する

この記事の概要 ACMEについて 進め方 準備 やってみる Get Directory Get nonce Create account この記事の概要 Automatic Certificate Management Environment(ACME)で証明書を発行するプロセスを理解する為のメモ書きです。 ACMEサーバーを実際に立ち上げ…

クライアント証明書による認証があるウェブサイトでCSRF(Cross Site Request Forgery)は発生するか確認する

結論 発生します。 理由 CSRFは、セッション管理の不備を悪用した攻撃だからです。 認証方式として、クライアント証明書を使っていても、その不備を補うことはできません。 CSRF一般の話になりますが、攻撃者は対象のウェブサイトにアクセス権限(クライアン…

異なるTLD(Top Level Domain)間でKSK(Key Signing Key)を共用している

概要 DNSには、応答の完全性を保つために使われるDNSSECという技術があります。 DNSSECで用いられる鍵の一種であるKSK(鍵署名鍵)について、複数のTLD(トップレベルドメイン)間での共用があることを見つけたのでメモします。 調べ方 まず、トップレベルド…

CTログサーバーのAPIをコマンドラインから実行するツールを作った

概要 CTログサーバーのAPIをたたくコマンドラインツールを作りました。 詳細はこちら github.com 理由 CTログサーバーは、RFC 6962に記載されるAPIを提供しますが、 使いやすいデータ構造で結果を取得することができません。 そこで、crt.sh などのウェブサ…

CRLSetsには何が書かれているか

概要 ChromiumならびにGoogle Chromeが証明書の失効状態を確認するために使っているCRLSetsについて、 中身に何が書かれているのか確認してみたいと思います。 Chromeが、OCSP(Online Certificate Status Protocol)やCRL(Certificate Revocation List)を…

MerkleTreeLeafをパースしようとしているけどうまくいかない

概要 Certificate Transparencyで用いられるデータ構造の一つであるMerkleTreeLeafを分解しようとしたのですが、 うまくいかないことがあったのでメモ(雑記)します。解決してません。 MerkleTreeLeafについて CTログサーバーへget-entriesすることで取得で…

CT(Certificate Transparency:RFC6962)の勉強メモ

概要 RFC6962の4.4と4.5に記載される、get-sth-consistencyとget-proof-by-hashという仕組みで何か情報が取れるらしいのだが、 なにに使えるのかよくわからなかったので、調べた結果をめも get-sth-consistencyとget-proof-by-hash RFCにはそれぞれ以下のよ…

UbuntuでOpenSSL1.1.1をソースからビルドしてローカルインストール

概要 タイトルの通り、OpenSSL1.1.1をUbuntuでビルドしてローカルにインスールしたときにやったことメモです 依存ライブラリのインストール 以下の通りPerlのいくつかのモジュールに依存してるらしいので、 インストールします。 $ sudo apt-get install lib…

InfluxdbのContinuous Query

はじめに 測定した生のデータをそのままInfluxDBに貯めて、各種操作をすると重すぎるので適当な時間間隔でデータをダウンサンプリングすることにしました。 公式ドキュメントはこちらです。 docs.influxdata.com Continuous Queryでgroup by timeすることで…

Influxdbでpercentileを計算する

組み込みの関数、percentileがinfluxdbに存在するので簡単に計算することができます。 docs.influxdata.com 適当なデータを積んで、計算してみます。 あるサーバーへのRTTを測定していることを想定し、以下のようなデータを適当に作りました。 insert testdb…

CT(Certificate Transparency)ログサーバーに書き込める証明書

結論 RFC 6962によれば、ルートに信頼の連鎖がある証明書を登録することができるようです。 1. Informal Introduction In order to avoid logs being spammed into uselessness, it is required that each chain is rooted in a known CA certificate. 3.1. …

TLDのZSKでよく使われている署名アルゴリズム

はじめに DNSSECで使われる署名鍵はKSK(Key Signing Key)とZSK(Zone Signing Key)の2種類があります。 TLDゾーンのZSKについて、どの署名アルゴリズムがよく使わええているか、調べました。 調べ方 まず、TLDの一覧をIANAから取得します。 https://data…

Google Chromeで表示されるCertificate TransparencyのLog IDがKnown Logsに存在するか確認する方法

はじめに Google Chromeでは、デベロッパーツールにて以下のように、閲覧しているウェブサイトの証明書がどのCTログサーバーに登録されているのか表示することができます。 例えば、google.comにて表示しています。 certificate-transparency-google.com Goo…

dnspythonで非再帰問い合わせする

dnspythonのサンプルコードをさらします。 dnspythonで非再帰問い合わせをしつつ、ついでにNSIDも取得してます。 NSIDは、EDNSオプションで使うことのできるもので、実際に応答をした権威DNSサーバー(IP Anycastなどで負荷分散されているDNSサーバーへの問…

CAAにissuewildのセミコロンが指定されているときの証明書の発行

はじめに 証明書を発行しようとする認証局は、必ず対象のドメインについてCAAレコードをチェックする必要があります。 Before issuing a certificate, a compliant CA MUST check for publication of a relevant CAA Resource Record set. tools.ietf.org ド…

Plotly DashアプリをuWSGI+Nginxで動かす簡単なサンプル

Nginxをリバースプロキシにして、Plotly Dashで作ったサンプルアプリを動かしてみます。 uWSGIとNginxは、Unixドメインソケットでつないでみます。 dash.DashのインスタンスからFlaskのアプリをapp.serverとして取り出しています。 以下、コマンドラインから…

左右に縦軸(y軸)があるグラフをplotly dashで作ってみる。

Pythonのplotly dashで左右に縦軸があるグラフをつくるサンプルコードのメモです。 two-sided-graph-with-plotly-dash yaxis2プロパティを設定する必要があります。 左右軸とは関係ありませんが、そのほかに、以下のようなことをしてます。 グラフの凡例を上…

PythonのPlotly DashでJP DNSサーバーのRTT等を可視化するウェブアプリを作った

概要 フロントエンド周りの勉強を目的に、Plotly Dash*1を用いて 権威DNSサーバーのRTT等の可用性を可視化するウェブアプリケーションを作ってみました。 rtt.dns.mtcq.jp graph github.com 実装 実装はシンプルで、下記のような感じ。 dnspython*2を使ってD…

Auditdのaureportをcronで使おうとしてハマる

aureportコマンドをcrontabで実行した際、何度やっても<no events of interest were found>と出力されてしまっていました。 結論としては、--input-logsオプションをつけることで想定通り動作するようになりました。 --input-logs Use the log file location from auditd.conf as input for ana</no>…

SCT(Signed Certificate Timestamp)のLogIDについて

SCTに存在するLogIDがどのように作成されているのか書きたいと思います。 ここで言っているLogIDとは、下記のものです。 google.co.jp-signed-certificate-timestamp-logid 例としてgoogle.co.jpにChromeでアクセスして表示させています。 まずLogIDがなんな…

TLS ExtensionによるSCTの提供について

CT1において、SCT2をクライアントに提供する方法は3つあります。 1. X.509 v3 Extensionによる方法 これは、いろいろなウェブサイトのサーバー証明書で見ることができます。証明書自体にSCTが埋め込まれているものです。 例えばtwitter.comの現時点の証明書…

CT(Certificate Transparency)ログサーバーの可用性

CTログサーバーの可用性を確認できるウェブサイトを見つけました。 作者は、イギリスのNetcraft社(セキュリティ関連の会社)の人の様です。 This website monitors Certificate Transparency log servers to check that they are behaving correctly. ct.gr…

OWASP ZAPでHTTPS通信の中身を確認したい

手順は以下の通り。 ちなみに、得体のしれないルート証明書をインポートすると、 得体のしれないソフトウェアや人に、中間者攻撃を許すことに繋がるので要注意。 1. OWASP ZAPでルート証明書を作成する 「ツール」→「オプション」→「ダイナミックSSL証明書」…

OWASP ZAPでHTTPヘッダを追加したり削除したりする

調査対象ウェブサイトへのHTTPリクエストについて、HTTPヘッダを書き換える手順は下記の通り 1. 書き換え用スクリプトひな形を作成する。 「スクリプト」タブの「HTTP Sender」を右クリックして新規スクリプトのひな形を作成する。 owasp-manipulate-http-he…