Gamit ang kaalaman natin sa public key cryptography at hash functions, maiging pag-usapan na ang digital signatures.
Ang digital signature ay isang numero na nakuha mula sa private key at sa laman ng mensaheng pinipirmahan. Kumbaga, ginamit ang mga katumbas na numero ng private key at mensahe sa kalkulasyon para makuha ang digital signature. Dahil sangkap ang mensahe, ang digital signature ay iba-iba ang halaga sa bawat mensahe. At sa paggamit ng private key, markado ang mensahe ng orihinal na may-ari.
Ang RSA ay maaaring gamitin direkta kung saan ang mensahe ay nakapaloob na rin sa digital signature. Pero lalaktawan natin iyon para mailarawan ang gamit ng hash function sa kombinasyon ng RSA.
Makikita sa ilutsrasyon sa baba ang prosesong sumusunod sa PKCS#1. Ang PKCS ay Public-key Cryptography Standards at ang #1 ay ang seksyon nito na naglalatag ng RSA Encryption Standard.
Ang mensahe ay dumaraan sa message hashing, halimbawa, ang SHA-256. Sa message digest encoding at data block formatting, may susunding ayos ng data na magreresulta sa anyong octet string. Ang octet string ay representasyon ng data na nagpapakitang tig-8 bits ang hati. Laktawan na natin ang detalye nito. Tapos, dadaan sa Octet string-to-integer conversion. Ito ay dahil ang susunod na hakbang ay ang RSA, na alam na nating operasyong matematika. Kaya integer ang kailangang input.
Halimbawa, ang integer na ito ay m. Para makuha ang signature s, gagamitin ang: s = md mod n
At ang makukuhang integer na s ay dadaan sa integer-to-octet string conversion, at iyon ang digital signature na ipapadala.
Sa verification, syempre kabaliktaran lang ang mangyayari. Tutukan lang natin ang RSA computation. Para makuha ang m, kakalkulahin ang: m = se mod n
Makikita mo sa ilustrasyon na may iba-ibang beripikasyong magaganap sa mga hakbang. Laktawan na muna natin ang mga kaugnay sa anyo ng data/formatting. Basta sa bandang huli, dapat ay makikilala ng tagatanggap ang bahagi ng octet string na syang hash ng orihinal na mensahe. Ang huling verification ay kapag ang hash na nahiwalay mo sa signature ay parehas ng hash ng mensahe na natanggap mo.
Tandaan na sa ilustrasyong ito, parehas na pinadala ang signature at message. Hindi naka-encrypt o naka ciphertext ang mensahe. Hindi na natin pag-uusapan ang scheme kung saan may digital signature na, may encryption pa sa mensahe.
Matatandaan na sa nauna nating usapan tungkol sa RSA, ang mensahe ay ini-encrypt gamit ang public key (n,e) ng pagbibigyan. Gagamitin ng tagatanggap ang kanyang private key (d) para makuha ang mensahe.
Pagbigay ng encrypted message ni A kay B, at pag decrypt ni B:
c = me mod n (e ni B ang gamit)
m = cd mod n (d ni B ang gamit)
Kabaliktaran sa digital signature: ang private key (d) ng pinanggalingan ang gagamitin para gumawa ng lagda, at ang public key (n,e) ng pinanggalingan ang gagamitin ng tagatanggap para makuha kung tama ang mensahe.
Pagbigay ng signature ni A kay B, at pag verify ni B:
s = md mod n (d ni A ang gamit)
m = se mod n (e ni A ang gamit)
Sa kontexto ng Bitcoin, ang blockchain ay bukas para makita ng network. Kaya, ang mga “mensahe” ay hindi sikreto. Ang mensahe ay ang transaksyon na nagsasaad kung magkano ang ibinigay na Bitcoin mula sa isang address papunta sa iba. Kaya ang signature algorithm lang ang kailangan gamitin, hindi encryption ng mensahe. At sa paksang ito, ang susunod na seksyon ang tutunton sa talagang digital signature algorithm na gamit sa Bitcoin.
Kitakits sa ika-21
Salamat sa mga litratong ito na pinagsama para sa imahe sa taas:
- Photo by Pixabay: https://www.pexels.com/photo/agreement-blur-business-close-up-261621/
- Photo by Markus Spiske: https://www.pexels.com/photo/green-and-white-line-illustration-225769/