パスワードの作り方を考えていかないと

こうも日常的にたくさんのアカウントとパスワードの組み合わせを扱っていると、それぞれを丸暗記しておくのは人間業ではなくなってきますよね。

ほんの数年前レベルのお話だと、パスワードはある程度人間が覚えていられる組み合わせを何通りか掛け合わせて作っておくとよいよーなんて事を言ってた覚えがあります。

■突破されるまでの時間稼ぎ

また、パスワードの役割は「認証を不正に突破されないこと」ではなくて「認証を不正に突破されるまでの時間を稼ぐこと」を意識することも重要だという方向へもシフトしておりましたね。

文字の組み合わせを機械的に総当たりされることを前提にして、1桁でも長い文字列で構成されたパスワードなら、その分だけ総当たりの試行回数は劇的に増加するから時間を稼げる、ということだったわけですが。

■定期的なパスワード変更も

そしてまた、たとえば60日や90日といった間隔でパスワード変更を強制するというポリシーが励行されていた時代もありました。

今になって考えてみたら、侵害されていないパスワードをわざわざ変更することってデメリットしか無かったんじゃないかなんて思いますが。
※後述するパスワードの生成パターンを頻繁にさらしてしまうという意味で。

■パスワードを付箋で貼るな

さすがにパスワードを全桁書いて画面の隅に貼り付けているような時代を見たのは、私と同世代くらいまでの古参だけだと思いますが(笑)

そういう古き良き(?)時代では、上司の上司の上司のさらに上司に呼ばれて席に赴こうものなら全てのシステムのパスワードがペタペタと貼り付けられて面食らうなんてことは日常茶飯事で。

その頃の私はと言えば主にソーシャルハックの領域に居りましたので、とにかく無害で便利な小間使いという素振りで信頼を勝ち得ては、いつでも喉元に刃先を突き付けられる距離を楽しんでいたという(あくまでも比喩ですよ。実際にその立ち位置を活用したことは、少なくとも記憶には残ってない、たぶん)、とっても厨二的で性格が悪かったですな(笑)

さて、いつのころからかむしろ、このパスワード貼り付けが励行されることもありました。

もちろん、他人が見ても容易に推測できないようなヒントを(あるいは部分省略して)メモで残しておけ、なんて指導がなされている時代があったかと記憶しています。

よく工夫しているなと思った事例では、パスワードの定期更新ごとに末尾の文字を4種類ほど使いまわしていた方がおりまして、付箋にはもちろん書かないんですが付箋自体の色を変えておられましたね。

■人間の作ったパスワードは突破しやすい

さて現代。生成AIさんに私のパスワードを推測できるかと問うてみたら、あっさり推測されました。

それも、候補のトップ5どころか、1番目がドンピシャ正解だったりするわけで。

詳しくは申しませんが充分な長さの英字数字記号の組み合わせ文字列にさらにサービス名を混ぜこんで、単純なパスワード使いまわしにならないようにしてたわけです。

ところが、1つの組み合わせをAIさんに教えてあげると、その組み合わせ法則をあっさりと見破られまして、他のサービスに使っていそうな組み合わせまで的中させられるという。

これが、「数か月単位でパスワードを変更しましょう」ってのがナンセンスと言われるようになった所以でしょうね。人間が作る以上かならず規則性があるし、簡単に見破られる。

もう完敗です。

これだけあっさりと正解を推測されたら、アカウントロックアウトを仕込んでおいても引っかかる前に高確率で突破されちゃいます。

もちろん実際には重要度に応じて二要素認証などを使うわけですが、こうなるともう「パスワードが守れるものって何?!」な世界ですわ。

■じゃあどんなパスワードだったら?

簡単にわたしの作りそうなパスワードを推測してくるAIさんに「じゃあどんなパスワードだったら推測しにくいの?」って聞くと、答えてくれました正直に(たぶん)。

「信頼できる乱数発生器をもとに生成した充分な長さの文字列」だそうです。

はい。絶対に人間には覚えられません(笑)

むかしエンタープライズ号のブリッジ内でデータ少佐が、艦の操作権限を得るための認証コードを早口でなん十桁も答えていたような、あんなシーンになるわけで(誰にもわからんか)

というわけでもう、パスワードを人間が作って覚えておく時代は終焉を迎えつつあるのだなと思った日常の一コマなのでした。

—
安心安全安価なSDカードデータ復元・ HDDデータ復元は
長年の信頼と実績の『株式会社パソコントラブル救助隊』へ。
https://hqsecure.net/

「ITが必要な現場に、頼れる“猫の手”を。」
https://www.meowtech.jp/

xrdpとmacOSの組み合わせでキーボード判定

xrdpの環境にmacOS端末でログインすると結構な確率でキーボード判定がおかしくなりませんか?

macOSでRDPするにはMicrosoft謹製のwindows.appを使うわけなのですが、どうもxrdpに送られてくるキーボードレイアウトの情報がおかしい、というか無いに等しい。

これがWindows機ならばある程度の種類を送ってきてくれるので、それに適したレイアウトで操作できるわけなのですが、Windows.appから送られてくる情報は常に0x00000000。

キーマップは0x00000411.tomlをコピーして0x00000000.tomlを作ってしまうことで誤魔化しは効くものの、どういうわけかusキー・日本語キーの判定は接続するたびに違っていたりで、少なくとも私の個人持ちのMacBookではUSキー判定されたり日本語キー判定されたり。

接続自体はスムーズなのに、いざ「@」や「¥」を入力しようとすると違うレイアウトになっていることに気づいて接続し直す羽目になるのがどうも憂鬱。

・というわけでもう作っちゃえ

というわけで、GUIで設定変更できるツールをさくさくっと。

ついでに接続してきた端末名や解像度と設定内容を記録しておいて、自動実行でも設定できるように。

[ keyboard-switcher.sh ]

#!/bin/bash

# --- 実行モード判定 ---
AUTO_MODE=false

if [[ "$1" == "--auto" ]]; then
    AUTO_MODE=true
fi

# --- 設定保存先・識別情報取得 ---
CONFIG_DIR="$HOME/.config/keyboard_layouts"
AUTOSTART_DIR="$HOME/.config/autostart"
AUTOSTART_FILE="$AUTOSTART_DIR/keyboard-switcher.desktop"
CURRENT_UID=$(id -u)

mkdir -p "$CONFIG_DIR"
mkdir -p "$AUTOSTART_DIR"

resolution=$(xdpyinfo | grep dimensions | awk '{print $2}')
hostname=$(xprop -root | grep Xdpy | cut -d\" -f2 | cut -d@ -f2)

[[ -z "$resolution" ]] && resolution="unknown_resolution"
[[ -z "$hostname" ]] && hostname="unknown_host"

safe_id=$(echo "${hostname}_${resolution}" | tr -cs '[:alnum:]_-' '_')
CONFIG_FILE="$CONFIG_DIR/${safe_id}.conf"

# --- 現在のキーボードレイアウトを取得 ---
current_layout=$(setxkbmap -query | grep layout | awk '{print $2}')

# --- 自動モード: GUIなしで適用する ---
if $AUTO_MODE; then
    if [[ -f "$CONFIG_FILE" ]]; then
        saved_layout=$(cat "$CONFIG_FILE")
        if [[ "$saved_layout" == "us" || "$saved_layout" == "jp" ]]; then
            setxkbmap "$saved_layout"
            echo "[INFO] 自動実行: '${saved_layout}' を適用しました (${safe_id})"
            if ! ps -u $CURRENT_UID -o comm | grep -q "^fcitx5$"; then
               fcitx5 -d
            fi
            exit 0
        fi
    fi
    echo "[INFO] 自動実行: 設定が見つからなかったため変更なし"
    exit 0
fi

# --- 手動実行: GUIで選択 ---
us_selected=FALSE
jp_selected=FALSE

if [[ -f "$CONFIG_FILE" ]]; then
    saved_layout=$(cat "$CONFIG_FILE")
    if [[ "$saved_layout" == "us" ]]; then
        us_selected=TRUE
    elif [[ "$saved_layout" == "jp" ]]; then
        jp_selected=TRUE
    fi
else
    if [[ "$current_layout" == "jp" ]]; then
        jp_selected=TRUE
    else
        us_selected=TRUE
    fi
fi

layout=$(GSK_RENDERER=cairo zenity --list \
    --title="キーボードレイアウトの選択" \
    --text="使用するキーボードレイアウトを選んでください\n(端末: ${hostname}, 解像度: ${resolution})" \
    --radiolist \
    --column="選択" --column="レイアウト" \
    $us_selected "us (英語)" \
    $jp_selected "jp (日本語)" \
    FALSE "削除(設定をリセット)")

# --- ユーザーが削除を選択した場合 ---
if [[ "$layout" == "削除(設定をリセット)" ]]; then
    GSK_RENDERER=cairo zenity --question --title="設定削除" --text="自動実行設定とキーボード設定を削除しますか?"
    if [[ $? -eq 0 ]]; then
        rm -f "$AUTOSTART_FILE"
        rm -rf "$CONFIG_DIR"
        GSK_RENDERER=cairo zenity --info --text="削除が完了しました。"
        echo "[INFO] 削除が完了しました。"
    else
        echo "[INFO] 削除をキャンセルしました。"
    fi
    exit 0
fi

# --- キーボードレイアウトの適用 ---
if [[ "$layout" == "us (英語)" ]]; then
    setxkbmap us
    echo "us" > "$CONFIG_FILE"
    if ! ps -u $CURRENT_UID -o comm | grep -q "^fcitx5$"; then
        fcitx5 -d
    fi
elif [[ "$layout" == "jp (日本語)" ]]; then
    setxkbmap jp
    echo "jp" > "$CONFIG_FILE"
    if ! ps -u $CURRENT_UID -o comm | grep -q "^fcitx5$"; then
        fcitx5 -d
    fi
else
    GSK_RENDERER=cairo zenity --info --text="レイアウトが選択されませんでした。"
    exit 1
fi

# --- 自動起動用のデスクトップエントリーを作成 ---
# Exec行はスクリプト配置により適宜書き換え /usr/local/bin/ 推奨
cat <<EOF > "$AUTOSTART_FILE"
[Desktop Entry]
Type=Application
Exec=$HOME/keyboard-switcher.sh --auto
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
EOF

GSK_RENDERER=cairo zenity --info --text="設定内容を保存し自動実行を設定しました (${AUTOSTART_FILE})"
echo "[INFO] 設定内容を保存し自動実行を設定しました (${AUTOSTART_FILE})"

と、こんな感じで。

配置はどこでも良いけれど、実行するためには chmod +x keyboard-switcher.sh を忘れずに。

・こまかいところ

仕様的には

・自動実行時+保存情報あり:保存された情報で設定して静かに終了
・自動実行時+保存情報なし:なにもせず静かに終了
・手動実行時+保存情報あり:GUIを開き保存された情報を表示
・手動実行時+保存情報なし:GUIを開く

と言う感じで、保存情報は

~/.config/keyboard_layouts/ 以下に「ホスト名_解像度.conf」の設定ファイルを作って記憶。

ただ、実際に動かしてみるとhost名が取得できなくて unknown_host_1440x900_.confみたいな形になってしまいましたが、実用上支障なしということで。

書き忘れるところだった。
自動実行時というのをどう判定するねん、という点は –auto というオプションを付けることで判断します。

・せっかく作ったならメニューへ

せっかくGUIなツールなのに起動がいちいちCLIではもったいないので、デスクトップエントリーに以下のように追加。

[ /usr/share/applications/keyboard-switcher.desktop ]

[Desktop Entry]
Name=キーボードレイアウト切替
Exec=/usr/local/bin/keyboard-switcher.sh ←ここは環境にあわせてフルpathを!
Type=Application
Terminal=false
Icon=input-keyboard
Categories=Settings;Utility;

これでちょっと楽ができるかな?

—
安心安全安価なSDカードデータ復元・HDDデータ復元は
長年の信頼と実績の『株式会社パソコントラブル救助隊』へ。
https://hqsecure.net/

消費税率が10%に

数年前、8%になったときに比べても遜色ないくらいバタバタと準備に手間取ったわけですが、その大きな要因は税率の変更よりはキャッシュレス還元事業の割合が大きいですね。

とっくに事業者として申請していたにもかかわらず、事務局からの案内が9月最終週になってようやくという感じでしたから本当に大変でした。

いや、まだ事業者に配布されるはずのポスターとか届いてないですけれど…と思ってたら中小企業庁からお手紙が。

まさか中小企業庁からポスター?と思ったらいつもの「消費税の転嫁拒否等に関する調査」でした。定期的にきますね。大手法人に属する方はくれぐれもお気をつけください^_^

さて、10%とキリが良くなったおかげて見積もりも暗算しやすくなったわけですが、電卓をたたくとなぜか答えが合わない。そう、電卓の税率変更設定がまだでした!案外忘れがちなので皆さまお気をつけて!!