密碼加密器 - secretqr

31
密密密密密 - SecretQR 密密密密 密密密 密密密971430 密密密 973326 密密密

Upload: kurt

Post on 07-Feb-2016

168 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: 密碼加密器 -  SecretQR

密碼加密器 - SecretQR

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

Page 2: 密碼加密器 -  SecretQR

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

2

Page 3: 密碼加密器 -  SecretQR

系統架構

3

Page 4: 密碼加密器 -  SecretQR

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

4

Page 5: 密碼加密器 -  SecretQR

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

5

Page 6: 密碼加密器 -  SecretQR

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

6

QR Code 資料容量 (Ver. 40)

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

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

Page 7: 密碼加密器 -  SecretQR

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

7

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

Page 8: 密碼加密器 -  SecretQR

• 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

Page 9: 密碼加密器 -  SecretQR

• 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

Page 10: 密碼加密器 -  SecretQR

• 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

Page 11: 密碼加密器 -  SecretQR

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

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

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

QR Decode

11

Page 12: 密碼加密器 -  SecretQR

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

12

增加安全性

Page 13: 密碼加密器 -  SecretQR

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

13

Page 14: 密碼加密器 -  SecretQR

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

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

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

14

Page 15: 密碼加密器 -  SecretQR

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

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

15

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

Page 16: 密碼加密器 -  SecretQR

QR Encoder 架構

16

原始資料 提取碼 手機序號

亂數器 亂數器 亂數器

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

Random Number

Random String

QR Code

Encryption

Page 17: 密碼加密器 -  SecretQR

Encryption

17

X Y ZFetch IEMI Source

X’ Y ‘ Z’132

⊕ genrand + Y + 101 + X

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

Page 18: 密碼加密器 -  SecretQR

QR Decoder 架構

18

Take a picture 輸入提取碼

QR Code 解碼

比對 QR Code 格式

拆開亂數字串Random String 符合

不符合

Page 19: 密碼加密器 -  SecretQR

QR Decoder 架構

19

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

比對 IMEI

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

符合符合

不符合不符合

Random Number

不符合

Decryption

Page 20: 密碼加密器 -  SecretQR

Decryption

20

X’ Y’ Z’

Fetch IEMI SourceX Y Z312

⊕ genrand- Y - 101 - X

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

Page 21: 密碼加密器 -  SecretQR

操作流程

21

Page 22: 密碼加密器 -  SecretQR

QR Encoder 流程

22

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

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

Page 23: 密碼加密器 -  SecretQR

QR Decoder 流程

23

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

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

Page 24: 密碼加密器 -  SecretQR

成果總結

24

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

功能性易用性流暢性

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

Page 25: 密碼加密器 -  SecretQR

SecretQR 實作

25

Page 26: 密碼加密器 -  SecretQR

SecretQR 實作

26

首頁

說明頁面

Page 27: 密碼加密器 -  SecretQR

SecretQR 實作

27

編碼 – 輸入資料

編碼 – 產生 QR Code

Page 28: 密碼加密器 -  SecretQR

SecretQR 實作

28

解碼 – 掃描 QR Code

解碼 – 解碼成功畫面

Page 29: 密碼加密器 -  SecretQR

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.

Page 30: 密碼加密器 -  SecretQR

Q & A

30

Page 31: 密碼加密器 -  SecretQR

Thank you!