逆向openssl框架中RSA算法跌入的坑

在坑里面折騰了兩天時間,搞的是心力憔悴。最后問題解決后才發(fā)現(xiàn)氓皱,在這個坑里折騰這么久當真不應該。分享下心路歷程勃刨,后來者引以為戒波材。

問題描述

RSA算法最典型的使用方式是在客戶端生成公鑰私鑰對,將公鑰發(fā)送到服務器身隐。然后服務器與客戶端間的通信數(shù)據(jù)就可以通過這一對公鑰私鑰加解密了廷区。這個典型流程也可以參考我這篇文章

提交公鑰數(shù)據(jù)最常見的方式是將公鑰信息轉化成一串字符串后提交贾铝。還有一種方式是同時提取出公鑰中的modules與exponent數(shù)據(jù)上傳隙轻,而這個坑就出現(xiàn)在后一種方式上。

struct rsa_st {
    /*
     * The first parameter is used to pickup errors where this is passed
     * instead of aEVP_PKEY, it is set to 0
     */
    int pad;
    long version;
    const RSA_METHOD *meth;
    /* functional reference if 'meth' is ENGINE-provided */
    ENGINE *engine;
    BIGNUM *n;
    BIGNUM *e;
    BIGNUM *d;
    BIGNUM *p;
    BIGNUM *q;
    BIGNUM *dmp1;
    BIGNUM *dmq1;
    BIGNUM *iqmp;
    /* be careful using this if the RSA structure is shared */
    CRYPTO_EX_DATA ex_data;
    int references;
    int flags;
    /* Used to cache montgomery values */
    BN_MONT_CTX *_method_mod_n;
    BN_MONT_CTX *_method_mod_p;
    BN_MONT_CTX *_method_mod_q;
    /*
     * all BIGNUM values are actually in the following data, if it is not
     * NULL
     */
    char *bignum_data;
    BN_BLINDING *blinding;
    BN_BLINDING *mt_blinding;
};

在一次破解實踐中垢揩,我注意到自己demo中用openssl生成的公鑰信息結構中n玖绿、e的值與動態(tài)調試app中的數(shù)據(jù)恰好互換了位置:即app中n與demo中的e一致,app中e與demo中n一致叁巨。給人的感覺好像是這個app重寫了openssl里的RSA對象結構斑匪,導致了n、e的位置與公開的頭文件不一致俘种。當時我也有想到可能是openssl版本不一致導致,但偷懶的情緒使我完全沒有在這條路上深入下去绝淡。

我按照第一種想法簡單的將n宙刘、e的值手動互換并上報到服務器,然后服務器也成功接受并返回了加密的數(shù)據(jù)牢酵,只是無法用私鑰成功解密悬包。如此這樣成功入坑,并在坑里反復折騰馍乙,想盡各種辦法布近,就是沒有任何效果垫释。

問題解決

最終無奈之下決定下載個低版本試試,在openssl官網(wǎng)下載了一個1.0.0版本撑瞧。編譯后引入工程棵譬,測試發(fā)現(xiàn)n、e值不在像以前那樣錯位了预伺,服務器返回數(shù)據(jù)也成功解密了订咸。天終于又亮了,心情瞬間陽光普照了酬诀。脏嚷。。瞒御。

問題反思

這個問題的本質是目標app使用的openssl版本與我使用的版本不一致父叙,而這兩個版本在RSA對象結構上的細微差別恰好導致了問題的出現(xiàn)。

回頭反思整個入坑過程肴裙,最主要的原因還是自己對openssl中RSA結構不熟悉導致趾唱。如果能夠對RSA結構體內的每個成員變量的含義了如指掌、對RSA的算法原理洞若觀火践宴,相信應該一眼就能看出問題的本質來鲸匿。看來后面要補一補基本算法方面的缺了阻肩,有人能給推薦本常用加密算法的書籍么骇陈?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市咏尝,隨后出現(xiàn)的幾起案子熙侍,更是在濱河造成了極大的恐慌,老刑警劉巖柒室,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渡贾,死亡現(xiàn)場離奇詭異,居然都是意外死亡雄右,警方通過查閱死者的電腦和手機空骚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來擂仍,“玉大人囤屹,你說我怎么就攤上這事》暧妫” “怎么了肋坚?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我智厌,道長诲泌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任铣鹏,我火速辦了婚禮敷扫,結果婚禮上,老公的妹妹穿的比我還像新娘吝沫。我一直安慰自己呻澜,他們只是感情好,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布惨险。 她就那樣靜靜地躺著羹幸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辫愉。 梳的紋絲不亂的頭發(fā)上栅受,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機與錄音恭朗,去河邊找鬼屏镊。 笑死,一個胖子當著我的面吹牛痰腮,可吹牛的內容都是我干的而芥。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼膀值,長吁一口氣:“原來是場噩夢啊……” “哼棍丐!你這毒婦竟也來了?” 一聲冷哼從身側響起沧踏,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤歌逢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后翘狱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秘案,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年潦匈,在試婚紗的時候發(fā)現(xiàn)自己被綠了阱高。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡茬缩,死狀恐怖赤惊,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情寒屯,我是刑警寧澤荐捻,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站寡夹,受9級特大地震影響处面,放射性物質發(fā)生泄漏。R本人自食惡果不足惜菩掏,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一魂角、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧智绸,春花似錦野揪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至迹恐,卻和暖如春挣惰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背殴边。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工憎茂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锤岸。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓竖幔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親是偷。 傳聞我的和親對象是個殘疾皇子拳氢,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內容

  • 轉:http://caisenchen.blog.163.com/blog/static/552865502008...
    right_33cb閱讀 4,284評論 0 4
  • 姓名:于川皓 學號:16140210089 轉載自:https://baike.baidu.com/item/RS...
    道無涯_cc76閱讀 2,540評論 0 1
  • 前言 早期互聯(lián)網(wǎng)數(shù)據(jù)傳輸是基于TCP/IP模型完成數(shù)據(jù)交換,其各層對傳輸?shù)臄?shù)據(jù)包進行各協(xié)議的封裝晓猛,從數(shù)據(jù)的發(fā)送方到...
    魏鎮(zhèn)坪閱讀 6,561評論 1 11
  • 文中首先解釋了加密解密的一些基礎知識和概念饿幅,然后通過一個加密通信過程的例子說明了加密算法的作用,以及數(shù)字證書的出現(xiàn)...
    納蘭三少閱讀 1,905評論 1 6
  • 我想象中完美的你 當我漸漸的了解你的每一面 是否還會如此的心心念念 這場比賽我信心滿滿 卻又覺得前路漫漫 每個人心...
    菀卿閱讀 219評論 0 0