PDA

View Full Version : پروژه سیستم رمزنگاری ارزهای دیجیتال



ARData
یک شنبه 11 مهر 1400, 10:55 صبح
سلام و عرض احترام خدمت اساتید و سروران گرامی
در صورتیکه از نظر ادمین ها مشکلی ندارد در مورد نحوه ایجاد پسوردهای 12 کلمه کیف پول های ارز دیجیتال با استفاده از کدهای باینری و فرمول های رمزنگاری SHA256 , SHA512 , PBKDF2 و جدول کلمات گام به گام تا ساخت PIP39 Seed و BIP0032 و BIP44 و آدرس های دریافت و پرداخت بیت کوین و اتریوم و سایر ارزها بحث رو شروع کنیم .

Shahramdindoust
دوشنبه 12 مهر 1400, 15:30 عصر
سلام
همت شما را ارج می نهم
لطفا یک استارت بزنید و توضیحات ابتدایی و یک طرح نمونه برای اجرا در اکسس هم پیشنهاد بدین
تا شروع گردد بحث

ARData
دوشنبه 12 مهر 1400, 18:40 عصر
ممنون از استقبال دوستان
این روزها بازار ارزهای دیجیتال خیلی داغ شده و تقریبا در هر خانواده ای یک نفر به انجام این بیزینس مشغول هست امروز بیش از 7000 نوع از این رمز ارزها در بازارهای جهانی خرید و فروش می شوند که معروف ترین آنها بیت کوین و اتریوم هست که بر اساس ارزش مارکت آنها طبقه بندی شده اند برای ذخیره این ارزها نیاز به کیف پول های دیجیتال هست که تراست ولت و متامسک و ... اپلکیشن های ذخیره ، تبادل و خرید و فروش این ارزها محسوب میشوند البته صرافی های متمرکز نیز محل ذخیره این ارزها محسوب می شوند ولی امنیت آن ها تقریبا در حد صفر هست . برای ایجاد یک حساب در تراست ولت یا ولت های دیگه ما نیاز به داشتن یک گذرواژه از 12 الی 24 کلمه هستیم که در زمان ایجاد حساب ، خود کیف پول (یا تراست) برای ما در نظر میگیرد یا اینکه خود ما می توانیم با فرمول های خاص و پیچیده آن 12 کلمه را ایجاد کنیم و بر اساس این کلمات تمامی آدرس های اختصاصی جهت دریافت یا ارسال کوین ها و توکن ها تولید می شوند .
در اولین مرحله کار ما نیاز به تولید یک کد 128 رقمی تصادفی از شماره های 0 و 1 داریم (کد 128 بیتی دهدهی) بنابراین با استفاده از فرمول راندمایز ، اولین کد 128 بیتی رو تولید میکنیم ...
For i = 1 To 128
My128Byte = Right(Str((Second(Now) ^ 2) * Rnd), 1)
Next i
البته کد رندم ذکر شده بنابر سلیقه شخصی است و شما می توانید با کدهای خودتون و بهتر از این انجام بدید و هر پیشنهادی داشتید برای رندمایز بهتر حتما استقبال خواهد شد .
کد 128 بیتی ایجاد شده تصادفی :

00000101111101011101101010101111111101111000111110 01100111001001101001110010000110110010011011111001 0001011010110110001111100110

ادامه در پست بعدی ...

ARData
سه شنبه 13 مهر 1400, 11:07 صبح
برای اینکه بتوانیم از رشته 128 بیتی ایجاد شده جمله منحصربه فرد 12 کلمه ای را ایجاد کنیم نیاز هست تا رشته 128 بیتی رو به 12 دسته 11 بیتی تقسیم کنیم : 11*12=132 !
در دسته آخر 4 بیت کم میاد که با فرمول هش SHA256 بدست میارم و بعدا در موردش بحث خواهیم کرد

153507
تصویر شماره (1)

مطابق تصویر شماره 1 ، در یک فرم اکسس اول رشته 128 بیتی رو ایجاد کرده و در 12 فیلد با ماسک 11 بیتی انتقال می دهیم همانطور که مشاهده میکنید فیلد دوازدم از یک رشته 7 بیتی تشکیل شده است
گام بعدی تبدیل رشته 128 بیتی به جمله 32 حرفی هگزدسیمال (Hex) است (جمله انتروپی) که از سمت چپ رشته 128 بیتی هر 4 بیت فرمول ساخت یک حرف Hex می باشد . جدول معادل بیت و هگز مطابق جدول ایجاد شده در فایل اکسس ما می باشد :


153506
جدول شماره (2)
برای تست درست بودن جمله انتروپی از سایت https://iancoleman.io/bip39/ می توان کمک گرفت
با فرض داشتن رشته 128 بیتی (0111001110011101010101110101011100110000000100101 01010110111011101010011111001100011010011111111111 001110111011001011111000111010011) و جمله انتروپی ایجاد شده (739d57573012ab7753e634ffe7765f1) می توان تست رو انجام داد
با توجه به اینکه جمله انتروپی ایجاد شده به جای 32 کلمه 31 کلمه می باشد ما نیاز به یک رشته 4 بیتی تکمیل کننده به نام چک سام (Cheksum) داریم که اولین کلمه از هش SHA256 جمله 31 بیتی بدست می آید یعنی SHA256(739d57573012ab7753e634ffe7765f1) = 46EAFFB93AADD8FA7E176A1AF08CC0C5FA04689A80DA6B3F01 AE7109068800D3 که حرف 4 را از ابتدای جمله هش شده گرفته و به انتهای جمله انتروپی اضافه میکنیم و جمله انتروپی نهایی ما برابر است با : 739d57573012ab7753e634ffe7765f14 بنابراین کلمه چک سام ما حرف یا عدد 4 که با تبدیل به بیت یا بایت می شود (0100) و به آخر رشته 7 بیتی در فیلد دوازدهم اضافه می شود و طول رشته 128 بیتی ما میشود 132 بیت :
153508
شکل شماره (3)

ادامه در پست بعدی ...

ARData
سه شنبه 13 مهر 1400, 13:52 عصر
تعداد کلمات مورد استفاده در والت ها 2048 کلمه هست که با کد گذاری بر روی آنها در یک جدولی به نام Wordlist ذخیره می شوند :
153509
شکل شماره (4)
برای یافتن کلمات ، جمله رمز 12 کلمه ای ، رشته های 11 بیتی درون فیلدهای 12 گانه را تبدیل به دسیمال (Dec) میکنیم تا کد هر کلمه را بدست بیاوریم برای مثال
طبق تصویر شماره 5 کد دسیمال برای فیلد شماره 1 (01110011100) برابر است با 924 و این عدد کد کلمه "inform" در جدول کلمات می باشد :
153510
شکل شماره 5
در صورتیکه کلمات مربوط به 12 فیلد را در کنا یکدیگر بگذاریم جمله رمزی ما برای باز کردن یک حساب والت در تمامی کیف پول های ارز دیجیتال معتبر می باشد :

153512153511

ARData
سه شنبه 13 مهر 1400, 14:12 عصر
نمونه کامل پروژه تولید رمز عبور 12 کلمه ای کیف ارزهای دیجیتال .
تمامی دستور العمل های بر اساس سایت https://iancoleman.io/bip39/ تهیه و تنظیم شده است برای تولید Seed از کلمه عبور نیاز به کد هش pbkdf2 برمبنای SHA512 هست و مشکلی اصلی از این نقطه شروع میشه .
ادامه در پست بعدی ...

ARData
سه شنبه 13 مهر 1400, 17:36 عصر
هدف کلی از این تایپیک ساخت کیف پول بر پایه زبان VBA یا VB6 هست با توجه به دستوالعمل های سایت https://iancoleman.io/bip39/ از Mnemonic یا جمله 12 کلمه ای ایجاد شده میخواهیم آدرس های دریافت و ارسال انواع کوین ها (بیت کوین و اتریوم و ...) ایجاد کنیم برای این پروسه ، جمله ایجاد شده ("inform turkey still gasp click roof exhibit shoot zoo desert oak citizen") را طبق دستورالعمل تصویر زیر باید درون تابع pbfdk2 قرار بدیم تا پایه رمزگذاری را آغاز کنیم (عملیات ایجاد BIP39 Seed) : BIP39_Seed = crypt.PBKDF2(pw, pwCharset, hashAlg, saltHex, iterationCount, 512, enc)
در این تابع pw پسورد دلخواه + Mnemonic و pwCharset = "utf-8" و hashAlg الگوریتم هش برمبنای SHA512 و saltHex جمله Mnemonic و iterationCount تعداد دفعات تکرار تابع PBKDF2 و 512 طول عبارت خروجی تابع و enc هم نوع جمله خروجی بر پایه Hex یا Text
بر اساس این الگوریتم : (https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki)
mnemonic to seed A user may decide to protect their mnemonic with a passphrase. If a passphrase is not present, an empty string "" is used instead.
To create a binary seed from the mnemonic, we use the PBKDF2 function with a mnemonic sentence (in UTF-8 NFKD) used as the password and the string "mnemonic" + passphrase (again in UTF-8 NFKD) used as the salt. The iteration count is set to 2048 and HMAC-SHA512 is used as the pseudo-random function. The length of the derived key is 512 bits (= 64 bytes).
This seed can be later used to generate deterministic wallets using BIP-0032 or similar methods.
The conversion of the mnemonic sentence to a binary seed is completely independent from generating the sentence. This results in a rather simple code; there are no constraints on sentence structure and clients are free to implement their own wordlists or even whole sentence generators, allowing for flexibility in wordlists for typo detection or other purposes.
Although using a mnemonic not generated by the algorithm described in "Generating the mnemonic" section is possible, this is not advised and software must compute a checksum for the mnemonic sentence using a wordlist and issue a warning if it is invalid.
The described method also provides plausible deniability, because every passphrase generates a valid seed (and thus a deterministic wallet) but only the correct one will make the desired wallet available.
جوابی که از این دستورالعمل ذکر شده در سایت های آنلاین محاسبه pbkdf2 (https://stuff.birkenstab.de/pbkdf2/) و با کد vba زیر میگیریم هر دو یکی هست ولی در سایت https://iancoleman.io/bip39/ جواب متفاوته حالا از دوستان کسی هست علت رو پیدا کنه ؟
Private Sub Command5_Click()
Dim crypt As New ChilkatCrypt2
Dim success As Long
success = crypt.UnlockComponent("Anything for 30-day trial")
If (success <> 1) Then
Me.TXTDEC = TXTDEC & crypt.LastErrorText & vbCrLf
Exit Sub
End If
Dim hexKey As String
Dim pw As String
pw = "inform turkey still gasp click roof exhibit shoot zoo desert oak citizen"
Dim pwCharset As String
pwCharset = "utf-8"
Dim hashAlg As String
hashAlg = "sha512"
Dim saltHex As String
saltHex = crypt.EncodeString(pw, "utf-8", "hex")
Dim iterationCount As Long
iterationCount = 2048
Dim outputBitLen As Long
outputBitLen = 512
Dim enc As String
enc = "hex"
hexKey = crypt.PBKDF2(pw, pwCharset, hashAlg, saltHex, iterationCount, 512, enc)
MsgBox LCase(hexKey)
End Sub

153516
153517
و اما جواب متفاوت در سایت اصلی !
153518

ARData
یک شنبه 19 تیر 1401, 11:36 صبح
متاسفانه دوستان همکاری = 0