Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: 分享

建立安全的密碼需要思考的一些問題

Posted on 2025 年 4 月 15 日2025 年 4 月 15 日 By 日落 在〈建立安全的密碼需要思考的一些問題〉中尚無留言

隨著電腦速度越來越快,密碼的長度以及複雜度就變得更重要。

最近正在設計新的密碼來取代原有強度不夠的密碼,以下是設計密碼時我會考量到的因素,給大家參考。

容易記憶

密碼之所以被稱作「密」碼,意思就是只有你一個人知道,其他人不應該透過任何方式,例如紙條、你的個人資料、平日對話關鍵字等方式,來得到、猜到你的密碼。

簡而言之,密碼必須記在腦裡,不應該出現在其他地方。如果密碼無法記在腦中,而必須寫在紙上,或是儲存在其他地方,這個密碼就不能算是一個安全的密碼。

長度

長度當然越長越好,因為密碼長度越長,表示要破解時猜測要花的時間也會越長。但若長度過長而導致密碼記不起來、必須透過其他方法記憶時,與前一項「容易記憶」就衝突了。

個人建議密碼盡可能超過 12 個字,而長度到多長依照個人能力而定。再透過「複雜度」讓密碼更不容易被猜到。

複雜度

可以用來當密碼的文字,可以除了數字以外,還有應無大小寫 (大寫和小寫是不同的),另外可以再加上特殊符號,如 @、&、! 等等,密碼中包含越多不同類型的文字,安全性越高。

目前大多數的系統僅支援基本英文文字與符號,因此使用中文文字或是全形符號、emoji (🤘) 來當作密碼,可能會遇到一些問題、導致部份系統發生錯誤。

到這邊應該會有人有疑問,長度要夠長、又需要包含數字、英文大小寫,還要加上特殊符號,這連寫下來都有困難,怎麼可能記得住?事實上,有一些方法可以幫助密碼記憶 (可以參考中文輸入法拆字根的方法):

  • 使用字形來幫助記憶
    • 英文的大寫 H,可以拆成二個英文小寫 l 與一個符號 -,變成 l-l
    • 英文 x 可以拆成 ><
    • 中文的 丼 可以用符號 # 來替代
    • 數字和英文的這幾個字長得很像:0、o、O,或是拆成符號表示 []
    • 當然也可以把顏文字當作密碼的一部分:/__\==b
  • 使用文字、符號的意思來協助記憶:
    • 符號 @ 有英文 at (或中文 在) 的意思,所以可以「我在睡」可以用 me@ZZzz.. 表示
    • 肯定句用 .、疑問句用 ?,有和沒有可以透過 + 或 - 來表示
    • 常用句表示法:網路上常使用 !@#$%^&* 來代表髒話,你可以建立只有自己在使用的特殊格式
  • 使用發音協助記憶:
    • 「悲劇」改為 BG、「科科」改為 kerker
    • 「好酷」改為 how、Kooool
    • 「打趴」二個字分別拆成 da 和 %
  • 用鍵盤按鍵位置記憶 (記住鍵盤按鍵位置並不是大家都做的到,但可以用):
    • 「科科」的注音對應的按鍵是 dkdk
    • 「啊」注音則會對應到鍵盤 * (有個空白沒錯)

以上應該可以讓大家多出很多增加密碼長度又不會增加記憶難度的方法。


密碼管理工具

現在有一些密碼管理工具,像是 1Password、bitwarden、KeePass,你只需要記憶一個主要密碼用來開啟密碼管理工具,而其他網站、服務的密碼,都是由管理工具隨機產生,不需要你記憶。

這樣有一個好處,你只要花時間設計並記住一個夠安全的密碼,來開啟密碼管理工具,網站、服務登入時,只要從管理工具複製帳號、密碼再貼上就好。這樣每個網站都會有完全不同的密碼,即使其中一個網站的密碼被盜用,其他網站仍然是安全的。

但這個方式也有一個缺點,就是把雞蛋放在同一個籃子,LastPass 在 2022 年被駭客入侵成功,甚至有傳言使用者密碼資料庫也被竊。

密碼管理工具並不表示絕對的安全,使用時記得搭配 2FA 工具來多加一層保護。


另外我想提一些比較沒有人在討論的問題。

行動裝置、觸控螢幕

前段有提到可以使用鍵盤的對應位置來協助建立密碼,但在寫這篇文章的當下,鍵盤可能已經不是主流的輸入工具了,可能是觸控螢幕。而使用觸控螢幕時,輸入法 app 的排版、操作方法則會是影響密碼輸入最大的因素。

Gboard 螢幕鍵盤樣式
Gboard 螢幕鍵盤樣式

超注音螢幕鍵盤樣式
超注音螢幕鍵盤樣式

以上二張圖,可以看出不同的輸入法有不同的排版,英文按鍵的位置上大多是類似的,但遇到要輸入符號,則不同輸入法可能都有不同的版面,若輸入法沒有特別為符號輸入設計,輸入包含符號的密碼會變得很麻煩,甚至常常出錯。

若如果經常使用行動裝置,可以將符號縮限在 @、#、$ 或 $ 等一些比較常用的符號,這些符號在大多數螢幕輸入法上比較容易找到。


密碼側錄與猜測方法

一些使用者平常沒注意到的地方,以及新的技術發明,導致密碼輸入時可能更容易被辨別或猜測:

  • 有些人使用的螢幕、鍵盤保護貼磨損嚴重,導致螢幕解鎖圖形、按鍵容易猜測
  • 利用熱成像攝影機,可以讓被按過的按鍵、接觸過的螢幕區塊變得很明顯,可用來猜測使用者輸入的內容。或許透過重複輸入某個文字,可以來降低猜測準確度?
  • 透過聲學辨識,可以準確得聽出使用者按下的是哪個按鍵,這還真的想不到要怎麼防

其他新的身份驗證方法

密碼並不是唯一可以用來辨識身份的方法,一些新的技術,可以讓你使用其他方法來做驗證:

  • 生物特徵辨識:透過每個人都不同的特徵來辨別人的身份,像是指紋、虹膜、臉型等等
  • FIDO:通常用做 2FA 來辨識身份,透過實體的 USB、藍芽、手機等設備,來確認使用者為本人

參考資料:

  • Create and use strong passwords – Microsoft Support
  • 設定高強度密碼並強化帳戶安全性 – Google 帳戶說明
  • Password guidelines – IBM Documentation
  • Thermal cameras could help reveal your password
  • New acoustic attack steals data from keystrokes with 95% accuracy
  • 有趣的生物辨識及應用 – 財團法人台灣網路資訊中心部落格 | TWNIC Blog
  • FIDO 是什麼? – TWCA
Tags:分享, 資訊安全

(AI 奈米量子科技之 LLM 什麼的) Meilisearch 簡介

Posted on 2024 年 10 月 24 日 By 日落 在〈(AI 奈米量子科技之 LLM 什麼的) Meilisearch 簡介〉中尚無留言

標題不知道寫什麼好,反正外掛說 SEO 100 分 …..

在開始聊 Meilisearch 之前,我想先來聊一下全文檢索。

MySQL 的搜尋

MySQL 搜尋功能都是精確搜尋,也就是搜尋的關鍵字一定會出現。例如:

SELECT title
FROM news
WHERE news_content like '%逢甲夜市%'

以上的語法,搜尋結果中一定會包含「逢甲夜市」四個字。

但若我需要模糊搜尋,搜尋「逢甲」或是「夜市」,該怎麼辦?

這個時候要改用 MySQL 的全文檢索功能。

MySQL 全文檢索 (Full Text Indexing)

需要被全文檢索的欄位,必須先建立 fulltext 的索引:

create index full_text_idx_news
on news (news_content) using full_text

搜尋時就可以使用全文檢索語法:

SELECT title
FROM meilisearch_index_urls
WHERE match(news_content) AGAINST ("逢甲夜市")

這時「逢甲夜市」、「逢甲」、「夜市」應該都有機會被列出來,但是準確度並不高。

中文斷詞

以英語系的語言,要將詞彙區分出來較為容易,因為每個詞中間都有空白:

This is night market

很明顯可以分成四個詞:

  • this
  • is
  • night
  • market

中文就沒有這麼方便了,以「這是夜市」來說,這句話中一個空白都沒有,只能依照字詞長度做分割:

  • 這是夜市 (4-grams)
  • 這是夜 (3-grams)
  • 是夜市 (3-grams)
  • ….

將所有排列組合全部列出以後,再用其他文章出現的字詞,將常用詞會出現的機率 (詞頻) 將機率大的列出。

這裡介紹中研院花了數年開發出來的中文斷詞系統 (CKIP),他不但能將詞彙列出,甚至還可以便辭性與外來語:

要成精準的分中文字詞,需要先有一個語料庫,才能較準確的搜尋與分析。而這次要介紹的 Meilisearch,就有支援不同語言的分析,所以在全文件檢索上的精確度高上許多。

Meilisearch

Meilisearch 是一個使用 Rust 開發的全文檢索引擎,有以下特點:

  • 搜尋速度快
  • 隨打即找
  • 支援多國語言 (你不需要另外裝套件啦)
  • RESTfulf API,不管什麼語言、工具都很容易串接
  • 由於是 Rust 開發,只要複製 binary 下來即可執行,不需要額外的安裝步驟

安裝

先開啟 Meilisearch Github 官方網站中的 release 頁面,先抓穩定板 (這裡以 v1.10.3 為主),在下方「assets」選擇適合你的 binary 檔下載。

meilisearch binary after downloaded

剛下載的 binary 沒有執行權限,使用 chmod 給他執行全賢執行權限:

chmod +x meilisearch-linux-amd64

安裝到這裡,就算是結束了。

啟動 Meilisearch

預設的啟動方式,就是直接行 Meilisearch:

Meilisearch 啟動畫面

啟動後除了可以看到他們 logo 以外,往下一些還可以看到他建立了一個目錄 ./data.ms 作為資料除存使用,這邊主要儲存索引黨。

Meilisearch 使用 RESTful API,所以參考官方文件,透過 curl 便可確定是否已經能正常運作:

使用 curl 出較 Meilisearch API

這邊使用 GET /indexes 來要求 Meilisearch 列出所有的 indexes,剛安裝好的當然沒什麼東西,所以 results 是空的沒錯。

新增 documents

Meilisearch 的資料為 document,不是資料表,所以資料只要標明欄位名稱、內容,級可以被建立索引,且前後的 document 其使欄位不同也可以被接受。

這裡準備一個範例 document:

[
    {
        "id": 1,
        "name": "日升",
        "phone": "0987654321",
        "tag": ["programming", "photograing", "readding"]
    },
    {
        "id": 2,
        "name": "日落",
        "tag": ["programming", "PHP", "back-end", "docker"]
    }
]

然後按照 Meilisearch add documents 的說明新增資料:

新增 documents 以後的 result

這邊 Meilisearch 並不會告訴你是否成功,因為所有的動作都會先進度工作佇列,再慢慢處理。

執行後拿到的 tasekUid 是「0」,我們可以再使用這個 ID 去查詢執行狀態:

curl -X GET 'http:///localhost:7700/tasks/0'

task 這邊回有很詳細的狀態,像是成功或失敗,開始時間、結束時間等等。

操作沒有很複雜,看一下 Meiliserch 官方文件差不多都可以解決。


我這邊建立索引的新聞內容,目前放在自家網站 Zeroplex 的新聞搜尋工具,大家可以拿一些奇怪的中文字去搜尋看,Meilisearch 全文檢索功能在中文處理上效果不錯

上述新聞搜尋工具,目前為以下項目做全文檢索:

    • 新聞標題
    • 新聞內容

    搜尋會回傳的內容有:

    • 新聞標題
    • 日期
    • URL

    目前使用狀況大致如下:

    • document 數量約 140 萬筆
    • 索引大小約 28 GB

    目前使用的狀況:

    • 查詢的速度很快,只要搜尋的文字很短速度就很快;但若關鍵字較長也會讓搜尋時間變長
    • 中文的支援很棒,不會出現很奇怪的斷字詞
    • 建立索引的速度慢
      • 在 v1.4.x 時,為一個 document 建立索引可以會花上 1 分鐘以上,且這一分鐘會附加滿滿的 disk I/O
      • 升級到 v1.9.x 以後,建立索引的速度快很多,disk I/O 的量沒有像以前那麼誇張
      • 如果第一次使用,建議直接從最新版開始使用

    以下是我在 KaLUG 分享時使用的簡報,歡迎大家參考:

    Tags:Meilisearch, 分享, 資訊學習

    如何避免被假新聞欺騙? by 公視新聞實驗室

    Posted on 2024 年 2 月 26 日2024 年 2 月 26 日 By 日落 在〈如何避免被假新聞欺騙? by 公視新聞實驗室〉中尚無留言

    覺得公視新聞實驗室這集整理的蠻清楚的。

    影響人判斷真假訊息有幾個要素:

    • 真實偏誤
    • 記憶與知識
    • 情緒

    現在不少文章、影片為了流量 (?) 內容都刻意做的比較偏激,容易造成判斷錯誤,要多注意不要被情緒影響。

    ps. 影片前 30 秒很讚 XD

    Tags:分享, 生活雜記

    各廠牌優酪乳所含乳酸菌

    Posted on 2023 年 10 月 29 日2024 年 3 月 7 日 By 日落 在〈各廠牌優酪乳所含乳酸菌〉中尚無留言

    記錄各家優酪乳的乳酸菌類型。


    義美優酪乳:

    • 活性乳酸菌 嗜熱鏈球菌 Streptococcus thermophilus
    • 保加利亞乳桿菌 Lactobacillus delbrueckii subsp. bulgaricus
    • 鼠李糖乳桿菌 Lactobacillus rhamnosus
    • 植物乳桿菌 Lactiplantibacillus plantarum
    • 嗜酸乳桿菌 Lactobacillus acidophilus
    • 雙歧桿菌 Bifidobacterium lactis
    • 副乾酪乳桿菌 Lactobacillus paracasei

    統一 AB 優酪乳:

    • 嗜熱鏈球菌 Streptococcus thermophilus
    • 亞斯菲德菌 (嗜酸乳桿菌) Lactobacillus acidophilus La-5
    • 雷特氏 B 菌 (Bifidobacterium lactis Bb12)
    • 保加利亞乳桿菌 Lactobacillus bulgaricus

    統一 LP33 機能優酪乳

    • 嗜熱鏈球菌 Streptococcus thermophilus
    • 副乾酪乳酸桿菌 Lactobacillus paracase
    • 保加利亞乳桿菌 Lactobacillus bulgaricus

    福樂 自然零

    • 嗜熱鏈球菌 Streptococcus thermophilus
    • 德氏乳桿菌 Lactobacillus delbrueckii
    • 比菲德氏龍根菌 Bifidobacterium

    光全

    • S 菌 Streptococcus thermophilus
    • L 菌 (Lactobacillus delbrueckii subsp. bulgaricus, Lactobacillus delbrueckii subsp. lactis)
    • A 菌 Lactobacillus acidophilus
    • B 菌 Bifidobacterium animalis subsp. Lactis

    林鳳營益生菌優酪乳

    • 嗜熱鏈球菌 Streptococcus thermophilus
    • 保加利亞乳桿菌 Lactobacillus bulgaricus
    • 比菲德氏菌 Bifidobacterium lactis
    • 嗜酸乳桿菌 Lactobacillus acidophilus
    Tags:分享, 生活雜記

    韋伯望天文遠鏡 (James Webb Telescope) 的新聞、照片網站

    Posted on 2023 年 10 月 1 日2023 年 10 月 1 日 By 日落 在〈韋伯望天文遠鏡 (James Webb Telescope) 的新聞、照片網站〉中尚無留言
    • James Webb 官方網站 (歷史、影片、照片、新聞等):https://webbtelescope.org/
    • James Webb 官方 Flickr 相簿 (最新照片會在這裡發布,可以找到高解析度照片):https://www.flickr.com/photos/nasawebbtelescope/
    • NASA 的 James Webb 官方網站:https://webb.nasa.gov/
    Tags:分享, 天文

    文章分頁

    1 2 ... 59 下一頁

    其他

    關於我  (About me)

    小額贊助

      文章 RSS Feed

      留言 RSS Feed

    Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


    創用 CC 授權條款
    本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.