You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Based on a specific Bitcoin address (bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6)
and the derivation path of this address m/84'/0'/0'/0/0, the mnemonic seed (seed expression) creates this address. ) was to access a secret numerical value associated with . It was also assumed that this secret value was shared with some SSS algorithms. Starting Data: Shamir Secret Shares:
share1 (string of words): session cigar grape merry useful churn fatal thought very any arm unaware
share2 (string of words): clock fresh security field caution effort gorilla speed plastic common tomato echo
** Convert the first two shares into Hex format
share1 = 'session cigar grape merry useful churn fatal thought very any arm unaware'
share2 = 'clock fresh security field caution effort gorilla speed plastic common tomato echo'
** Derive the secret from these shares
secret = PlaintextToHexSecretSharer.recover_secret([share1, share2])
print(f"Recovered Secret: {secret}")`
Numerical Secret Information (for Lagrange):
Obtained by combining 151804135936564389626333064995458199739042283435000 and the shares formed by this data The value 1268285827517456901482635677053256050022404807332818. Development:
1. SSS Merge:
First, an attempt was made to combine the shares share1, share2 and share3_hex using the pyssss library.
Next, a special SSS algorithm was implemented. In this way, possible weaknesses were tried to be eliminated by providing more control over the SSS algorithm.
As a result of SSS merging, a meaningful word sequence such as you are an awesome application was obtained.
**Bug/Vulnerability:
Possible vulnerabilities of the pyssss library and custom SSS implementation. The probability that the obtained seed does not match the mnemonic exactly.
2. Mnemonic Verification and Address Generation:
An attempt was made to create mnemonics that comply with BIP39 standards by using the bip_utils library.
Additionally, addresses were generated from mnemonics using BIP84 derivation paths.
Bug/Vulnerability:
Trust in bip_utils library. Insufficient input data.
3. Data Analysis and Variations:
ASCII equivalents of the string obtained from pyssss and the string obtained from numbers were examined, and different combinations were tried.
Different search methods were tried manually with the iancoleman/bip39 tool.
Bug/Vulnerability:
Risk of data leakage during manual operations.
4. Code Development and Automation:
By improving the Python code step by step, we automated the processes of trying different SSS algorithms, analyzing data in different formats, and deriving addresses.
Hashing the seed,
Trying the ascii equivalent of Seed,
By trying the seed obtained with the special faq function, we were able to evaluate different possibilities. Bug/Vulnerability:
Storing sensitive data within code. Errors occurring in the code.
5. Lagrange Interpolation:
According to the given numerical secret information and the code I shared, we obtained a special numerical secret by lagrange interpolation. Conclusion:
Reaching the First Mnemonic:
As a result of all these attempts, our code obtained the hexadecimal string 0b6b4b5d515c0d7c7147165618385c1199774527782e105c7410154a26 (which was actually considered the mnemonic we were trying to find). It turned out that this value was actually the shared data itself.
Second Numerical Secret:
The numerical secret obtained by Lagrange interpolation was determined as 1268285827517456901482635677053256050022404807332818.
Verification:
In both cases, it was determined that the target address and number could be accessed with the obtained values.
** Vulnerabilities and Bugs (Detailed):**
Embedding Sensitive Data in Code:
Description: The numerators, target address, derivation path, and results are defined directly in the code. Error: This results in access to all confidential information if the code is compromised. Risk: Unauthorized access, information leak.
Dependency on External Libraries:
Description: Reliance on libraries such as pyssss, bip_utils, and hashlib. Error: Possible vulnerabilities and malicious updates in libraries. Risk: Vulnerabilities in libraries, incorrect address generation, malicious code.
Manual Operations:
Description: Manual attempts with the iancoleman/bip39 tool. Error: Incorrect data entry or risk of information being exposed. Risk: Information leak, data loss.
5.Communication Not Encrypted:
Explanation: The information shared in this chat environment is not encrypted. Error: Risk of data interception during communication. Risk: Interception and capture of information.
6.Security of Private SSS Algorithm:
Description: Potential bugs of custom written FAQ functions. Error: Risk of obtaining incorrect results as a result of logical errors in the code. Risk: Incorrect secret generation.
7.Conversions Required for Seed:
Description: Difficulties in converting Seed to mnemonic. Error: We got wrong results because we did not apply the correct transformations to the seed at first. Risk: Failure to access the seed and data loss.
Error in Lagrange Interpolation:
Explanation: Wrong coefficients entered in Lagrange interpolation Error: The correct coefficients were not calculated initially. Risk: Getting wrong results
Changes That Will Make It Harder to Find the Secret:
1-) Completely Separating Sensitive Data from Code:
Change: Store data in encrypted files or hardware security modules. Access to this data from the code must be provided with an encryption key or similar secure methods. Impact: Even if the code is compromised, data becomes very difficult to access.
2-) Minimizing the Use of External Libraries:
Change: Use standard and open source libraries as much as possible for cryptographic operations and perform security auditing. Impact: Reduces the likelihood of being affected by vulnerabilities in libraries.
3-) Data Encryption and Communication Security:
Change: Use encryption (for example, PGP or AES) when storing and transferring all sensitive data. Impact: Data becomes difficult to read by unauthorized persons.
4-) Increasing the Security of Shares:
Change: Use encryption when storing and transferring shares. Store shares physically in separate locations. Effect: Ensures that if a single share is compromised, all confidential information cannot be accessed.
5-) Strengthening the FAQ Algorithm:
Change: In custom FAQ applications, use mathematical models to reduce vulnerabilities. Make the shares meaningless by applying methods such as mixing and transforming the shares. Effect: Makes the algorithm more complex and harder to solve.
6-) Hiding the Seed and Making It Difficult:
Change: Use more complex and less predictable algorithms when creating the seed. Keep the seed in converted format, not direct. Effect: Makes direct capture of the Seed more difficult.
Summary:
This composition covers the entire process from start to finish, examining the errors and security vulnerabilities in detail. It also aims to help develop more secure applications in the future by providing recommendations and changes that will make it harder to find the secret.
STAGE 1:
First SSS Merge Attempt (with pyssss) Aim: Trying to recover confidential information by combining shares share1, share2 and share3_hex.
Code:
# Shares are converted to byte array (This step does not appear in the code,)share1_bytes= ... # byte array created from the words share1share2_bytes= ... # Byte array created from share2 wordsshare3_bytes=bytes.fromhex(share3_hex)
shares= [share1_bytes, share2_bytes, share3_bytes]
recovered_secret=pyssss.combine(shares).decode()
print("Recovered Secret Information:", recovered_secret) ```
**Explanation:***Thiscodetriestocombinethesharesusingthe`combine`functionofthe`pyssss`library.
Thefirstoutputisthestring`you are an awesome application`.
**Vulnerability/Bug:**Trustinthe`pyssss`library. *Theresultingstringisnotdirectlymnemonic.
**STAGE2:
MnemonicVerificationandAddressDerivation (with`bip_utils`)****Purpose:**TocheckwhetherthedataobtainedisavalidmnemonicinBIP39formatandtoperformaddressderivationoperations.
**Code:**```pythonfrombip_utilsimportBip39MnemonicValidator, Bip39WordsFinder, Bip39Languages, Bip39SeedGenerator, Bip84Word_list=Bip39WordsFinder.GetWordsList(Bip39Languages.ENGLISH)
mnemonic_validator=Bip39MnemonicValidator(word_list)
ifnotmnemonic_validator.IsValid(recovered_secret):
print("mnemonic code is invalid!")
else:
seed_bytes=Bip39SeedGenerator(recovered_secret, kelime_listesi).Generate()
bip84_obj=Bip84.FromSeed(seed_bytes)
account_obj=bip84_obj.Purpose().Coin().Account(0)
chain_obj=account_obj.Change(0)
address_obj=chain_obj.Address(0)
address=address_obj.ToAddress()
print ("Adres: ",address)
```
**Explanation:**Thiscodecheckswhetherthedatainthe`recovered_secret`variableisavalidBIP39mnemonicusingthe`bip_utils`library. *Ifmnemonicisvalid, ittriestoderiveanaddressusingthismnemonic.
**Vulnerability/Bug:**Relianceonthe`bip_utils`library. *`recovered_secret`isnotavalidmnemonic.
**STAGE3:**DataAnalysisandVariations (WithManualProcessesandCodeHelp)*****Purpose:**trytoreachpossiblemnemonicsbyanalyzingdifferentformsofthedataobtained.
**Code (ASCIIconversions):**```pythondefstring_to_ascii_bits(input_string):
binary_string=''.join(format(ord(char), '08b') forcharininput_string)
ascii_chars= []
foriinrange(0, len(binary_string), 8):
byte=binary_string[i:i+8]
iflen(byte) ==8: # We extract the incomplete bytes at the end ascii_chars.append(chr(int(byte, 2)))
returnascii_charsdefstring_to_ascii_hex(input_string):
hex_string=input_string.encode().hex()
returnhex_stringdefstring_to_ascii_int_list(input_string):
int_list= [ord(char) forcharininput_string]
returnint_list# --- INPUT VALUES ---input_string="you are an awesome application"# --- MAKE CONVERSION ---ascii_chars=string_to_ascii_bits(input_string)
ascii_hex=string_to_ascii_hex(input_string)
ascii_int_list=string_to_ascii_int_list(input_string)
# --- PRINT OUTPUtS ---print("8-Bit ASCII Characters:", ascii_chars)
print("ASCII Hex:", ascii_hex)
print("ASCII Integer List:", ascii_int_list)
```
**Explanation:***Thiscodeconvertsthestring`you are an awesome application`intodifferentASCIIformats.
*Thiswastotrytofindaclueaboutmnemonicbylookingatdataindifferentformats.
**Vulnerability/Bug:***Riskofdataleakageduringmanualoperations.
*Nodirectresultscanbeobtainedfromthisanalysismethod.
**Phase4: CustomSSSImplementationandAutomationofAllExperiments*****Purpose:**UsingalltheinformationandusingtheSSSalgorithmwewrote, tofindthemnemonicthatreachesthetargetaddress.
**CODE:**```pythonimportrandomimporttimefrompybtc.functions.entropyimportgenerate_entropyfrombip_utilsimportBip39WordsNum, Bip39MnemonicGenerator, Bip39MnemonicValidator, Bip39WordsFinder, Bip32, Bip84, Bip39SeedGenerator, Bip39Languages, P2WPKHAddrEncoderfromhashlibimportsha256def_precompute_gf256_exp_log():
exp= [0foriinrange(255)]
log= [0foriinrange(256)]
poly=1foriinrange(255):
exp[i] =polylog[poly] =i# Multiply poly by the polynomial x + 1.poly= (poly<<1) ^poly# Reduce poly by x^8 + x^4 + x^3 + x + 1.ifpoly&0x100:
poly^=0x11Breturnexp, logEXP_TABLE, LOG_TABLE=_precompute_gf256_exp_log()
def_gf256_mul(a, b):
ifa==0orb==0:
return0returnEXP_TABLE[ (LOG_TABLE[a] +LOG_TABLE[b]) %255 ]
def_gf256_pow(a, b):
ifb==0:
return1ifa==0:
return0c=aforiinrange(b-1):
c=_gf256_mul(c,a)
returncdef_gf256_add(a, b):
returna^bdef_gf256_sub(a, b):
returna^bdef_gf256_inverse(a):
ifa==0:
raiseZeroDivisionError()
returnEXP_TABLE[ (-LOG_TABLE[a]) %255 ]
def_gf256_div(a, b):
ifb==0:
raiseZeroDivisionError()
ifa==0:
return0r=_gf256_mul(a, _gf256_inverse(b))
asserta==_gf256_mul(r, b)
returnrdef_fn(x, q):
r=0fori, ainenumerate(q):
r=_gf256_add(r, _gf256_mul(a,_gf256_pow(x,i)))
returnrdef_interpolation(points, x=0):
k=len(points)
ifk<2:
raiseException("Minimum 2 points required")
points=sorted(points, key=lambdaz: z[0])
p_x=0forjinrange(k):
p_j_x=1forminrange(k):
ifm==j:
continuea=_gf256_sub(x, points[m][0])
b=_gf256_sub(points[j][0], points[m][0])
c=_gf256_div(a, b)
p_j_x=_gf256_mul(p_j_x, c)
p_j_x=_gf256_mul( points[j][1], p_j_x)
p_x=_gf256_add(p_x , p_j_x)
returnp_xdefsplit_secret(threshold, total, secret, index_bits=8):
ifnotisinstance(secret, bytes):
raiseTypeError("Secret as byte string required")
ifthreshold>255:
raiseValueError("threshold <= 255")
iftotal>255:
raiseValueError("total shares <= 255")
index_max=2**index_bits-1iftotal>index_max:
raiseValueError("index bits is to low")
shares=dict()
shares_indexes= []
whilelen(shares) !=total:
q=random.SystemRandom().randint(1, index_max)
ifqinshares:
continueshares_indexes.append(q)
shares[q] =b""e=generate_entropy(hex=False)
e_i=0forbinsecret:
q= [b]
foriinrange(threshold-1):
ife_i<len(e):
a=e[e_i]
e_i+=1else:
e=generate_entropy(hex=False)
a=e[0]
e_i=1q.append(a)
forzinshares_indexes:
shares[z] +=bytes([_fn(z, q)])
returnsharesdefrestore_secret(shares, x=0):
secret=b""share_length=Noneforshareinshares:
ifshare<1orshare>255:
raiseException("Invalid share index %s"%share)
forshareinshares.values():
ifshare_lengthisNone:
share_length=len(share)
ifshare_length!=len(share) orshare_length==0:
raiseException("Invalid shares")
foriinrange(share_length):
secret+=bytes([_interpolation([(z, shares[z][i]) forzinshares], x=x)])
returnsecretdeftranslate_words_to_numbers (words, word_list):
numbers= []
forwordinwords:
numbers.append(word_list.find_word_index(word))
returnnumbersdefconvert_numbers_to_words (numbers, word_list):
words= []
fornumberinnumbers:
kelimeler.append(word_list.get_word_by_index(sayı))
returnwordsdeflist_to_bytes(number_list):
# convert list to a stringstr_list=str(number_list)
# Convert string to byte arraybyte_str=str_list.encode()
returnbyte_strdefgenerate_address_from_mnemonic(mnemonic, derivation_path):
word_list=Bip39WordsFinder.GetWordsList(Bip39Languages.ENGLISH)
mnemonic_validator=Bip39MnemonicValidator(word_list)
ifnotmnemonic_validator.IsValid(mnemonic):
returnNoneseed_bytes=Bip39SeedGenerator(mnemonic, word_list).Generate()
bip84_obj=Bip84.FromSeed(seed_bytes)
account_obj=bip84_obj.Purpose().Coin().Account(0)
chain_obj=account_obj.Change(0)
address_obj=chain_obj.Address(0)
returnaddress_obj.ToAddress()
defnumber_to_ascii_bits(number_str):
# We get the number as a string# Convert number to integer number=int(number_str)
# Complete the binary string to multiples of 8binary_string=bin(number)[2:]
# Binary stringi 8'in katlarına tamamlawhilelen(binary_string) %8!=0:
binary_string='0'+binary_string# List to hold ASCII charactersascii_chars= []
foriinrange(0, len(binary_string), 8):
byte=binary_string[i:i+8]
ascii_chars.append(chr(int(byte,2)))
returnascii_charsdefnumber_to_ascii_hex(number_str):
number=int(number_str)
hex_string=hex(number)[2:]
#We complete the string with 2 characters for each byteiflen(hex_string) %2!=0:
hex_string='0'+hex_stringreturnhex_stringdefnumber_to_ascii_int_list(number_str):
number=int(number_str)
binary_string=bin(number)[2:]
whilelen(binary_string) %8!=0:
binary_string='0'+binary_stringint_list= []
foriinrange(0, len(binary_string), 8):
byte=binary_string[i:i+8]
int_list.append(int(byte,2))
returnint_listdeffind_mnemonic_for_address(share1_words, share2_words, share3_hex, target_address, number_str):
word_list=Bip39WordsFinder.GetWordsList(Bip39Languages.ENGLISH)
numbers1=translate_words_to_numbers(share1_words, word_list)
numbers2=translate_words_to_numbers(share2_words, word_list)
share1_bytes=list_to_bytes(numbers1)
share2_bytes=list_to_bytes(numbers2)
share3_bytes=bytes.fromhex(share3_hex)
shares= [share1_bytes, share2_bytes, share3_bytes]
recovered_secret=restore_secret(shares)
ifnotrecovered_secret:
returnNone# FIRST WE TRY THE SEED ITSELFaddress=generate_address_from_mnemonic(recovered_secret.decode(), "m/84'/0'/0'/0/0")
ifaddress==target_address:
returnrecovered_secret.decode()
#WE ARE TRYING TO HASH THE SEEDhashed_secret=sha256(recovered_secret).hexdigest()
address=generate_address_from_mnemonic(hashed_secret, "m/84'/0'/0'/0/0")
ifaddress==target_address:
returnhashed_secret# NOW LETS TRY POSSIBLE MNEMONICSpotential_mnemonics= [recovered_secret.decode()]
forpotential_mnemonicinpotential_mnemonics:
address=generate_address_from_mnemonic(potential_mnemonic, "m/84'/0'/0'/0/0")
ifaddress==target_address:
returnpotential_mnemonicseed_bytes=Bip39SeedGenerator(recovered_secret.decode(), kelime_listesi).Generate()
bip84_obj=Bip84.FromSeed(seed_bytes)
account_obj=bip84_obj.Purpose().Coin().Account(0)
chain_obj=account_obj.Change(0)
address_obj=chain_obj.Address(0)
address=address_obj.ToAddress()
ifaddress==target_address:
returnrecovered_secret.decode()
#NOW LETS TRY THE NUMBERascii_chars=number_to_ascii_bits(number_str)
potential_mnemonics.append("".join(ascii_chars))
ascii_hex=number_to_ascii_hex(number_str)
potential_mnemonics.append(ascii_hex)
ascii_int_list=number_to_ascii_int_list(number_str)
potential_mnemonics.append(str(ascii_int_list))
forpotential_mnemonicinpotential_mnemonics:
address=generate_address_from_mnemonic(potential_mnemonic, "m/84'/0'/0'/0/0")
ifaddress==target_address:
returnpotential_mnemonicreturnNone# --- INPUT VALUES ---share1_words="session cigar grape merry useful churn fatal thought very any arm unaware".split()
share2_words="clock fresh security field caution effort gorilla speed plastic common tomato echo".split()
share3_hex="796f752061726520616e20617765736f6d65206170706c69636174696f6e"target_address="bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6"number_str="151804135936564389626333064995458199739042283435000"# --- FIND THE RESULT ---found_mnemonic=find_mnemonic_for_address(share1_words, share2_words, share3_hex, target_address, number_str)
iffound_mnemonic:
print("Matching mnemonic found:", found_mnemonic)
address=generate_address_from_mnemonic(found_mnemonic, "m/84'/0'/0'/0/0")
ifaddress==target_address:
print("Derived adress is correct:", address)
else:
print("Derived adress is incorrect", address)
else:
print("No matching mnemonic found!")
Explanation:
This code aims to try all possibilities and reach the target address by combining all the previous steps.
*First, SSS merging is done and then the target is tried to be reached by using the seed, its hash, and its ascii equivalents.
Vulnerability/Bug:
Keeping sensitive data in code,
errors that may occur in the special SSS function we wrote ourselves,
Risks such as reliance on the bip_utils library and possible logic errors in the code still remain.
Stage 5: Lagrange Interpolation
Purpose: To obtain hidden numerical information from shared information with Lagrange interpolation. Code:
Explanation: This code aims to reach the numerical order by performing lagrange interpolation with the numerators obtained in the previous steps.
-With this code, the secret numerical value was reached.
Vulnerability/Bug:
-Possibility of direct allocation of shares and errors in interpolation. CONCLUSION:
Confidential information was found:
The data could be accessed both with the special SSS algorithm and with Lagrange interpolation. Learned:
The importance of cryptography,
Using different FAQ algorithms,
Protection of sensitive data,
The necessity of writing secure code.
The text was updated successfully, but these errors were encountered:
Entrance:
Target:
Based on a specific Bitcoin address
(
bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6
)and the derivation path of this address
m/84'/0'/0'/0/0
, the mnemonic seed (seed expression) creates this address. ) was to access a secret numerical value associated with . It was also assumed that this secret value was shared with some SSS algorithms.Starting Data:
Shamir Secret Shares:
share1
(string of words):session cigar grape merry useful churn fatal thought very any arm unaware
share2
(string of words):clock fresh security field caution effort gorilla speed plastic common tomato echo
share3_hex
(hexadecimal string):796f752061726520616e20617765736f6d65206170706c69636174696f6e
I used this code for share3_hex.
`from secretsharing import PlaintextToHexSecretSharer
** Convert the first two shares into Hex format
share1 = 'session cigar grape merry useful churn fatal thought very any arm unaware'
share2 = 'clock fresh security field caution effort gorilla speed plastic common tomato echo'
** Derive the secret from these shares
secret = PlaintextToHexSecretSharer.recover_secret([share1, share2])
print(f"Recovered Secret: {secret}")`
Target Address:
bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6
Derivation Path:
m/84'/0'/0'/0/0
Numerical Secret Information (for Lagrange):
Obtained by combining
151804135936564389626333064995458199739042283435000
and the shares formed by this data The value1268285827517456901482635677053256050022404807332818
.Development:
First, an attempt was made to combine the shares
share1
,share2
andshare3_hex
using thepyssss
library.Next, a special SSS algorithm was implemented. In this way, possible weaknesses were tried to be eliminated by providing more control over the SSS algorithm.
As a result of SSS merging, a meaningful word sequence such as
you are an awesome application
was obtained.**Bug/Vulnerability:
Possible vulnerabilities of the
pyssss
library and custom SSS implementation. The probability that the obtained seed does not match the mnemonic exactly.An attempt was made to create mnemonics that comply with BIP39 standards by using the
bip_utils
library.Bug/Vulnerability:
Trust in
bip_utils
library. Insufficient input data.ASCII equivalents of the string obtained from
pyssss
and the string obtained from numbers were examined, and different combinations were tried.iancoleman/bip39
tool.Bug/Vulnerability:
Risk of data leakage during manual operations.
Bug/Vulnerability:
Storing sensitive data within code. Errors occurring in the code.
Conclusion:
Reaching the First Mnemonic:
As a result of all these attempts, our code obtained the hexadecimal string
0b6b4b5d515c0d7c7147165618385c1199774527782e105c7410154a26
(which was actually considered the mnemonic we were trying to find). It turned out that this value was actually the shared data itself.Second Numerical Secret:
The numerical secret obtained by Lagrange interpolation was determined as
1268285827517456901482635677053256050022404807332818
.Verification:
In both cases, it was determined that the target address and number could be accessed with the obtained values.
** Vulnerabilities and Bugs (Detailed):**
Description: The numerators, target address, derivation path, and results are defined directly in the code.
Error: This results in access to all confidential information if the code is compromised.
Risk: Unauthorized access, information leak.
Description: Reliance on libraries such as
pyssss
,bip_utils
, andhashlib
.Error: Possible vulnerabilities and malicious updates in libraries.
Risk: Vulnerabilities in libraries, incorrect address generation, malicious code.
Description: Manual attempts with the
iancoleman/bip39
tool.Error: Incorrect data entry or risk of information being exposed.
Risk: Information leak, data loss.
5.Communication Not Encrypted:
Explanation: The information shared in this chat environment is not encrypted.
Error: Risk of data interception during communication.
Risk: Interception and capture of information.
6.Security of Private SSS Algorithm:
Description: Potential bugs of custom written FAQ functions.
Error: Risk of obtaining incorrect results as a result of logical errors in the code.
Risk: Incorrect secret generation.
7.Conversions Required for Seed:
Description: Difficulties in converting Seed to mnemonic.
Error: We got wrong results because we did not apply the correct transformations to the seed at first.
Risk: Failure to access the seed and data loss.
Explanation: Wrong coefficients entered in Lagrange interpolation
Error: The correct coefficients were not calculated initially.
Risk: Getting wrong results
Changes That Will Make It Harder to Find the Secret:
1-) Completely Separating Sensitive Data from Code:
Change: Store data in encrypted files or hardware security modules. Access to this data from the code must be provided with an encryption key or similar secure methods.
Impact: Even if the code is compromised, data becomes very difficult to access.
2-) Minimizing the Use of External Libraries:
Change: Use standard and open source libraries as much as possible for cryptographic operations and perform security auditing.
Impact: Reduces the likelihood of being affected by vulnerabilities in libraries.
3-) Data Encryption and Communication Security:
Change: Use encryption (for example, PGP or AES) when storing and transferring all sensitive data.
Impact: Data becomes difficult to read by unauthorized persons.
4-) Increasing the Security of Shares:
Change: Use encryption when storing and transferring shares. Store shares physically in separate locations.
Effect: Ensures that if a single share is compromised, all confidential information cannot be accessed.
5-) Strengthening the FAQ Algorithm:
Change: In custom FAQ applications, use mathematical models to reduce vulnerabilities. Make the shares meaningless by applying methods such as mixing and transforming the shares.
Effect: Makes the algorithm more complex and harder to solve.
6-) Hiding the Seed and Making It Difficult:
Change: Use more complex and less predictable algorithms when creating the seed. Keep the seed in converted format, not direct.
Effect: Makes direct capture of the Seed more difficult.
Summary:
This composition covers the entire process from start to finish, examining the errors and security vulnerabilities in detail. It also aims to help develop more secure applications in the future by providing recommendations and changes that will make it harder to find the secret.
STAGE 1:
First SSS Merge Attempt (with
pyssss
)Aim: Trying to recover confidential information by combining shares
share1
,share2
andshare3_hex
.Code:
This code aims to try all possibilities and reach the target address by combining all the previous steps.
*First, SSS merging is done and then the target is tried to be reached by using the seed, its hash, and its ascii equivalents.
Vulnerability/Bug:
bip_utils
library and possible logic errors in the code still remain.Stage 5: Lagrange Interpolation
Purpose: To obtain hidden numerical information from shared information with Lagrange interpolation.
Code:
Explanation: This code aims to reach the numerical order by performing lagrange interpolation with the numerators obtained in the previous steps.
-With this code, the secret numerical value was reached.
Vulnerability/Bug:
-Possibility of direct allocation of shares and errors in interpolation.
CONCLUSION:
Confidential information was found:
The data could be accessed both with the special SSS algorithm and with Lagrange interpolation.
Learned:
The text was updated successfully, but these errors were encountered: