Bitcoin Forum
May 05, 2024, 02:35:04 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 2 3 [4]
61  Bitcoin / Project Development / Re: BTCapsule- a Bitcoin Time Capsule- is now Open Source on: October 11, 2022, 08:18:12 AM
If you set up a time server on a local PC and register a redirect from the specified domains, will your capsule open?

I had no idea how to do this, but after many hours of learning, I successfully set up a local time server, edited my host file, and was able to unlock the keys by changing the system clock.

This has now been fixed. Please see the updated code at:

https://github.com/BTCapsule/BTCapsule

Now when requesting the date from time.google.com, BTCapsule checks the IP address. If the IP address in the host file is pointed to the localhost, BTCapsule alerts the user to enable their internet. If the IP address in the host file is pointed to the IP of time.google.com, and the computer is offline, the program fails to run.

I'm afraid that won't be enough. Anyone can set up a fake NTP server on any host, not just the local computer. In addition, it is possible to redirect Internet traffic without using the hosts file, for example, at the router level or by spoofing DNS records.


If someone sets up a fake NTP server, would they be able to replicate time.google.com’s IP address? Here is the code:

def get_ntp_time() -> datetime:
         try:
            ntp_pool = 'time.google.com'
            ip = socket.gethostbyname(ntp_pool)
            ip1 = ip[:-2]
            ip2 = ip[:-3]
            
            
            if (ip1 == "216.239.35" or ip2 == "216.239.35"):
               call = ntplib.NTPClient()
               response = call.request(ntp_pool, version = 3)
               
            else:
               canvas1 = tk.Canvas(root, width = 400,
                  height = 240,
                  bg = 'white',
                  highlightthickness=0
                  )


               canvas1.pack()

               canvas1.create_text(200,110,
                  width= 350,
            
                  fill="black",
                  font="Arial 10",
                  text="Please enable internet")


               root.title('Bitcoin Time Capsule')

               
               root.mainloop()
               quit()




BTCapsule is a Bitcoin Time Capsule for your private keys. Enter a year and your private keys, and when the year arrives, your private keys will be available to whoever you give the program to. This is perfect for inheritance of Bitcoin, very easy to use, and allows you full access to your Bitcoin.
Good project, but the only way for me to use something like this, is to give a certain type of hint [as opposed to entering my private key] that could "only" mean something to a specific person, and judging by the screenshots on your website, looks like it can be used for such a thing.

Yes, you can actually write whatever you want into the keys section. It’s technically just a time capsule software, but I love Bitcoin and what it stands for, so I chose to make it about Bitcoin.



Have you checked if the year 2038 problem would affect the software in any way? Would there be any exploits based on that?

That's only about 16 years into the future.

Personally I would prefer a method that doesn't rely on software as there are just many things that could go wrong in the long term.

For example, can you still run a program from 16 years ago in your current laptop? Libraries, OS, programs, etc, move on with the times and it's difficult to run older software in modern devices.

I read about this problem, but I don’t see any reason why BTCapsule would be effected. My program doesn’t use Unix time. Any issues with 2038 would be managed by the NTP servers that BTCapsule calls, and that won’t be a problem:

https://unix.stackexchange.com/questions/272048/failure-of-ntpdate-if-the-system-is-set-to-a-date-beyond-2038



BTCapsule is a Bitcoin Time Capsule for your private keys. Enter a year and your private keys, and when the year arrives, your private keys will be available to whoever you give the program to. This is perfect for inheritance of Bitcoin, very easy to use, and allows you full access to your Bitcoin.
Nice move on listening to bitcointalk community and releasing your code with open source license, but I don't think you needed to create one more topic for BTCapsule.
I know few websites that are doing verification of open source bitcoin wallets, but you would need to find other people to review and audit your code.
Maybe you could contact someone like Andreas Antonopoulos or Jameson Lopp, and get their opinion about BTCapsule.
This would be good for getting more attention from more Bitcoiners, and they could make useful suggestions for improving your software.

Question for OP:
- Is it possible to test and see how BTCapsule works with Bitcoin testnet coins?

I’m glad I decided to make it open source. The suggestions I’ve received have already made BTCapsule much more secure. I would love to talk to prominent Bitcoiners about BTCapsule, and I’ve been trying through Twitter.

You shouldn’t have a problem using BTCapsule for testnet coins. You can write anything into BTCapsule, but I chose to make it about Bitcoin because I love Bitcoin.


[moderator's note: consecutive posts merged]
62  Bitcoin / Project Development / Re: BTCapsule is a Bitcoin Time Capsule to leave your private keys as an inheritance on: October 11, 2022, 08:02:12 AM
Let me start by repeating: Verify. Don't trust.

More sources for UTC time

I have added multiple sources for checking UTC time online. I will now post them, as I’m not concerned about them being hacked. Time is now coming from the Network Time Protocol from various sources. These are the sources, in order of possible failure:
So this means spoofing the DNS is enough to change the date and decrypt the keys?

Don't even need to spoof DNS run a NTP server locally and change the hosts file.
Even if you change the NTP servers it checks it's just adding the step of installing wireshark and looking at what NTP servers are queried and putting them in the hosts file.

Anything that at any time needs an outside service that is an open standard is never going to be secure.

-Dave

Please see my reply to PrivatePerson here:

https://bitcointalk.org/index.php?topic=5416534.msg61100414#msg61100414

I was indeed able to run a local NTP server and change the host file to exploit the program. This has been fixed. Thank you for helping me find this issue.
63  Bitcoin / Project Development / Re: BTCapsule- a Bitcoin Time Capsule- is now Open Source on: October 11, 2022, 07:52:11 AM
If you set up a time server on a local PC and register a redirect from the specified domains, will your capsule open?

I had no idea how to do this, but after many hours of learning, I successfully set up a local time server, edited my host file, and was able to unlock the keys by changing the system clock.

This has now been fixed. Please see the updated code at:

https://github.com/BTCapsule/BTCapsule

Now when requesting the date from time.google.com, BTCapsule checks the IP address. If the IP address in the host file is pointed to the localhost, BTCapsule alerts the user to enable their internet. If the IP address in the host file is pointed to the IP of time.google.com, and the computer is offline, the program fails to run.
64  Bitcoin / Project Development / BTCapsule- a Bitcoin Time Capsule- is now Open Source on: October 09, 2022, 08:02:03 PM
BTCapsule is a Bitcoin Time Capsule for your private keys. Enter a year and your private keys, and when the year arrives, your private keys will be available to whoever you give the program to. This is perfect for inheritance of Bitcoin, very easy to use, and allows you full access to your Bitcoin.

You can view the source code here:

https://github.com/BTCapsule

On my website, BTCapsule has been converted to C and compiled to machine code. The method of compilation makes it very hard, if not impossible, to decompile. You are more than welcome to use the code, but please consider purchasing to help with future development and operational fees. Thanks!

https://btcapsule.com/


65  Bitcoin / Project Development / Re: BTCapsule is a Bitcoin Time Capsule to leave your private keys as an inheritance on: October 04, 2022, 08:35:36 PM
BTCapsule creates two encrypted text files called year.txt and keys.txt that are stored in the same folder. The year.txt is encrypted, so that nobody can change the year after it’s created. When you run the program a second time, it checks to see if these files exists, decrypts the year.txt, checks the year, and then encrypts it again.
I understand that program creates this files but what sources it uses to fetch exact time information for year.txt file?
Even if it is encrypted it has to use computer time (either from BIOS or from system) or something that is coming from internet connection.
I can't trust this until I see some proof, since this is closed source and it can't be verified in any way.

I updated the OP to show where the time sources are coming from. The time source is from the internet using the Network Time Protocol.

I’m giving the idea of making it open source serious consideration. I may start a new thread about this, but I have a question. If my code is open source, and that potentially makes it easier for a hacker to exploit the program only if they are in possession of the thumb drive, do you think this would give people more confidence to purchase it?



BTCapsule creates two encrypted text files called year.txt and keys.txt that are stored in the same folder. The year.txt is encrypted, so that nobody can change the year after it’s created.
Why would keys.txt be encrypted? Do you imply that the private keys that are used to decrypt these two files... are also encrypted?

When you run the program a second time, it checks to see if these files exists, decrypts the year.txt, checks the year, and then encrypts it again.
This sounds like you don't understand what you're programming.

I believe in capitalism
If you believe capitalism, you should be obsessed with conquering on competition. Your work reveals the exact opposite. There's no reason one would put it above Timelock. You should give a solution to another problem.

The keys.txt file is the file that stores your private keys. That’s why it’s encrypted. The encryption key is stored on the executable.

I understand that Timelock is great, but it requires the recipient to possess the private keys. Also, if the shit hits the fan, then the original owner of the Bitcoin doesn’t have access to their coins.

Like I said above, I may start a new thread on this, but I’m wondering if I make BTCapsule open source, and it could potentially make it easier for someone to locally hack it, would this be something you’re interested in?
66  Bitcoin / Project Development / Re: BTCapsule is a Bitcoin Time Capsule to leave your private keys as an inheritance on: October 04, 2022, 06:19:00 PM
If you give the keys to a loved one, then you are trusting them not to lose or expose them. BTCapsule doesn’t require your loved one to remember a password. The year that you choose is the password, and when it arrives, they have access to your keys.
How does program knows the exact year that was selected before?
There is a big chance of getting around this if time is based on operating system, or any outside time calculation.
I know there are programs that can hack and change time  for specific application to unlock it or remove some restrictions.
This was usually used before to use trial program version without any restrictions forever, and someone could create crack for your program.



I have updated my OP to explain where the time comes from. It doesn’t come from the OS because that can easily be changed.

BTCapsule creates two encrypted text files called year.txt and keys.txt that are stored in the same folder. The year.txt is encrypted, so that nobody can change the year after it’s created. When you run the program a second time, it checks to see if these files exists, decrypts the year.txt, checks the year, and then encrypts it again.

You can move the keys.txt to another thumb drive so that it is never online. This allows BTCapsule to check the year.txt file online, and generate another encrypted file called offline.txt that can be used to decrypt your private keys without the internet.



This is entirely based on trust, and has multiple completely unnecessary points of failure. There is zero benefit over a timelocked transaction. I wouldn't touch it.

I can't say anything more than that I think the same, and that this kind of idea is problematic in itself if we know what kind of sensitive information is involved. Perhaps, in a technical sense, this idea could be refined to be more decentralized, and one of the things would be to add more sources of UTC time and not rely on just one source.


I have added more sources of UTC time, and posted them here for everyone to see. I’m actually glad this was brought up, because I found pool.ntp.org which is a semi-decentralized time protocol. I have also added a method to protect the private keys from ever needing to be exposed to the internet.



It's an interesting way to guarantee some kind of "inheritance" to a particular family member. But devices such as flash drives can be lost or damaged due to incorrect storage, oxidation, and other external and unpredictable factors. As said before, we can't just store it in one place, we must have copies and use other ways to keep this information safe as well.

Yes, I did not create BTCapsule to be a hardware wallet. So long as the user is still alive, they would still have access to their actual wallet and the responsibility to secure their Bitcoin. If they later decide they don’t want to leave their Bitcoin to whoever possesses the BTCapsule, they can simply move their Bitcoin to another wallet.

I realize thumb drives are not the best, and that is why BTCapsule doesn’t have a license key that makes it dependent on a single device. I was thinking we may not even have USB in the future, so BTCapsule can be moved and copied wherever it’s needed. If the future brings us unrecognizable technology, I figure it won’t be too hard to find an old laptop if it means you’ll have access to Bitcoin. I have an old NES game system, so even if technology changes, we can still find and use what we need from the past.



You can type anything into the text field to try it out, and when you feel comfortable, you can delete the generated files and start over.
You can never feel confident in a closed-source environment. I can't know whether your program does what you're confusedly saying or whether it checks for my keys' balance until I deposit some good amount, or even if it spies on my whole computer. And there's absolutely no reason to trust you. Not only because I don't trust strangers who try to have their closed-source software installed in the place I keep my money, but because you haven't shown you have a technical competence of the subject either.

I have been looking into open source, and I’m wondering if you would be willing to tell me which open source model you would like to see. I found this website that goes over the various models:

https://www.karllhughes.com/posts/open-source-companies

I believe in capitalism, and would love to use the money I make to constantly upgrade BTCapsule and make it a better product. I also want to make wise business decisions, and if open source would offer the trust needed to sell my product, then I would be willing to do that. However, there is also a concern with security. I have read this other article that describes the problems with making software open source:

https://www.writeclick.co.il/practical-strategies-for-securing-open-source-code/

I could make the basic code open source, and then offer to sell my program with the extra security features I have added; but then it seems like those who do not trust anything that is closed source wouldn’t trust to buy my upgraded option anyway. Would you agree?

[moderator's note: consecutive posts merged]
67  Bitcoin / Project Development / Re: BTCapsule is a Bitcoin Time Capsule to leave your private keys as an inheritance on: October 04, 2022, 09:13:00 AM
I know there are programs that can hack and change time  for specific application to unlock it or remove some restrictions.
This is a good point actually. There is nothing stopping an attacker with access to your encrypted file using a man-in-the-middle type attack to feed spoof data to the program to make it think it has connected to whatever site it is pointed at and the date is actually 100 years in the future.

There is also nothing stopping the program from storing whatever keys you enter while offline and later transmitting them to a third party when internet access is re-established.

Please see my updated OP. The private keys are no longer required to be on the same computer to check the date, and then they can be decrypted offline. If there is a way to steal the private keys while they are offline, then I definitely don’t know how to do it. I should also say that if anyone still doesn’t trust this, they can use the program without inputting their private keys. You can type anything into the text field to try it out, and when you feel comfortable, you can delete the generated files and start over.
68  Bitcoin / Project Development / Re: BTCapsule is a Bitcoin Time Capsule to leave your private keys as an inheritance on: October 02, 2022, 01:13:06 PM
It would be trivial for you to set up a bot which automatically sweeps any coins in a second or two, far quicker than any normal user would be able to spend their coins.


I can see a concern here. I will temporarily make the download link unavailable until I fix this. What I will do is allow you to move the text file that has the private keys to another folder or device. Then you can check if the year has occurred, and when it’s ready, the program will notify you to move the private keys into the same directory. Then you can turn off the internet, and your private keys will be available without ever being online.
69  Bitcoin / Project Development / Re: BTCapsule is a Bitcoin Time Capsule to leave your private keys as an inheritance on: October 02, 2022, 12:34:45 PM
The private key is encrypted in a text file, and cannot be decrypted until the year arrives. It is possible the website used to check the UTC will be gone, but it is an established website that has been online for a very long time. In other words, you’re not trusting me to keep the UTC time online.
Encrypted how? With what algorithm?
Which website? How can you be sure it won't be offline? If it is offline, are the keys permanently inaccessible?
How can we be sure the program doesn't send off the encrypted file when it accesses the internet, and how can we be sure you don't know the encryption key it is using and can steal the funds?

This is entirely based on trust, and has multiple completely unnecessary points of failure. There is zero benefit over a timelocked transaction. I wouldn't touch it.

The encryption is built into the executable, so that is how you’re able to encrypt without using the internet. BTCapsule uses AES 128-bit encryption. I won’t say what website is used to check the time, because if BTCapsule becomes popular, then nobody wants the website to be hacked and the time changed. If the website is ever offline, then I will use another website. BTCapsule is not a hardware wallet, so it should never be your only storage of your private keys.

When using a cold wallet, if you want to spend your Bitcoin, then it must be connected to the internet. That means we’re trusting Ledger not to steal our coins. This can be avoided by immediately moving the coins to another wallet the moment they are exposed to the internet, so it’s impossible for me to steal any Bitcoin.




And how do you store the password/private key which used to encrypt the text file?

The encryption key is built into the executable. I have added other unique security features, so it will be extremely hard to find.

Quote
Even if the website still online in the future (e.g. on year 2045), there are different concern such as your software unable to communicate with the website due to various reason such as,
- They change their domain.
- Use newer TLS protocol.
- Use newer HTTP protocol (i refer to HTTP/2 or HTTP/3, not HTML4 or HTML5).

If the website is offline, then I will change the website and the program can easily be updated.

[moderator's note: consecutive posts merged]
70  Bitcoin / Project Development / Re: BTCapsule is a Bitcoin Time Capsule to leave your private keys as an inheritance on: October 02, 2022, 11:17:01 AM

How does the program protect the private key locally when it doesn't ask for password/PIN? What'll happen if website used to check UTC time already gone by year 2XXX?

The private key is encrypted in a text file, and cannot be decrypted until the year arrives. It is possible the website used to check the UTC will be gone, but it is an established website that has been online for a very long time. In other words, you’re not trusting me to keep the UTC time online.


Quote
Personally i would avoid closed source software.

I agree, but I chose to keep the software closed so that it is harder to hack. Ledger has never been hacked, but Trezor has. Both are great options for Bitcoin wallets, but my program uses some unique methods to ensure protection.
71  Bitcoin / Project Development / Re: BTCapsule is a Bitcoin Time Capsule to leave your private keys as an inheritance on: October 02, 2022, 10:29:38 AM
What's the benefit of this instead of locking your BTC while giving the keys and stuff to the loved ones directly? If it just adds a password I don't see the benefits. Timelocking also guarantees that it will stay there until the date arrives, while software might fail to hide the keys completely if a bug was exploited.

If you give the keys to a loved one, then you are trusting them not to lose or expose them. BTCapsule doesn’t require your loved one to remember a password. The year that you choose is the password, and when it arrives, they have access to your keys.
72  Bitcoin / Project Development / BTCapsule is a Bitcoin Time Capsule to leave your private keys as an inheritance on: October 02, 2022, 10:09:14 AM
***

This version of BTCapsule is no longer available. Please see the new thread here:

https://bitcointalk.org/index.php?topic=5420600.0

***




I have created a program that allows you to leave your private keys as an inheritance, or it can replace Timelock by allowing you to hide your private keys until a specific year.

The program is very simple. Move it to a thumb drive, turn off your internet, and enter a future year and your private keys. You can give the thumb drive to a loved one, and when the year arrives, they will have access to your keys.

There is no need to trust lawyers or any third party.

https://btcapsule.com

Please let me know what you think. Thanks!


EDIT

I have worked very hard on my program, and I hope I have addressed all concerns.

More sources for UTC time

I have added multiple sources for checking UTC time online. I will now post them, as I’m not concerned about them being hacked. Time is now coming from the Network Time Protocol from various sources. These are the sources, in order of possible failure:

time.google.com

time-a-g.nist.gov (United States government servers)

pool.ntp.org (a mostly decentralized pool on distributed networks. Used by major Linux distributions)

Keys are NEVER online

I have added a feature that can keep your private keys from ever seeing the internet. Basically, you turn off the internet and move the keys.txt file to another thumb drive. Then turn the internet back on to check the date. If successful, it will create another encrypted file. Turn the internet off, move the keys.txt back into the folder with BTCapsule, and your private keys will be available. You can read the directions here:

https://btcapsule.com/offline.html

The only concern I haven’t addressed is making the program Open Source. I am considering this, but I fear Open Source will make it easier to exploit. I am thinking about providing the code without sensitive data, but I’m not sure yet.

Pages: « 1 2 3 [4]
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!