首页
社区
课程
招聘
[原创]The XOR Secret in Our Computer System
2009-5-5 02:46 54547

[原创]The XOR Secret in Our Computer System

2009-5-5 02:46
54547
The XOR Secret in Our Computer System

Rock

[email]rock@phate.tw[/email]

摘要

隨著資訊科技的進步,帶動各項產業資訊化、電腦化及數位化,雖然此等便利豐富人類生活,另一方面卻存在著不為人知的隱憂。本文即以一例XOR (Exclusive or),並搭配二補數概念,分別就(1)技術面(2)教科書面(3)法律面(4)密碼系統面等四個方向來探討。

一、前言

以前我們會形容不識字且沒接受教育的人為文盲,那現在我們對那些不會操作電腦也不知道如何開機的人又是怎麼稱呼?十幾年前,知名電影「The Net」(網路上身) 演活了駭客在網路普及的環境中所帶來的威脅,這也突顯兩個議題:資訊系統的安全性人們的警覺性。基於電腦製造的技術突飛猛進,軟體及軔體升級便利也易於更新,且硬體多為積體電路及邏輯元件。因此,對多數人而言,軟體更容易比這些硬體存在漏洞或是缺陷。本研究擬針對XOR(exclusive or, XOR)於x86 系列CPU (Central Processor Unit)組譯過程進行剖析,接著探討二補數數字系統(Two’s complement number system)機制隱含之盲點,進而將二者結合後,所產生更大的震撼。第二節為電腦系統現況,說明組合語轉碼的特例,第三節探討二補數系統的理論基礎缺陷,第四節則列舉四個構面所產生的難題,結論於最後著墨。

二、電腦系統現況

Intel為個人電腦CPU之龍頭,其市佔率在全球有舉足輕重之地位。因此,本文以x86 系列之CPU 為一開端,並說明自286時代即存在的問題。CPU 指令集(CPU Instruction Set)為電腦核心的指令集,不論高階語言或是低階語言,不論是編譯器或是組譯器,都要按照CPU的Op Code format將程式轉換成機器碼(machine code)。而 CPU instruction Set 本身就存在CPU內部,可看成是CPU內部的指令,x86 系列CPU提供簡要的組合語言指令集,使用這些組合語言指令,是不用透過組譯器再行組譯,即直接被CPU 所接受。根據現有學術文獻指出,早期Pentium CPU 存在除法缺陷[1],爾後未曾出現學術性文章探討CPU缺陷問題。
舉一個XOR 指令來說明令人覺得疑惑之處。這個例子是以286的assembly code 為主,沒有使用假指令(pseudo code),CPU 規格為 Intel Centrino Pentium Mobil processor 1100 MHz。所使用的軟體為 Windows XP 內所提供之 debug.exe,檔案大小為20634 bytes。讀者自行實證時,會發現指令碼前端新增一個0x66,此為32 bits mode,16 及 32 bit mode 差別只在於暫存器(register)的長度不同,並不影響指令基本轉碼的功能及目的。以下給出三個實例,分別說明暫存器之間進行XOR 運算所產生的變化,分別指出一個位元、三個位元及五個位元差異。如圖一所示。

.....完整文件置於附件中.....
.....敬請不吝指教.....謝謝.....

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

上传的附件:
收藏
免费 7
打赏
分享
最新回复 (84)
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
stalker 8 2009-5-7 10:34
2
0
不知道能不能看懂,不过下载了就要回复以示支持
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
rockinuk 8 2009-5-7 15:32
3
0


謝謝支持!
這可是我自認近年來最喜歡的作品。
它是曠世巨著,可惜懂它的人不多。
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
etlove 2009-5-7 15:51
4
0
先下载了看看吧
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 4 2009-5-7 16:05
5
0
[QUOTE=rockinuk;619166]

谢谢支持!
这可是我自认近年来最喜欢的作品。
它是旷世巨著,可惜懂它的人不多。
[/QUOTE]

有点那么个短
要懂也难
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zapline 2009-5-7 17:09
6
0
寄存器xor后的变化
知道了接着干什么?
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
rockinuk 8 2009-5-7 17:31
7
0
謝謝支持。
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
rockinuk 8 2009-5-7 17:33
8
0
會短嗎?
我已儘量的寫的很長了。
我現在寫 paper 都不超過 4 個 pages 的。
頂多加一些方程式湊足 6 頁。
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
rockinuk 8 2009-5-7 17:33
9
0
重點不在於 register 的問題。
在於 XOR 本身。
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
rockinuk 8 2009-5-7 17:51
10
0
1)

Let  A ⊕ B = C'.
set A= -12, B = -20 , then C'= (-12)⊕(-20) = (24).
在計算機裏,負數是用二補碼的方式來表示。

       11110100  ==> -12
       11101100  ==> -20
⊕---------------------------
       00011000  ==> 24.

2)

Let  A ⊕ B = C.
set A= 12, B= 20 , then C= (12)⊕(20) = (24).

               01100  ==> 12
               10100  ==> 20
⊕-------------------------
               11000  ==> 24.

3)

所以得到一個結論
當 A , B 都是 odd numbers 時, 則  A ⊕ B = (-A) ⊕ (-B).

想一想一個問題,可能要學習過密碼學的人才會有一點 sense,有不少密碼系統都會做一個 XOR 的步驟。

A ⊕ B = C 這樣型態的步驟。
我們可以造出一個 (-A) ⊕ (-B) =C',且 C=C'。
若 C 是 cipher,那我們可以偽造出一個 C' 跟 C 一樣的結果。
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 4 2009-5-7 17:59
11
0
难怪人家叫你去虚拟机版
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
rockinuk 8 2009-5-7 18:05
12
0
什麼意思?
指那個虛擬機版的版主的話嗎?
來不來台灣的  phate (飛特論壇) 客串一下當 VIP~
雪    币: 993
活跃值: (437)
能力值: ( LV12,RANK:403 )
在线值:
发帖
回帖
粉丝
Loka 2 2009-5-7 19:38
13
0
以8比特为例,其它类同,我们假定一个正数A的各位为A1 A2 A3 A4 A5 A6 A7 A8,对于1个正奇数,二进制表示时最后一位A8必定为1,如71,二进制为01000111。它对应的负数B的二进制表示为10111001,也就是它的各位取反后加1。此时A8取反必为0,加1时不会引起进位,固而B1~B7实为A1~A7的取反,即0变1,1变0,也就是异或上1,而B8必定为1,因此就有B = A^FE,对于两个正奇数A和A',对应的负数为B和B' ,B=A^FE,B'=A'^FE,所以B^B'=(A^FE)^(A'^FE)=A^A'。这有什么可奇怪的????
对于正数为偶数的情况,因为A8必为0,取反后必定1,再加上1,B8必为0,但会引起进位,进位会根据A7~A1的值引发不同的变化,导致B7~B1不象奇数时那么确定,具体情况有兴趣的可以自己在纸上画一下就OK,打字太累了。
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
rockinuk 8 2009-5-7 21:46
14
0


終於有人回答我了~

1)
有什麼其奇怪?
看起來不奇怪,但也很奇怪。
我已經說明了,若不知道為什麼的話,可以先去閱讀本帖裏面用到的 referece 4 那篇文章。
如果再不懂,我也沒辦法了。

2)
A 與 B 均為 even numbers 時,我有證明要符合某些條件下才會成立。
之前的 12 , 20 只是其中一例。 68 及 124 也是符合的。
還有很多,有興趣者,可以再細部討論。
雪    币: 993
活跃值: (437)
能力值: ( LV12,RANK:403 )
在线值:
发帖
回帖
粉丝
Loka 2 2009-5-7 22:11
15
0
这个特征本身没什么,至于它可以被利用来做什么事,那是另一回事,有空拜读一下你说的那篇文章。

不用证明,只要两个数从后倒数到各自第一个为1的比特为止,所有的比特位内容相同就行。
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
rockinuk 8 2009-5-7 23:03
16
0
1)
我直接給你附件,你也不用花時間去找了。

2)
如果你認為不用證明,那我也不能說些什麼。
謝謝你花時間回我這帖。
上传的附件:
雪    币: 993
活跃值: (437)
能力值: ( LV12,RANK:403 )
在线值:
发帖
回帖
粉丝
Loka 2 2009-5-7 23:45
17
0
谢谢!看了一下,你的意思是可以在r^s上做手脚?最后适当的修改t,可以造出一个具有欺骗性的签章。不知道我理解的对不对?
PS:我上面说的不用证明,只是指那个东西应该很直观,不必花太多的时间,没有别的意思。
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
rockinuk 8 2009-5-8 00:36
18
0
1)
是的,你的理解是對的。
我的問題在於 當 r 及 s 都是 odd numbers 時,(r⊕s) = (-r⊕-s).
若當 r 及 s 都是 even numbers 時, 不一定會有 (r⊕s) = (-r⊕-s).
但有可能發生(r⊕s) = (-r⊕-s)。

2)
r, s : 都是 odd number ,機率是 四分之一。
r, s : r 為 odd 且 s 為 even ,機率是 四分之一。
r, s : r 為 even 且 s 為 odd,機率是 四分之一。
r, s : 都是 even number ,機率是 四分之一。
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
yingyue 2009-5-10 09:40
19
0
下了,估计看不懂
雪    币: 370
活跃值: (52)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
moonife 8 2009-5-10 12:23
20
0
谢谢楼主分享 很精彩 学习了
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xxyyzasabc 2009-5-10 12:26
21
0
。。。看着二进制就头晕啊
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 26 2009-5-10 12:45
22
0
虽然是旷世巨著,我认为还是这篇更为易懂。
http://www.cis.nctu.edu.tw/~gis91572/Digital_Circuit_YP/DC.html
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
rockinuk 8 2009-5-10 14:01
23
0
哈~~哈~~哈~~哈~~

1)
forgot 版大指的那個是台灣交通大學的教材(材料),那可是跟上海交大一樣的實力呢。
我當然不敢跟他們比囉。

當然啦,他們的教材(材料)做的很棒。

2)
我目的是在指出:

2.1) 大家都以為 assembly code 與 machine code 具有 one to one 的relationship mapping,是 based-on machine-dependence ,可是我以 practical case 來看,其實這存在一個矛盾點。

2.2) 二補碼(數)系統,與  XOR 湊在一起,就會產生那樣的缺陷,這是學術界及實務界所沒有探討過的問題。
因為你們大家都是高手,因此,我並沒有講的更細微,我就直接指出我的重點,我想大家會明瞭。
雪    币: 144
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
静慕者 2009-5-10 14:59
24
0
我第一次发现我看不懂中国文字~楼主好像能看懂简体字~那直接用简体不就好了?~
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
风尘秀吉 2009-5-10 15:27
25
0
非常感谢~~~
游客
登录 | 注册 方可回帖
返回