PKI 小檔案

看完了秘鑰, 再來看一種公開鑰匙的加密方法 – PKI (Public key infrastructure). PKI 和 public key algorithm 加密並不一樣, 主要的差別在於 CA (certification authority) 的有無.

先來看一般的公開金鑰加密方法 (個人一直不懂的是, 為何沒事要把鑰匙取名叫金鑰, 純金又不能做鑰匙?).

如果仍然用 A 和 B 來舉例, 此時還需要其他的人或物介入其中. 一個是公正的第三人 C, 另外一個是數位憑證.

當 A 想要在 B 證券公司網路下單,  此時 A、B 不但要彼此檢查對方的身分, 也要防止下單資料被駭客修改了.

為了辨識資料是否被修改, 需要用到雜湊 (hash) 的技術. 首先把文件經過雜湊演算法計算, 產生一組固定長度的指紋 (fringer print) 或是數位摘要 (digital digest), 比方說 128 或 160 bits. 此時, 只要文件的內容經過修改, 就很難得到一模一樣的指紋.

當然, 這個指紋的傳送, 也不適合適明文, 它也是要加密的. 經過 A 的 private key 以 RSA 之類的演算法加密之後, digital digest 就變成了 digital signature (數位簽章).此時 A 已經準備好要傳送的明文文件, 以及數位簽章, 接著就可以透過 share private key (所謂共同金鑰) 加密 (如 DES 演算法).

不過, 此時 B 公司並不一定會保管與 A 共有的 share private key . 畢竟 B 公司可能有很多很多的客戶, 要是幫每個客戶、每筆交易都存一隻鑰匙的話, 那也挺麻煩的. 鑰匙可以重複使用的話, 感覺又太不保險了.

所以 B 公司希望 A 乾脆即時產生一隻share private key , 然後一起送給 B, 這樣就省事了. 當然, 鑰匙不能就這樣大剌剌地傳過來, 順便加個密吧! 因此 A 要用 B 公司指定的 B public key 來加密 share private key (如 RSA 演算法)

當 B 公司收到資料之後, 首先用 B 的 private key 來解 B 的 public key 加密的 share private key. 得到 share private key之後, 再用它來解 DES, 得到 A 的明文和 A 的數位簽章.

接著 B 公司再用 A 的 public key 來解數位簽章, 得到數位摘要. 這個數位摘要就可以用來判斷 A 的文件, 是否遭到竄改.

到這裡為止, A、B 雙方已經可以互相溝通了. 只要 A 和 B 都有 private key、public key 就行.

繼續閱讀「PKI 小檔案」

Symmetric Cryptography 小檔案

Symmetric Cryptography 中文應該翻譯作 “對稱性密碼", 又叫做 “secret key cryptography" (秘鑰密碼). 顧名思義, 這個加密方法需要一把秘鑰,只有傳遞/接收訊息的人知道這個秘鑰是甚麼? 另外, 既然是對稱, 就表示加密或解密的人都是使用同一把鑰匙.

通訊的方法大致如下:

先定義一把秘鑰叫做 Keyab, 這是 A 和 B 所分享的秘密 (shared secrete).

A 先連絡上了 B.  

但 B 要知道這個人是不是 A?

所以送出測試訊息 (challenge) Tb 給 A, 意思是, 你用 Keyab 來加密看看?

於是 A 就把  Tb 加密成 E(Tb) 送給 B.

B 把 E(Tb) 解開, 發現果然和他送出去的 Tb  一樣, 那麼 B 就可以相信 A 了.

不過 A 可以相信 B 嗎? 萬一  B 是個假的, 收到甚麼都說好呢? 所以還要讓 A 送出 challenge Ta, 考驗 B 的加密能力.

B 把 Ta加密成 E(Ta) 送還給 A 驗證, 那麼 A 就可以知道 B 至少是擁有同一隻 keyab 的通訊對象了. 

這個系列的加密方法有 DES 和 IDES 等幾種.

繼續閱讀「Symmetric Cryptography 小檔案」

資遣與解雇的不同

今天上了一個內訓課程, 不過對於其中的資遣和解雇沒有聽清楚其差異. 幸好網路上有好心人可以給我答案.

http://www.smart-life.com.tw/pages/step1-2.php?cs_id=37

簡言之, 資遣就要, 解雇不用. 資遣的依據是勞基法第十一條, 解雇的依據是勞基法第十二條.

第十一條(雇主預告終止勞動契約之條件)
非有左列情形之一者,雇主不得預告勞工終止勞動契約:
一、歇業或轉讓時。
二、虧損或業務緊縮時。
三、不可抗力暫停工作在一個月以上時。
四、業務性質變更,有減少勞工之必要,又無適當工作可供安置時。
五、勞工對於所擔任之工作確不能勝任時。 <– 最常用.

第十二條(雇主無須預告即得終止勞動契約之要件)
勞工有左列情形之一者,雇主得不經預告終止契約:
一、於訂立勞動契約時為虛偽意思表示,使雇主誤信而有受損害之虞者。
二、對於雇主、雇主家屬、雇主代理人或其他共同工作之勞工,實施暴行或有重大侮辱之行為者。
三、受有期徒刑以上刑之宣告確定,而未諭知緩刑或未准易科罰金者。
四、違反勞動契約或工作規則,情節重大者。
五、故意損耗機器、工具、原料、產品,或其他雇主所有之物品,或故意洩漏雇主技術上、營業上之秘密,致雇主受有損害者。
六、無正當理由繼續曠工三日,或一個月內曠工達六日者。


雇主依前項第一款、第二款及第四款至第六款規定終止契約者,應自知悉其情形之日起,三十日內為之<– 超過此期限, 不得再用同一理由解雇.

 勞基法網址

景氣見人心

在著名的呆伯特漫畫中, 公司是一個提供大家用不完的資源的地方. 凡是公司的資源, 都被當作是個人生計的貼補, 彷彿不這樣做就不夠聰明.

我記得早年的時候, 比方說 7、8 年前吧! 那時候公司的 pay 不錯, 所以同仁應該也都是志得意滿、意氣風發. 大家嫌公司的電腦不夠炫, 就會帶自己的電腦來上班. 我也搬過一台 PC 進公司, 那已經是我從家裡淘汰下來的機種了, 但是還是比公司的電腦先進得多 (因為電腦要 5 年以上才能報銷). 後來也有同仁搬了電腦和先進的 17″ LCD 螢幕來上班, 因為公司的標準配備低於 15″, 比較好的 monitor 都還要是 designer 或 layout 才可以用. Why? Software 工程師不是整天看電腦嗎? 為什麼螢幕設備會比平常都用工作站的 designer 還差呢? 沒辦法, 以前的 IC design house 就是特別尊重 IC 的硬體啊! 直到有 SOC (system on chip) 才改變這個態勢. 總之, 那是一個大家會把私人東西移作公用的年代.

當時, 我的文具、計算紙都是自備的, 電腦是家裡的; 不論公務或是私務, 都只打自己的手機, 沒有用到桌上的電話. 當初為了說服 George 來我們公司服國防役, 我還花了不少手機通信費. 終於騙到他來做 firmware, 而不是去當 IC designer. 此外, 出差也是開自己的車, 沒有報油錢; 出國不報交通費. 不只我是這樣, 很多人也都是這樣.

後來公司慢慢變大了, 人變多了, bonus 變少了. 有些以前不曾見過的事情也慢慢發生了. 比方說有人帶著水桶來公司提逆滲透水回去, 把自己的電器拿到公司充電, 沒加班只是來上網吹吹冷氣, 這些異象久而久之也就不奇怪了. (有一度我懷疑逆滲透水有礙健康, 就是一些公司放出來的假消息, 呵呵呵~~~)

其實我也不是 complain 這些同仁, 我想起古人說的 “倉廩實而知禮節,衣食足而知榮辱", 等到大家存夠了錢, 自然就不會在意這點小錢. 如果公司多發一點 bonus, 有些人可能回拿出 1% 回饋到公司來. 當公司減少 bonus, 另外一些人可能就會從公司挖 1% “貼補家用". 雖然公司的損失不大, 不過人心不齊是個大問題. 一旦員工不願意平白付出, 總是要算計一下得失,  那麼拼勁就有限了!

前幾年, 我們老闆私下給了我一筆 debug 獎金, 我沒有把它均分或是吃喝殆盡, 而是把大家的 monitor 都升級到 17″~19″, RAM 都加到 1GB, 自己也貼了一點錢進去. 此外, 還要讓自己用最慢的電腦、最小的螢幕以避嫌. (如果是今年拿到這筆錢的話, 喔! monitor 和 DRAM 都超便宜啊!!!) 我覺得這樣才是愛公司的花錢方法. 畢竟要用公司的錢來升級軟硬體, 不管是老闆或是 IT 部門都會有顧慮. 但是工不利其器, 怎麼要求善其事呢! 當時, 看到別的部門的 SD 螢幕都小不隆冬的時候, 大家的士氣應該有高一點吧!

又是幾年過去了, 近來的景氣比前幾年更加的低落. 不過我卻看到同仁願意增加資本支出, 我是說, 添購辦公椅. 一張一萬四千塊的椅子, 竟然有不少同仁買來坐喔! 我想這是大家對我們產品線有信心的關係吧! 如果位置坐不穩, 要高級的椅子何用呢? 是吧!

賽馬比慢

今天又看了十幾分鐘的 “回到明朝當王爺", 這次看到楊虎的白衣軍因為炸營, 所以人馬雜沓, 死了六萬人. 想到馬又想到心很手辣這方面, 我不由得想起一個著名的故事, 叫做賽馬比慢. 故事中的主角可能是一個國王兩個王子、一個富翁和兩個兒子, 或是一個董事長和兩個接班人, 總之這位大老要求兩位繼承人要比賽騎馬, 不過要比誰的馬慢. 馬比較慢的人, 就可以勝出.

這個故事之所以有名, 就是因為大家都想不到可以把馬交換騎, 這樣比慢就變成了比快. 既然是比快, 就可以中規中矩地把問題正規化了! 因此前幾個月的主管訓練裡面, 講師也重複了這個故事, 強調大家要逆向思考.

然而, 思考絕不是只有正向和逆向兩種. 因為這位出怪題目的老大, 只能算是個神智不清的傢伙吧!? 他認為兩個人選差不多, 選誰都可以; 但是出的題目卻卡著一道不知道在考誰的難關. 比方說吧! 兩位候選人已經上了馬了, 首先想到交換騎的 A 君 (不是南線專案的甲君喔), 若不能徵求 B 君的同意, 難道要把 B 君拉下馬嗎? B 君若是騎術高超, 但是 B 馬較 A 馬低劣, 他才會考慮 A 君的提案啊! 否則他拼著不換馬, 也未必會輸呢!

反之, 若是 A 君、B 君都未上馬, 那麼 A 君迅速跳上 B 馬, 加鞭而去. 此時也要看 B 君是否立即醒悟, 騎術如何? 若是 A 君頭腦較靈光, 但是 B 君騎術較精. 選繼承人的老大難道不會扼腕嗎? 所以這個故事根本是不著邊際的, 因為不知道在比甚麼?

若是 A 君立刻看破問題的關鍵, 馬上踢 B 馬一腳, 回身定住 A 馬, 那麼他應該算是贏了. 不過類似川普的老大, 有說要比瞬間速度、平均速度、最終速度嗎? 如果含糊不清, A、B 兩君沒搞清楚目標, 就蒙著頭上了, 兩位應該都不具備繼承人的資格.

再換個角度, A 君立時在 B 馬的尾巴點火, 再將自己的馬砍了. 想來不管實行細則是甚麼? 他都贏定了. 若是 B 君其實比 A 君更早想到大絕招, 但是不忍心用出來, 卻被 A 君捷足先登耍了狠, 那麼故事中應該沒有任何贏家. A 太狠、B 太溫、老大太搞怪, 這個公司或是甚麼國家應該沒有好日子可以過.

結論是: 絕對不要用怪招選繼承人! 不要用怪招決定要錄取誰! 如果連 2 選 1 都做不好, 老大不是老大. 有時候, 也不一定要兩個挑一個.