zkat’s diary

技術ブログ

情報的健康の実現に関して思ったこと

情報的健康の実現に関する本を読んでいて、思ったことをメモするものです。 デジタル空間とどう向き合うか 情報的健康の実現をめざして (日経プレミア) | 鳥海不二夫, 山本龍彦 |本 | 通販 | Amazon 明らかに多くの人の情報的健康を害する不適切な情報(例:…

MATTRのBBS+署名ライブラリを試してみる

概要 MATTRというニュージーランドの企業が開発している、ライブラリbbs-signaturesを使ってみたメモです。 背景 今だ大規模な応用は不明ですが、プライバシーに関する利点(下記)から近年BBS+はVerifiable Credential(以下、VC)の署名アルゴリズムとして…

KDF(Key Derivation Function)とCSPRNG(Cryptographically Secure Pseudo Random Number Generator)の使分けについて

KDFもCSPRNGも共通鍵を生成するために使用できる仕組みです。しかし、どのように使い分けるべきかよく分かっていませんでした。 最近読んだ本、「現代暗号技術入門」にて使い分けに関する記載がありましたので、引用したいと思います。 www.amazon.co.jp KDF…

BIMI(Brand Indicators for Message Identification)について

BIMIの概要 Seth Blank氏を中心に、2019年頃からIETFで検討されているインターネットドラフトです。 datatracker.ietf.org メール送信者が指定するロゴをメール受信者側で表示できるようにすることで、なりすましメールでないことを視覚的に判別できるように…

TLSAレコードでTrust Anchor Assertionを設定する

概要 私の管理するドメイン名、mtcq.jpにTLSAレコードを設定してみました。 その時に調べたことなどをメモしておきます。 TLSAレコードでできること TLSAレコードを設定することで、ドメイン名とサーバー証明書(以下、エンドエンティティ証明書)に関する情…

CRLiteの仕組み:Bloom filterの偽陽性をなくす方法

はじめに TLS証明書の失効情報を管理する新たな仕組みとして、CRLiteというものが考えられています。(以下の論文です) CRLiteの根幹部分は、偽陽性を排したBloom filterで成り立っています。 この記事では、どのようにしてそのような偽陽性のないBloom fil…

Web Key DirectoryでPGPの公開鍵を配布する

概要 次のインターネットドラフト(以下、I-D)に基づいて、PGPの公開鍵を配布してみたので、そのメモを残します。 datatracker.ietf.org WKDとは Web Key Directoryの略で、PGPの公開鍵をHTTPSで公開する仕組みです。 PGPの公開鍵を公開する方法はすでに他…

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プロパティを設定する必要があります。 左右軸とは関係ありませんが、そのほかに、以下のようなことをしてます。 グラフの凡例を上…