密碼加密器 - SecretQR

Post on 07-Feb-2016

168 views 0 download

description

密碼加密器 - SecretQR. 指導教授:林啟芳 專題生: 971430 詹益晨 973326 朱書賢. 研究動機. 由於 QR Code 的應用日漸普及,所以我們希望利用其便利性製作出一套應用程式。 本計畫主要是 利用 QR Code 的 方便性搭配特殊加密方法,協助一般人克服平常須記憶冗長密碼的困難 。. 系統架構. 系統架構. QR Code 編碼、解碼. QR Code 簡介. 簡易 比普通條碼能儲存更多資料 不受方向限制. QR Code 簡介. 可儲存資料類型分為數字、字母、二進位數等 共 40 種規格,數值越大所能容納的資料越長. - PowerPoint PPT Presentation

Transcript of 密碼加密器 - SecretQR

密碼加密器 - SecretQR

指導教授:林啟芳專題生: 971430 詹益晨     973326 朱書賢

研究動機• 由於 QR Code 的應用日漸普及,所以我們希望利用其便利性製作出一套應用程式。• 本計畫主要是利用 QR Code 的方便性搭配特殊加密方法,協助一般人克服平常須記憶冗長密碼的困難。

2

系統架構

3

系統架構• QR Code 編碼、解碼

4

QR Code 簡介• 簡易• 比普通條碼能儲存更多資料• 不受方向限制

5

QR Code 簡介• 可儲存資料類型分為數字、字母、二進位數等• 共 40 種規格,數值越大所能容納的資料越長

6

QR Code 資料容量 (Ver. 40)

數字 最多 7089 字元字母 最多 4296 字元

二進位數 (Byte) 最多 2953 字元中文 (UTF-8) 最多 984 字元中文 (BIG5) 最多 1800 字元

QR Code 簡介• 具容錯能力,分 L 、 M 、 O 、 H 四種

7

容錯等級L 7% 的編碼可被修正M 15% 的編碼可被修正O 25% 的編碼可被修正H 30% 的編碼可被修正

• AndroidQREncode(sourceString, qrCodeVersion); // 將 QR Code level 及需要編碼的資料當作參數

• com.swetake.util.Qrcode  // 建構 QR Code 編碼物件

• setQrcodeErrorCorrect(‘M’);   // 設定容錯率

• setQrcodeEncodeMode(‘B’);   // 設定資料類型

• setQrcodeVersion(4);  // 設定版本 ( 可容納資料大小 )

• bytesEncoding = strEncoding.getBytes("utf-8");// 將欲編碼字串轉成 Byte 後,再拿去製作矩陣

QR Encode

8

• calQrcode(bytesEncoding) // 以此函式產生與 QR Code 相對應的 boolean 二維陣列

• for (int i=0;i<bRect.length;i++){for (int j=0;j<bRect.length;j++){ if (bRect[j][i]){ // 依據陣列值,繪出條碼方塊,每個圖為 165*165 mCanvas01.drawRect(new Rect(intPadding_x+j*5, intPadding_y+i*5, intPadding_x+j*5+5, intPadding_y+i*5+5), mPaint01); }}}

QR Encode

9

• decode(byte[] data, int width, int height)// 解碼 QR Code

• rawResult = multiFormatReader.decodeWithState(bitmap);// 取得 QR Code 圖片,然後轉為 rawResult 物件

• Message.obtain(activity.getHandler(), R.id.decode_succeeded, rawResult);// 將產生之 rawResult 轉成 Message 物件,並記錄成功或失敗解碼

• handleMessage(Message message)// 若接收到成功訊息,則接著進行解析解碼完的資訊// 反之,則重新截取圖片

QR Decode

10

• handle(Result rawResult)// 處理解碼後的資料,如:解密亂數部分、顯示資料

• ResultHandler resultHandler = ResultHandlerFactory.makeResultHandler(this, rawResult);

• CharSequence displayContents = resultHandler.getDisplayContents();// 將 rawResult 轉為 ResultHandler 物件// 並透過 getDisplayContests 取得解碼後的字串

QR Decode

11

系統架構• QR Code 編碼、解碼• Source Code ( 原始資料 )• Fetch Code ( 提取碼 )• IMEI Code ( 手機序號 )• 亂數器 – Mersenne Twister

12

增加安全性

Mersenne Twister• 虛擬亂數產生器演算法,簡稱 MT 。• 分為兩種, MT 19937(32-bits) 和 MT 19937-64 。• 若一個字組長度為 k-bits ,此亂數產生器會產生一組亂數且均勻分布於 [0, 2k-1] 。

13

MT 優點• 其設定之週期很長且為最合適的值,週期為

219937-1 。因為若週期過長,將不能保證亂數產生器的品質,若週期過短,可能會產生出額外的問題。• 使用 k-distribution 的方式去作測試,發現在

1 k 623≦ ≦ 的範圍中其亂數能均勻分布。• 與其他的虛擬亂數產生演算法比較,其擁有許多特長,週期長、有效使用記憶體、良好的分布、高效能、速度快。

14

MT 主要功能• 分別為 sgenrand(seed) 和 genrand() 。• sgenrand(seed)– 用來設定初始值給 624 words 的工作區域,

seed 的範圍介於 [1 ~ 232-1] 。• genrand()– 用來產生一個 32 bits 的亂數,並且均勻分布在 0 ~ 232-1 的範圍中。

15

將來會和數據資料作 Exclusive OR並且依照我們所規定之格式去組成亂數字串

QR Encoder 架構

16

原始資料 提取碼 手機序號

亂數器 亂數器 亂數器

組合亂數字串QR Code 編碼輸出圖檔

Random Number

Random String

QR Code

Encryption

Encryption

17

X Y ZFetch IEMI Source

X’ Y ‘ Z’132

⊕ genrand + Y + 101 + X

亂數字串:  X’ + Y’ * Z’ % (Source length + 101)

QR Decoder 架構

18

Take a picture 輸入提取碼

QR Code 解碼

比對 QR Code 格式

拆開亂數字串Random String 符合

不符合

QR Decoder 架構

19

亂數器 亂數器 亂數器原始資料 提取碼 手機序號

比對 IMEI

比對提取碼顯示原始資料 不顯示原始資料

符合符合

不符合不符合

Random Number

不符合

Decryption

Decryption

20

X’ Y’ Z’

Fetch IEMI SourceX Y Z312

⊕ genrand- Y - 101 - X

亂數字串:  X’ + Y’ * Z’ % (Source length + 101)

操作流程

21

QR Encoder 流程

22

輸入資料 輸入提取碼 輸入提取確認碼 取得 IMEI( 手機序號 )

亂數器加密 QR Code編碼 輸出QR Code

QR Decoder 流程

23

拍照取得QR Code 輸入提取碼 QR Code解碼 判斷編碼格式

亂數器解密 檢查 IMEI是否相符 檢查提取碼是否相符 顯示原始資料

成果總結

24

• 與市面上的眾多 QR Code軟體截然不同 主要用於減輕平常需記憶冗長密碼的煩惱• 操作介面簡單易懂,且附有說明頁面• 加密後的密碼儲存方便且解碼容易• 採用 MT 演算法,快速產生均勻亂數• 解碼方面只需對準圖片掃描即可快速解碼

功能性易用性流暢性

• 主要有三段防護,分別為使用者自訂之 提取碼、編碼手機序號、亂數產生器資料安全

SecretQR 實作

25

SecretQR 實作

26

首頁

說明頁面

SecretQR 實作

27

編碼 – 輸入資料

編碼 – 產生 QR Code

SecretQR 實作

28

解碼 – 掃描 QR Code

解碼 – 解碼成功畫面

Reference

29

• QR Code – Wikipedia, from http://zh.wikipedia.org/zh-tw/QRCode

• 林宗澤、何元敬,「QR Code 數位影片導覽Navigation System using QR Code」,民國99年12月18 日

• Zxing 1.5 – Android , from http://code.google.com/p/zxing• QR Code Encoder Source Code , from http://www.swetake.com• Mersenne Twister – Wikipedia,

form http://en.wikipedia.org/wiki/Mersenne_twister• Mersenne Twister Source Code,

from http://www.axlradius.com/freestuff/Mersenne.java• Makoto Matsumoto & Takuji Nishimura, “Mersenne Twister: A 623-

Dimensionally Equidistributed Uniform Pseudo-Random Number Generator”, ACM Transactions on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998.

Q & A

30

Thank you!