Carpe Diem

備忘録

データ暗号化で考慮すること(暗号アルゴリズム編)

概要

ユーザのメールアドレスといった機密情報を暗号化・復号したいユースケースがあるとします。
メール送信などに利用するためパスワードのようにハッシュ化するのでなく、復号して利用したいケースです。

機密情報の管理全般については以前↓で話しましたが、今回はデータの暗号化に焦点を当ててみます。

機密情報の管理で大切なこと - Carpe Diem

前提知識

適切な暗号方法を理解していないとZoomで問題になったように脆弱性のあるアルゴリズムを使用してしまいます。

Zoom documentation claims that the app uses “AES-256” encryption for meetings where possible. However, we find that in each Zoom meeting, a single AES-128 key is used in ECB mode by all participants to encrypt and decrypt audio and video. The use of ECB mode is not recommended because patterns present in the plaintext are preserved during encryption.

ref: Move Fast and Roll Your Own Crypto: A Quick Look at the Confidentiality of Zoom Meetings - The Citizen Lab

なので暗号における前提知識を説明した後に具体的な実装を紹介します。

続きを読む

パスワードを保存するときに考慮すること

概要

パスワードを保存する際は平文で保存せずハッシュ化するのは当然です。しかし単にハッシュ化するだけでなく

  • 暗号学的に優れたハッシュ関数を使う
  • saltを付ける
  • 計算コストのかかるアルゴリズムを採用する
  • ストレッチングで計算コストを上げる

といった点を考慮することで、万が一ハッシュ化されたデータが漏洩してもそこから平文が算出されないようにすべきです。

続きを読む

Homebrewで過去のバージョンを使いたい【tap版】

概要

以前以下の記事でhomebrewの過去バージョンの使い方を紹介しました。

christina04.hatenablog.com

あれからHomebrewも変わり、以前の方法ではうまくいかなくなったため新しい過去バージョンのインストール方法を紹介します。

環境

  • macOS Catalina 10.15.6
  • Homebrew 2.5.2
続きを読む

CircleCIの新UIでのslack連携 (Webhook URL版)

追記

現在(slack orb v4)は新しい連携方法に変わっています↓

christina04.hatenablog.com

以下(slack orb v3)は古い連携方法です。

概要

旧UIでは以下のような設定画面でslack連携を行っていましたが

f:id:quoll00:20200924011339p:plain

新UIからはこの設定方法はサポートされなくなり、新しくSlack Orbを使った設定方法に変わりました。

続きを読む

メールにおけるDKIMの仕組み

概要

前回SPFについて説明しました。

christina04.hatenablog.com

今回は署名によってヘッダ・メール本文の改ざんを検知するDKIMについて説明します。

フロー図

DKIMの検証フロー

DKIMの検証フローは以下です。

f:id:quoll00:20200920134658p:plain

続きを読む

メールにおけるSPFのドメイン認証の仕組み

概要

SPF(Sender Policy Framework)はメールのなりすましを防ぐための送信ドメイン認証の手法です。

さらに細かく説明すると

SMTPTCPコネクションの送信元IPアドレス送信元メールアドレス(エンベロープFrom)のドメインのTXTレコードに含まれるIPアドレスが合致するかどうかを確認する手法です。

この仕組みを図を交えながら説明します。

事前知識

前もって知っておいた方が良いことを書きます。

エンベロープFromとヘッダFrom

From 役割
エンベロープFrom バウンスを処理する場合などに使われるシステムが利用するアドレス
SMTPのMAIL FROMコマンドで指定されるreverse-path
メールボックスに受信するとReturn-Pathヘッダとして挿入される
ヘッダFrom メールクライアントでFromとして表示される人間が利用するアドレス

SPFはこのエンベロープFromが正しいかチェックする仕組みです。

続きを読む

GoのCLIで標準入力とファイル読み込みの両方に対応する

概要

Goでは簡単にコマンドラインツールが作れますが、人によって引数やオプションといったインタフェースがバラバラになりがちです。

POSIX Utility Syntax Guidelinesというガイドラインがあるので、これに則るとUnixライクな統一されたインタフェースのCLIツールになります。

環境

インタフェースのイメージ

例えば文字列の入ったファイルがあり

$ cat sample.txt
hogefuga

入力文字列をすべて大文字にするコマンドcapitalizeを作る場合、以下の3つのインタフェースをサポートするイメージです。

$ cat sample.txt | capitalize
HOGEFUGA

$ cat sample.txt | capitalize -
HOGEFUGA

$ capitalize sample.txt
HOGEFUGA
続きを読む