HackMD
    • Sharing Link copied
    • /edit
    • View mode
      • Edit mode
      • View mode
      • Book mode
      • Slide mode
      Edit mode View mode Book mode Slide mode
    • Note Permission
    • Read
      • Only me
      • Signed-in users
      • Everyone
      Only me Signed-in users Everyone
    • Write
      • Only me
      • Signed-in users
      • Everyone
      Only me Signed-in users Everyone
    • More (Comment, Invitee)
    • Publishing
    • Commenting Enable
      Disabled Forbidden Owners Signed-in users Everyone
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Invitee
    • No invitee
    • Options
    • Versions
    • Transfer ownership
    • Delete this note
    • Template
    • Save as template
    • Insert from template
    • Export
    • Google Drive Export to Google Drive
    • Gist
    • Import
    • Google Drive Import from Google Drive
    • Gist
    • Clipboard
    • Download
    • Markdown
    • HTML
    • Raw HTML
Menu Sharing Help
Menu
Options
Versions Transfer ownership Delete this note
Export
Google Drive Export to Google Drive Gist
Import
Google Drive Import from Google Drive Gist Clipboard
Download
Markdown HTML Raw HTML
Back
Sharing
Sharing Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
More (Comment, Invitee)
Publishing
More (Comment, Invitee)
Commenting Enable
Disabled Forbidden Owners Signed-in users Everyone
Permission
Owners
  • Forbidden
  • Owners
  • Signed-in users
  • Everyone
Invitee
No invitee
   owned this note    owned this note      
Published Linked with
Like BookmarkBookmarked
Subscribed
  • Any changes
    Be notified of any changes
  • Mention me
    Be notified of mention me
  • Unsubscribe
Subscribe
廢文編碼器 ========== [2019/3/9 g0v 第三十三次黑客松提案投影片](https://docs.google.com/presentation/d/1APtPAmKYVbEoQFNb0I9_2tzamKfOCYU9HacoLUIoz3U/edit?usp=sharing) 這個提案想做一個編碼系統,可以把資訊編碼成看起來無意義的廢文,例如: > 明天下午三點在立法院前集合 透過編碼器可以編碼成: > 我允許你走進我的世界,再不對你好點,必死無疑;人不要臉,我希望有一天能用鼠標雙擊我的錢包,工作,天哪,女人一定要對自己好一點。 看似無意義的廢文。不知情的人會以為這純粹是無意義的廢文,但是知道的人就可以透過編碼器將他解碼回原資訊,這樣可以避開一些有做網路文字監控的環境的審查,以達到傳遞資訊的效果。(PS: 以上編碼結果是透過 moretext 隨機產生的範例,不是實際編碼器編碼的結果) 參與者 ----- * Ronny Wang: 大松提案者 * 建穎: 跳坑者 * Sing Chen: 六言絕句詩人 * WJ : 跳坑 + 1 協作記錄 ------- * [20190309 g0v-hackath33n 黑客松](https://g0v.hackmd.io/xhe02MfFR4-B-UW3pTHKUQ) * Github Repo - [junk-encoder](https://github.com/Asing1001/junk-encoder) * 或許可以用標點符號來當識別碼 加密和編碼的差別 ------------- * 加解密和編解碼是兩個不同的動作,本提案主要是要做編解碼不是做加解密,但是可以搭配另外的加密系統來做到加密效果,以下說明加解密和編解碼的差別: * 常見加密流程有對稱和不對稱加密兩種 * 對稱式加密:所有人共用一組私鑰,只要私鑰外流加密就可能會被破解 * 加密:原文 + 共用私鑰 ===加密===> 密文 * 解密:密文 + 共用私鑰 ===解密===> 原文 * 風險:私鑰一外流整個加密就會被破解 * 非對稱式加密:利用 RSA 之類的演算法產生出公鑰和私鑰對,公鑰可以讓任何人知道,私鑰則是要保護好只能自己知道,避開交換 * 加密:原文 + 公鑰 ===加密===> 密文 * 解密:密文 + 私鑰 ===解密===> 原文 * 風險:公鑰雖然可以讓任何人知道,但是傳遞公鑰過程假如是能夠被監聽並竄改,可能會發生中間人攻擊(Man-In-The-Middle-Attack),需另外確保傳遞的公鑰是否是有被竄改的 * 編解碼主要做的如下: * 編碼:原文 ===編碼===> 編碼文 * 解碼:編碼文 ===解碼===> 原文 * 任何人用同樣一個編碼解碼流程產生出來的資訊是相同的 廢文解碼器原理 -------- 收集各種常見文法,例如 > 文法1:「{人物名詞}{及物動詞}{物品名詞}」 > 文法2:「{人物名詞}在{地點名詞}{動詞}」 > 文法3:「{人物名詞}在{時間名詞}{動詞}{食物名詞}」 > ... 並且收集各種詞性常見字,例如: > 人物名詞:爸爸、媽媽、哥哥、姊姊... > 及物動詞:吃、打、喝、玩... > 地點名詞:家、辦公室、廁所、門口... > 物品名詞:電動、電視、汽車... > ... 幫各種文法、標點符號、常用詞都加上代碼,然後定義出該文法加上該詞的編碼結果。例如「爸爸打電動」符合文法1的「{人物名詞}{及物動詞}{物品名詞}」,而人物名詞是「爸爸」、及物動詞是「吃」、物品名詞是「電動」,三者也有各自的代碼,那這樣就可以把代碼透過函式轉換成原始的資訊,反之原始的資訊也可以透過這編碼方式來編。 能力等級 ------- > [name=Ronny Wang] 以下是我預想這個編碼器可能有的能力等級,能做到的等級越高,越難被審查程式發現這些文章是透過程式產生的 等級1: 把 binary 編碼成隨機排序的中文字,如下: > 另天開了還導一人間市屋流正的著重;為用境異微但臺! 等級2: 把 binary 編碼成隨機排序的詞,如下: > 爸爸安靜公寓客人明天,牆巧克力請問慶祝,是市場世界圖片! 等級3: 把 binary 編碼成符合中文文法的隨機詞句,如下: > 爸爸在明天需要外套,媽媽正在門外打電動,小狗學習興趣。 等級4: 統計常用詞頻,讓常見的詞(你、我、他、是、說、的...)在經過編碼後出來的頻率跟真實對話差異不大 等級5: 動詞跟名詞之間可能也要有對應關係,應避開「小狗打電動」這種動作跟主詞不太相符的詞句 等級N: 跟一篇正常有意義的文章毫無分別,不會被當作奇怪的文章(可能可以包裝成健康文章、美食文章等...),但是可以被解碼出想要的資訊 可能限制 ------- * 無法產生真正有意義的文章,人類來閱讀還是有機會發現他是機器產生的(不過只要能做到機器難以判斷,就可以大幅減少被機器成功自動言論審查的機會) * 編碼後的長度可能會比原長度長上好幾倍(如果文法庫和字庫能夠越龐大,編碼的長度倍率差應該就有可能縮小,不過相對的文法庫和字庫的維運成本就會上升) * 編碼的詞庫版本可能會一直調整,但是一調整了詞庫可能就無法解密原先的資訊,而從編碼後的文字是無法判斷出詞庫版本的 需要開發幫助 ---------- * 收集常用文法、各詞性常見字並編碼(詞庫內常見字應盡量採用中性不易被列作審查關鍵字的文字,以免發生納入的詞句變敏感詞的話詞庫需要重編) * 設計一套轉換公式,可以將任意二進位字串編碼成廢文,以及可以將廢文解碼回原二進位字串 參考資訊 ------- * http://www.spammimic.com 把任意資訊編碼成看起來像垃圾郵件的內容並且可以解碼回來 * http://www.keyfc.net/bbs/tools/tudoucode.aspx 與佛論禪,可以把任何資訊編碼成佛語再解碼回來 * http://chinesedigger.blogspot.com/2007/12/most-used-chars.html 常用中文字、詞、句型資料整理 討論 --- > [name=Ronny Wang]這邊大家可以隨意討論想法 > [name=Bess]酷 > [name=小蟹]可以用有意義的文字,只是變成編碼後一個 char 會對應到一個句子。因此有意義的句子會很長。 > [name=Ronny Wang]我更正了一下,把「無法產生真正有意義的文字」改成「無法產生真正有意義的文章」 > [name=小蟹]編解碼只要開源就一定可以轉回來?除非把 key/secret 藏在 server 上,只有維護者可以知道。 > [name=Ronny Wang]不過只要編碼前的文字可以接受任意 binary (可能是已經 SSL 加密後的 binary 字串),那麼透過「假文字編碼器」解碼回去 binary 也無法證實該文字內容是什麼。如果「假文字編碼器」任何中文文本也都可以編碼出結果,那麼也無法透過這個公開規則破解或識別他是否是假文字加密後的東西 >[name=小蟹]也就是編碼同時要提供 key/secret,或是說 key/secret 隨機產生,但是使用者得自己記住,否則就轉不回來了。 >[name=Ronny Wang]我想把編碼和加解密脫勾,所以前面有一個段落在寫編碼和加解密差別是什麼,大家使用前還是要採用一個既有的加解密系統擋在前面比較安全 >[name=小蟹]所以要做的是 a. `密文 ===編碼===> 編碼文` 還是 b. `原文 ===編碼===> 編碼文` 啊?我現在看起來比較像是 a。 > >[name=Ronny Wang] 這專案要做的是像 base64 的那一層,可以 encode 和 decode ,至於加密的部份可以由另外專案另外把這個包起來組合加密的部份 >[name=小蟹]我覺得只要沒有做到 `原文 ===加密===> 密文 ===編碼===> 編碼文`,大概就很難推…… 現行我用 base64 編碼後,將每個 char 去對應一個 moretext,不就會是你敘述的需求了? > [name=Ronny Wang] 我這個專案想先 focus 在 encode/decode 這端,再加上 encrypt 和 decrypt 的話就交給其他專案幫忙包進去,主要是加解密還包含了私鑰管理的資安觀念,這部份我覺得如果包進這個專案內了有點龐大,但是當然最後交給使用者端使用的東西一定要包含加解密的 > [name=Hans Chiu] 想到在圖片編碼裡有個技術是將資訊編碼在每個像素的最低有效位元,這樣做人眼看不出差異卻能隱藏附加資訊;同樣的技術不知道能不能應用在文字上,例如透過適當替換同義詞來將機密資訊編碼在語意通順的文章中? > [name=idryman] 建議可將編碼部分版本化。若有新的詞彙被禁(例如包子),就使用新的版本編解碼。版本號或許可以放入密碼中,而不是加密後的文字。 > [name=Ronny Wang] 關於新敏感詞的處理,我的想法是編碼在設計上要能夠允許同一個原文,可以被編成幾百幾千種不同的型式(可能作法是編碼時加上一個隨機字元,解碼時忽略他就好了),這樣子如果遇到正好編碼出敏感詞(例如:你還願意幫我嗎?其中有「還願」,但是這是意外出現的),就可以把隨機字元換掉重刷有敏感詞那一段,刷到沒有敏感詞為止。這樣作法就不需要頻繁的配合敏感詞更新詞庫,只要更新敏感詞庫就好了,這樣也不用塞入版本號了。 > [name=Rice] 最近在八卦版都有這類文章,如:[ [問卦] 數學系教授插合理穴,跳淡水河很隨和](https://www.ptt.cc/bbs/Gossiping/M.1553176518.A.DF7.html),難道已經有人開發出來惹?

Import from clipboard

Advanced permission required

Your current role can only read. Ask the system administrator to acquire write and comment permission.

This team is disabled

Sorry, this team is disabled. You can't edit this note.

This note is locked

Sorry, only owner can edit this note.

Reach the limit

Sorry, you've reached the max length this note can be.
Please reduce the content or divide it to more notes, thank you!

Import from Gist

Import from Snippet

or

Export to Snippet

Are you sure?

Do you really want to delete this note?
All users will lost their connection.

Create a note from template

Create a note from template

Oops...
This template has been removed or transferred.


Upgrade

All
  • All
  • Team
No template.

Create a template


Upgrade

Delete template

Do you really want to delete this template?

This page need refresh

You have an incompatible client version.
Refresh to update.
New version available!
See releases notes here
Refresh to enjoy new features.
Your user state has changed.
Refresh to load new user state.

Sign in

Forgot password

or

Sign in via GitHub

New to HackMD? Sign up

Help

  • English
  • 中文
  • 日本語

Documents

Tutorials

Book Mode Tutorial

Slide Example

YAML Metadata

Resources

Releases

Blog

Policy

Terms

Privacy

Cheatsheet

Syntax Example Reference
# Header Header 基本排版
- Unordered List
  • Unordered List
1. Ordered List
  1. Ordered List
- [ ] Todo List
  • Todo List
> Blockquote
Blockquote
**Bold font** Bold font
*Italics font* Italics font
~~Strikethrough~~ Strikethrough
19^th^ 19th
H~2~O H2O
++Inserted text++ Inserted text
==Marked text== Marked text
[link text](https:// "title") Link
![image alt](https:// "title") Image
`Code` Code 在筆記中貼入程式碼
```javascript
var i = 0;
```
var i = 0;
:smile: :smile: Emoji list
{%youtube youtube_id %} Externals
$L^aT_eX$ LaTeX
:::info
This is a alert area.
:::

This is a alert area.

Versions

Versions

Upgrade now

Version named by    

More Less
  • Edit
  • Delete

Note content is identical to the latest version.
Compare with
    Choose a version
    No search result
    Version not found

Feedback

Submission failed, please try again

Thanks for your support.

On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

Please give us some advice and help us improve HackMD.

 

Thanks for your feedback

Remove version name

Do you want to remove this version name and description?

Transfer ownership

Transfer to
    Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.