自行組合安全、好記且每個網站相異的密碼

資訊應用和我們的結合愈來愈緊密,保護隱私和機敏資料的最後一道防線ーー密碼,顯得更為重要。

我們知道密碼不應過於簡單、容易猜測:不該用生日、電話、常見的單字、人名等等。安全的做法是用密碼產生器產生隨機不同大小寫的字母、數字、符號組合。此外,網站被駭客入侵時有所聞,為了避免因為一個網站的密碼外洩而影響到所有的密碼,應該讓每個網站採用不同的密碼。密碼產生器產生的密碼極其複雜,於是有人發明了密碼管理軟體,來幫忙記住各組密碼。但是一旦我們把所有的密碼都放進同一套軟體,不就又將雞蛋丟進同一個籠子裡了嗎?

一個不同的密碼產生方法:token + pattern。

優點

  1. 不必將雞蛋放進同一個籠子
  2. 容易記憶
  3. 每一個網站都不同
  4. 較生日、電話等容易猜測的密碼安全
  5. 快速方便地輸入密碼,不須透過額外軟體

缺點

  1. 複雜度較密碼產生器產生的密碼低
  2. 有被全盤破解的風險

Token 是一串自訂的密碼,例如 TAIPEI 的變形 T@iP31。
Pattern 是一種能套用到不同網站的規則。例如取網站名稱的尾 2 字和頭 2 字:產生的密碼要給 Google 使用就是 lego;給 Yahoo 就是 ooya。

如此一來在 Google 的密碼就會是 T@iP31lego,在 Yahoo 的密碼是 T@iP31ooya。只要記 token 和 pattern 的規則即可,非常容易記憶。Pattern 的制定可以更加複雜,像是加上「凱撒密碼」來混淆。整體的組合也能再加以變化,像是改成 token 1 + pattern 1 + token 2 + pattern 2。

相關文章

Understanding Python Decorators

Decorator 是一個 Python 中較為進階的語法,因為較難理解故常被提出來討論。這邊提供一個簡潔的說明。

假設有一名為 func 的 function 被名為 decor1 和 decor2 的二 decorator 修飾如下:

1
2
3
4
@decor1
@decor2
def func(*args, **kwargs):
pass

則當我們如下呼叫 func() 時:

1
func(*args, **kwargs)

可以將之理解為:

1
decor1(decor2(func))(*args, **kwargs)

更詳細的說明可以參考:

  1. Understanding Python Decorators in 12 Easy Steps!
  2. How can I make a chain of function decorators in Python?

Implementations of DFS and BFS in Python

DFSBFS 在資料結構裡有教,是很基礎的演算法。

Edd Mann 的網誌上看到 Python 的實作,由其中學到 yield from 的用法。下面利用 yield from 的特性,將該網誌中提到的實作改寫成 generator 的型式。同步放在 Gist 上:DFSBFS

DFS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def dfs(graph, start, visited=set()):
if start in visited:
return
yield start
visited.add(start)
for vertex in graph[start] - visited:
yield from dfs(graph, vertex, visited=visited)
def dfs_paths(graph, start, goal, path=list()):
if not path:
path.append(start)
if start == goal:
yield path
for vertex in graph[start] - set(path):
yield from dfs_paths(graph, vertex, goal, path=path + [vertex])
graph = {'A': set(['B', 'C']),
'B': set(['A', 'D', 'E']),
'C': set(['A', 'F']),
'D': set(['B']),
'E': set(['B', 'F']),
'F': set(['C', 'E'])}
print(repr([vertex for vertex in dfs(graph, 'A')]))
print(repr([path for path in dfs_paths(graph, 'A', 'F')]))

BFS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def bfs(graph, queue, visited=set()):
if not queue:
return
start = queue.pop(0)
yield start
visited.add(start)
queue += [vertex for vertex in graph[start] - set(queue) - visited]
yield from bfs(graph, queue, visited=visited)
def bfs_paths(graph, queue, goal):
if not queue:
return
(start, path) = queue.pop(0)
if start == goal:
yield path
queue += [(vertex, path + [vertex]) for vertex in graph[start] - set(path)]
yield from bfs_paths(graph, queue, goal)
graph = {'A': set(['B', 'C']),
'B': set(['A', 'D', 'E']),
'C': set(['A', 'F']),
'D': set(['B']),
'E': set(['B', 'F']),
'F': set(['C', 'E'])}
print(repr([vertex for vertex in bfs(graph, ['A'])]))
print(repr([path for path in bfs_paths(graph, [('A', ['A'])], 'F')]))

My Ubuntu GNOME Tweaks

以 Ubuntu GNOME 14.04 LTS 英文語系為基礎。

安裝軟體

Firefox 附加元件

設定

7z

1
sudo apt install p7zip-full

ClipIt

剪貼簿管理程序,安裝的主要目的是要他同步剪貼簿的功能。因為 X11 的剪貼簿在「貼上」時,若來源程序已暫停或結束,會因無法讀取來源而無法貼上。可參考:X Selections, Cut Buffers, and Kill Rings.

1
sudo apt install clipit

Gnome Gmail

讓預設郵件客戶端可被設定為 Gmail。

1
sudo apt install gnome-gmail

Hime

1
sudo apt install hime

Java 8

Install Oracle Java 8 In Ubuntu Via PPA Repository

1
2
3
sudo add-apt-repository ppa:webupd8team/java
sudo apt update
sudo apt install oracle-java8-installer

ubuntu-restricted-extras

RAR、Flash Player 等非開源的程式之集合。

1
sudo apt install ubuntu-restricted-extras

Vim

Vim with GNOME specific support.

1
sudo apt install vim-gnome

VLC

1
sudo apt install vlc

文泉驛中文字型

開源的中文字型。

1
sudo apt install ttf-wqy-*

嘸蝦米輸入法

  1. 安裝 Hime
  2. 嘸蝦米官方網站 → 「嘸蝦米輸入法 for Unix-like」,下載 gcin 適用的表格檔。
  3. 解壓縮 boshiamy-gcin.tar.gz,將其中的 boshiamy-t.gtab 複製到 /usr/lib/hime/table
  4. 開啟 ~/.config/hime/gtab.list,將嘸蝦米那一行的 noseeing.gtab 取代成 boshiamy-t.gtab

Gmail Notifier

偵測到 Gmail 的新進信件時會由 Firefox 發出提醒。
Gmail Notifier

GNotifier

讓 Firefox 使用 GNOME、KDE、Xfce 或 OS X 桌面環境的提醒 (notification) 介面。
GNotifier

APT

以國網中心的 APT 伺服器取代台灣大學的:將 /etc/apt/sources.list 內的 tw.archive.ubuntu.com 取代為 free.nchc.org.tw

Gnome Tweak Tool

依個人喜好調整預設設定。

Input Method Configuration

先安裝 Hime,接著由 ActivitiesInput Method 選擇 hime。

Online Accounts

ActivitiesSystem SettingsOnline Accounts 登入 Google 帳戶,登入後可將右方不希望同步的功能關閉。若有開啟 Calendar 同步,可由螢幕最上方正中央的 Calendar 下拉選單中看到將近的活動,提醒時間到時也會由 Evolution 彈出視窗提醒。