Bookshelf Apps

New Beta of SecretBook 4

August 20th, 2008 7

Details are on the Beta Page, but I think we are almost there. I’ve still got an issue with file updates from SecretBook 3 to 4, but that is the only major issue left.

Status Update

August 19th, 2008 1

Since so much is happening at the moment I think I should be posting regular status updates here.

Mobile SecretBook

As I said previously, Mobile SecretBook has been submitted to Apple. That means that I can get back to SecretBook 4.0 work.

SecretBook 4.0

SecretBook 4.0 has one crashing bug to do with updating databases from SecretBook 3 format. That is my top priority and has to be fixed before the release. There are a bunch of other things to fix too, but they are all either minor or are very quick to fix.

For the final release the help file needs to be updated and the localisations remade.

If you don’t encounter the file updating bug though SecretBook 4.0 is quite usable now. I am keeping the file format fixed too, so you should be able to update to the final release with no problems.

Web Site

The new web site is live, but there is still some work to do. I have no information on Mobile SecretBook yet, that needs to be fixed.

The Kagi store has not been updated, this means an ugly transition from the new site design to the old design.

I’ve just realised that now that the old site is gone there is no download link for SecretBook 3.2.3, I’ll need to fix that as soon as possible.

I’ve fixed all broken links I can fine, but please report any that you may find.

Basic rules of secure programming

August 19th, 2008 0

While writing SecretBook I try to adhere to some basic rules to make SecretBook as secure as is possible. I’ve never listed those rules before, so I thought it was about time I did.

1. Never copy a variable containing a password

Instead of passing a variable around containing a password I try and keep it in one place. Code that needs the password can ask the object that owns the password to use it. In the case of SecretBook there is a class called SBCrypto. It owns the password (or more correctly a key derived from the password) and is the only place that has access to it. You can ask SBCrypto to encrypt or decrypt something, but you can’t ask it for the password.

2. Don’t retain anything for longer than necessary

Once you’re done with a piece of private information you need to clear it away as soon as possible.

3. Overwrite memory when done

Where possible don’t just deallocate an object, but overwrite the memory so that the underlying data is destroyed.

4. Only decrypt when absolutely necessary

Sometimes this is hard work, but it is worth it. For example when you Copy a value in SecretBook it does not actually decrypt it. All the code does is signal to the clipboard that SecretBook owns the clipboard. When (and if) you do a Paste the clipboard asks SecretBook for the value, it’s only then that it is decrypted. If you don’t paste then no decryption occurs. That’s also how SecretBook can tell if you have pasted already and clears the clipboard after a paste if you have OnePaste enables.

Some simplistic password applications encrypt your entire file in one go. The downside to that is they also decrypt your entire file whenever you open it.

5. Keep things self contained

Unix, on which Mac OS X is based has a long history of enabling secure applications. One of the basics of this security is address space protection. One application cannot snoop in the memory of another application. This is why SecretBook is a self contained application and has no plug-ins. You know those Safari plug-in apps that you may be tempted to use, well any other plug-in can access your passwords. That’s not a risk I’d be prepared to take.

You can’t always keep to these rules, sometimes Cocoa requires you to copy something, say for example when you are using a text field. As the Pirates in Pirates of the Caribean say, “they’re more ‘guidelines’ than rules”, but they are important nevertheless.

Mobile SecretBook

August 17th, 2008 0

I’ve just submitted Mobile SecretBook to the Apple App store. I’m not sure how long it will take to become available, but it should only be a few days.

There could be some additional delay though if I have to get extra US export documentation for the encryption. I’m hoping that this is not the case, but if it is it could mean a delay of up to 30 days. It may be possible to sell in the US store during this time though.

I’ll be updating the web site with some screenshots and more details over the next week or so. I’m also hard at work getting SecretBook 4 finalised.