1.1. ç®ä»
计ç®æºè¡ä¸ä»ä¸è
对åå¸è¿ä¸ªè¯åºè¯¥é常çæï¼åå¸è½å¤å®ç°æ°æ®ä»ä¸ä¸ªç»´åº¦åå¦ä¸ä¸ªç»´åº¦çæ å°ï¼é常使ç¨åå¸å½æ°å®ç°è¿ç§æ å°ãé常ä¸ç使ç¨y = hash(x)çæ¹å¼è¿è¡è¡¨ç¤ºï¼è¯¥åå¸å½æ°å®ç°å¯¹xè¿è¡è¿ç®è®¡ç®åºä¸ä¸ªåå¸å¼yã
åºåé¾ä¸åå¸å½æ°ç¹æ§ï¼
å½æ°åæ°ä¸ºstringç±»åï¼
åºå®å¤§å°è¾åºï¼
计ç®é«æï¼
collision-free å³å²çªæ¦çå°ï¼x != y => hash(x) != hash(y)
éèåå§ä¿¡æ¯ï¼ä¾å¦åºåé¾ä¸å个èç¹ä¹é´å¯¹äº¤æçéªè¯åªéè¦éªè¯äº¤æçä¿¡æ¯çµï¼èä¸éè¦å¯¹åå§ä¿¡æ¯è¿è¡æ¯å¯¹ï¼èç¹é´ä¸éè¦ä¼ è¾äº¤æçåå§æ°æ®åªä¼ è¾äº¤æçåå¸å³å¯ï¼å¸¸è§ç®æ³æSHAç³»ååMD5çç®æ³
1.2. åå¸çç¨æ³
åå¸å¨åºåé¾ä¸ç¨å¤å¹¿æ³ï¼å
¶ä¸æ们称ä¹ä¸ºåå¸æéï¼Hash Pointerï¼
åå¸æéæ¯æ该åéçå¼æ¯éè¿å®é
æ°æ®è®¡ç®åºæ¥çä¸æåå®é
çæ°æ®æå¨ä½ç½®ï¼å³å
¶æ¢å¯ä»¥è¡¨ç¤ºå®é
æ°æ®å
容åå¯ä»¥è¡¨ç¤ºå®é
æ°æ®çåå¨ä½ç½®ãä¸å¾ä¸ºHash Pointerç示æå¾
HashPointerå¨åºåé¾ä¸ä¸»è¦æ两å¤ä½¿ç¨ï¼ç¬¬ä¸ä¸ªå°±æ¯æ建åºåé¾æ°æ®ç»æãäºè§£åºåé¾ç读è åºè¯¥ç¥éåºåé¾æ°æ®ç»æç±åä¸åºåååéè¿åºåä¹é´çæéè¿è¡è¿æ¥ï¼è¿ä¸ªæé使ç¨çå°±æ¯å¾ç¤ºçHashPointer.æ¯ä¸ªåºåä¸é½åå¨äºåä¸ä¸ªåºåçHashPointerãè¿æ ·çæ°æ®ç»æç好å¤å¨äºåé¢åºåå¯ä»¥æ¥æ¾åé¢ææåºåä¸çä¿¡æ¯ä¸åºåçHashPointerç计ç®å å«äºåé¢åºåçä¿¡æ¯ä»èä¸å®ç¨åº¦ä¸ä¿è¯äºåºåé¾çä¸æ篡æ¹çç¹æ§ã第äºä¸ªç¨å¤å¨äºæ建Merkle Tree. Merkle Treeçå个èç¹ä½¿ç¨HashPointerè¿è¡æ建ï¼å ³äºåºåé¾æ°æ®ç»æ以åMerkleTreeçå 容æ们å¨åç»æç« ä¸è¿è¡è¿ä¸æ¥ä»ç»ã
åå¸è¿å¨å ¶ä»ææ¯ä¸ææåºç¨ä¾å¦:交æéªè¯ä»¥åæ°åç¾åççã
2.å å¯ç®æ³
2.1ç®è¿°
å å¯ç®åèè¨å°±æ¯éè¿ä¸ç§ç®æ³æ段å°å¯¹åå§ä¿¡æ¯è¿è¡è½¬æ¢ï¼ä¿¡æ¯çæ¥æ¶è è½å¤éè¿ç§é¥å¯¹å¯æè¿è¡è§£å¯ä»èå¾å°åæçè¿ç¨ãæç §å å¯æ¹å解å¯æ¹ç§é¥ç¸åä¸å¦å¯ä»¥å°å å¯ç®æ³å¤§è´å为ä¸ç§åç±»åï¼
对称å å¯
对称å å¯çå å¯è§£å¯æ¹ä½¿ç¨ç¸åçç§é¥ï¼è¿ç§æ¹å¼ç好å¤å¨äºå 解å¯çé度快ä½æ¯ç§é¥çå®å
¨ååæ¯è¾å°é¾ï¼å¸¸è§å¯¹ç§°å å¯ç®æ³æDES,AES,...
é对称å å¯
é对称å å¯ä½ç³»ä¹ç§°ä¸ºå
¬é¥ä½ç³»ï¼å 解å¯æ¶å å¯æ¹æ¥æå
¬é¥åç§é¥ï¼å å¯æ¹å¯ä»¥å°å
¬é¥åéç»å
¶ä»ç¸å
³æ¹ï¼ç§é¥ä¸¥æ ¼èªå·±ä¿çãä¾å¦é¶è¡çé¢åç»ä¸ªäººç¨æ·çç§é¥å°±åå¨å¨ä¸ªäººçUç¾éï¼é对称å å¯ä¸å¯ä»¥éè¿ç§é¥å å¯ï¼ä»äººè½å¤ä½¿ç¨å
¬é¥è¿è¡è§£å¯ï¼åä¹äº¦ç¶ï¼é对称å å¯ç®æ³ä¸è¬æ¯è¾å¤ææ§è¡æ¶é´ç¸å¯¹å¯¹ç§°å å¯è¾é¿ï¼å¥½å¤å¨äºæ ç§é¥ååé®é¢ã常è§çå
¶ä»é对称å å¯ç®æ³æRSA,ECC,åºåé¾ä¸ä¸»è¦ä½¿ç¨ECCæ¤åæ²çº¿ç®æ³ã
对称å å¯ä¸é对称å å¯çç»å
è¿ç§æ¹å¼å°å å¯è¿ç¨å为两个é¶æ®µï¼é¶æ®µä¸ä½¿ç¨é对称å å¯è¿è¡ç§é¥çåå使å¾å¯¹æ¹å®å
¨å°å¾å°å¯¹ç§°å å¯çç§é¥ï¼é¶æ®µäºä½¿ç¨å¯¹ç§°å å¯å¯¹åæè¿è¡å 解å¯ã
2.2 æ°åç¾å
æ°åç¾åå称ä¹ä¸ºå ¬é¥æ°åç¾åï¼æ¯ä¸ç§ç±»ä¼¼äºåå¨çº¸ä¸çç©çç¾åãæ°åç¾å主è¦ç¨äºæ°æ®æ´æ¹çç¾åè 身份è¯å«ä»¥åææµèµãæ°åç¾åå å«ä¸ä¸ªéè¦ç¹æ§ï¼
åªæèªå·±å¯ä»¥ç¾ç½²èªå·±çæ°åç¾åï¼ä½æ¯ä»äººå¯ä»¥éªè¯ç¾åæ¯å¦æ¯ä½ ç¾åï¼
æ°åç¾åéè¦åå ·ä½çæ°åææ¡£ç»å®ï¼å°±å¥½æ¯ç°å®ä¸ä½ çç¾ååºè¯¥å纸质åªä»ç»å®ï¼
æ°åç¾åä¸å¯ä¼ªé ï¼
ä¾èµé对称å å¯æºå¶å¯ä»¥è¾å®¹æå®ç°ä¸è¿°ä¸ç§ç¹æ§ã
é¦å
ï¼éè¦çæ个人çå
¬ç§é¥å¯¹ï¼
(sk, pk) := generateKeys(keysize)ï¼skç§é¥ç¨æ·èªå·±ä¿çï¼pkå
¬é¥å¯ä»¥ååç»å
¶ä»äºº
å
¶æ¬¡ï¼å¯ä»¥éè¿sk对ä¸ä¸ªå
·ä½çmessageè¿è¡ç¾åï¼
sig := sign(sk, message) è¿æ ·å°±å¾å°äºå
·ä½çç¾åsig
æåï¼æ¥æ该ç¾åå
¬é¥çä¸æ¹è½å¤è¿è¡ç¾åçéªè¯ï¼
isValid := verify(pk, message, sig)
å¨åºåé¾ä½ç³»ä¸æ¯ä¸æ¡æ°æ®äº¤æé½éè¦ç¾åï¼å¨æ¯ç¹å¸ç设计è¿ç¨ä¸ç´æ¥å°ç¨æ·çå
¬é¥æ¥è¡¨å¾ç¨æ·çæ¯ç¹å¸å°åãè¿æ ·å¨ç¨æ·å起转账çæ¯ç¹å¸äº¤ææ¶å¯ä»¥æ¹ä¾¿çè¿è¡ç¨æ·äº¤æçåæ³æ§éªè¯ã
2.3 æ°åè¯ä¹¦å认è¯ä¸å¿
2.3.1 æ°åè¯ä¹¦ï¼Digital Certificateï¼
æ°åè¯ä¹¦å称âæ°å身份è¯âãâç½ç»èº«ä»½è¯âæ¯ç»è®¤è¯ä¸å¿ææé¢å并ç»è®¤è¯ä¸å¿æ°åç¾åçå
å«å
¬å¼ç§é¥æ¥æè
åå
¬å¼ç§é¥ç¸å
³ä¿¡æ¯ççµåæ件ï¼å¯ä»¥ç¨æ¥å¤å«æ°åè¯ä¹¦æ¥æè
身份ã
æ°åè¯ä¹¦å
å«ï¼å
¬é¥ãè¯ä¹¦å称信æ¯ãç¾åæºæ对è¯ä¹¦çæ°åç¾å以åå¹é
çç§é¥
è¯ä¹¦å¯ä»¥åå¨å¨ç½ç»ä¸çæ°æ®åºä¸ãç¨æ·å¯ä»¥å©ç¨ç½ç»å½¼æ¤äº¤æ¢è¯ä¹¦ãå½è¯ä¹¦æ¤éåï¼ç¾åæ¤è¯ä¹¦çCAä»ä¿çæ¤è¯ä¹¦çå¯æ¬ï¼ä»¥å¤æ¥å解 å³å¯è½å¼èµ·ççº çº·ã
2.3.2 认è¯ä¸å¿ï¼Certificate Authorityï¼
认è¯ä¸å¿ ä¸è¬ç®ç§°CA, CAä¸è¬æ¯ä¸ä¸ªå ¬è®¤å¯ä¿¡ç第ä¸æ¹æºæï¼å ¶ä½ç¨ä¸»è¦æ¯ä¸ºæ¯ä¸ªç¨æ·é¢åä¸ä¸ªç¬ä¸æ äºçå å«å称åå ¬é¥çæ°åè¯ä¹¦ã
2.4 常è§å å¯ç®æ³ç对æ¯
哈希算法是一种只能进行加密,不能进行解密的密码学算法,它可以将任意长度的信息进行转换,转换成一段固定的长度字符串。
而这段字符串有3个特点:
1. 如果是输入值只改变了一点点,那么最后算出的哈希值结果也是差距很大的。
2. 只有输入完全一样的值才能够得到完全一样的输出值。
3. 在输入值和输出值之间是没有规律的,所以是不能够通过输出值去计算出输入值的。要想得到指定的输出值,那么只能采取枚举法:需要不断的去更换输入值,用来寻找满足条件的输出值。
正是因为哈希算法保证了比特币挖矿不能进行逆向推导的结果,所以,矿工们需要持续不断的进行运算,而这个本质上是在进行暴力破解正确的输入值,这个是谁先算出答案谁就能获得比特币奖励。更多内容点击