For the big bang
There can be no disproof of "creation", because a god could have equally initiated the big bang or magically made the universe look billions of years old just 6000 years ago, or even two minutes ago. There's no way to gather scientific proof about things outside of our universe.
However, it is easy to disprove certain elements of fundamentalist creation ideas. In the bible, Genesis offers two contradictory orders of events which should be enough for any rational person to realize it's not a literal account. Noah's flood can't explain where all the water came from, where it went, or how it left anything but bare bedrock on the continents when it went into the oceans. An oft quoted statement about every kind of animal reproducing its own kind is falsified right in the bible where it mentions mules (offspring of a donkey and a horse). Plenty more examples if you search for them.
Presumably, moving bits around in memory doesn't help in this case because the exact memory image is retained. Additionally, the code that moves the bits around is also present, making it straightforward to locate the bits and reassemble the key.
Even better solution: Provide cryptographic support in the CPU and store the keys there, or lacking that just some extra storage for key schedules. Only 240 bytes of storage are needed for a full AES-256 key schedule, twice that for fast encryption and decryption with the most common implementation.
It would be much harder to extract the key schedule from the CPU hardware with the system running, and much easier for the CPU to wipe the storage upon loss of power. As long as the OS wiped the key and passphrase (or any other key source) from RAM upon startup, the key should remain secure.
This could probably be implemented with a few MSRs (model specific registers) for backward compatibility while still retaining a high speed software implementation of the cipher.
But what does it mean when two "copies" of you exist at the same time, each having their own experiences? Is that one conscience or two? Which one did you "wake up" to?
I'd wake up in both bodies as two separate consciousnesses with the same memories. If the copies never met each other, they wouldn't know the difference. "I" would almost certainly diverge in experiences in each copy just from random quantum effects, not to mention environmental differences, until "I" was no longer classifiable as a single individual. It may take seconds, or it may take weeks, depending on how similar our environments were. If we started out in a perfectly symmetrical room facing each other (and the universe was deterministic), it could even be argued that we would remain the same person since there would be no way to introduce differences into our brains. We'd react to each other, but if the timing and motions were perfectly exact we'd just keep doing the exact same things at the same time.
Actually, if you believe the Copenhagen interpretation this happens all the time in alternate universes spawned by the collapse of quantum states, except that there are infinitely many copies going their own way every instant.
The obvious problem to submit would be one that tries all possible programs of increasing length until one that solves NP problems in P time is found, and return that program as the solution.
Not if you want to it do something, like have an OS installed or sign some X.509 certificates.
How do you actually use the computer once it's sealed away? Do you trust a USB stick or floppy disk not to have any viruses or hardware attacks built into it, or do you have some proprietary dongle to interface with the box? Or do you have to type in the byte values of the hash you want to sign and then write down the signature on a piece of paper?
Basically, if you have a machine that you have to trust so completely that it involves keeping it completely disconnected from the network and protecting it against power analysis (speaking of which, is the power supply flywheel isolated or just full of capacitors and inductors?), then how can you trust any other device that you might connect to the box? I'm not being facetious at this point, I've just never had to deal with systems that are that secure.
Also, I would say that 'software' emulation in the case you describe is a misnomer. It may be that artificial neurons could slowly replace biological ones and retain the sense of consciousness. (It may also be that your consciousness actually does die a little with each neuron, replaced slowly by a new and different consciousness.) However, the software powering the neurons would not be where consciousness lies. As an abstract concept, software cannot "do" anything. It takes hardware to execute the software and actually perform the action. If we should ever figure out how to create consciousness through software, then it would still be the hardware that experiences consciousness.
First, changes in consciousness happen all the time; it's called growth and learning. The child that you think you were several years ago no longer exists in any meaningful sense because that consciousness grew and changed into the present you. Every second our consciousness changes and leaves the old behind. Quantum mechanics ensures that it's actually impossible to retrace the exact steps that lead from an earlier state of consciousness.
Second, your distinction between hardware and software is meaningless in this context. When a computer runs software, only the hardware exists in the physical sense. So how does the software exist? It's just a portion of the configuration of the hardware, e.g. an aspect of the hardware state. The same is true of the brain and of a brain simulation. Whatever hardware runs a brain exists physically, and the software is encoded in the physical relationships of the atoms making up the hardware. I guess what I'm trying to say is that only hardware exists, but software is the word we use to talk about the important relationships inherent in the hardware.
The point is that we are not software, but hardware. If you replace that hardware outright, as the OP suggested, you will certainly cease to exist.
What does it mean to cease to exist? The relationships between your atoms are irreversibly changed? If so, that happens every instant. Is it merely the degree of change? Would every atom of your body have to settle to maximum entropy, or would a smaller change suffice? What changes do not cause a person to cease to exist? If the change from meat to electronics causes less of a change than the level that would qualify for cessation of existence in a meat body, wouldn't a person continue to exist as electronics?
Existence is not a trivial concept since it is a completely arbitrary human definition lacking exact specification. If you can define the reason that your body, which is different every second, does not cease to exist, then I can define a transformation to an electronic body that meets all the properties you list. It's just a matter of how sensitive and accurate the hardware simulation needs to be.
It's a complete show stopper when installing in an air-gapped secure room holding the root keys for a certificate authority. The place is RF shielded, no wires enter the room except the well armored power supply, no cell phones or other comms equipment are permitted.
Can't you just turn the computer off at that point?
It doesn't seem like you think advanced AI is impossible, just that humans are doing very poorly at designing it.
The problem is akin to the busy beaver problem, but what do you think the minimum number of bits required to store a human-equivalent intelligence is (e.g. if you stuck the thing in a human skull and raised it normally, it would think and act like a human), and how many fundamental bit operations would it take to simulate one in real time? My guess is that the number of bits is quite a bit lower than the number of neurons in the brain, and that the operations/second required are lower than O(Neurons^2). The important questions are how much more efficient than a human brain it could be, and of course how long an environment with selection pressures tailored to producing advanced intelligence would take to actually create such an intelligence.
One problem with evolving solutions to our problems is that we must be able to define the parameters of the problem in the first place, otherwise we invite solutions that only appear to solve a problem. It's probably much easier to evolve a program that says "I'm human!" and can even convince other humans that it is indeed human that it would be to evolve a program that fundamentally *is* human. E.g. imposters are easier to find than true solutions. Any ideas on proper methods of finding true solutions and weeding out imposters? This goes for generic software engineering solutions as well, since I can think of dozens of applications that claim to solve a specific problem while actually failing to do anything but wrap it in a sugary layer.
The copy of "you" that runs on a computer for thousands of years won't really be you. You'll still be dead.
Just as dead as the meat copy of you from 5 minutes ago? What magic makes your body 5 minutes in the future "you" instead of just a random copy? You do know that all your atoms get replaced every few years, and that when you sleep deeply or get put under general anesthesia almost all of your brain activity ceases, right? I have no problem with going to sleep at night and waking up in a slightly different biological body that thinks it's the same person as the one that went to sleep last night. Why should I care if the body I wake up in is made out of electronics instead of meat, so long as it feels the same way?
Things like cold fusion, teleportation, quantum computing, virtual reality capable of universe-scale simulation, therapeutic gene engineering and nanosurgery, universal molecular constructors, interstellar flight and perhaps even Dyson spheres... all these we will get before we trully can start getting at building the AI that is human-matching. At least we know how we can handle all the other problems, the advances they require and the research that is still needed in their fields.
On the other hand, making a machine with human intelligence is (literally) as easy as making a baby, and humans are very adept at modifying existing tools. We already have working neural interfaces to simple prosthetics, so it's not a stretch to think that intelligence amplification or augmentation is unobtainable in the next two centuries. As we improve our own intelligence, the creation of AI will become easier. It's likely that the hard problems you've mentioned will actually be solved after humans have improved their brains, since any increase in intelligence will make those problems easier to solve, and we seem to be closer to neural improvement than we are to sustainable fusion (we actually have neural interfaces that work; we still can't sustain a thermonuclear fusion reaction).
Isn't the obvious solution to just build a P2P client that uses UDP? Presumably using UDP over port 53 would be even more difficult to filter since every client on the Internet is going to make domain requests and receive responses at some point. Plenty of online games use UDP too, so hiding P2P traffic on those ports would also be a no-brainer. It's going to be very difficult (and expensive) for Comcast to filter UDP streams by determining whether or not it's *really* WoW or counterstrike. A bunch of gamers having their bandwidth throttled would be a nightmare for Comcast.
Reed Solomon codes are of the form (N,M), where there are N code words of which M are data and (N-M) are parity or error correction words. Reed Solomon codes can correct (N-M)/2 errors if the position of the errors is unknown, e.g. out of N words it is not known which are in error, but Reed Solomon codes can correct all (N-M) errors if the position of the error words are known, as is the case in a distributed storage system (assuming each device stores data perfectly, which can be enforced by another level of redundancy on each device). If there are N storage devices out of which a maximum of E can be lost at any one time, an (N,N-E) Reed Solomon code will provide perfect data integrity. All data is encoded as an N word code, one word of each is stored on each of the N devices. If a storage device is lost, a new one can be added and all the words that were stored on the failed device can be rebuilt from existing data on the new device. RAID5 is just an implementation of a (N,N-1) Reed Solomon code, and many RAID6 implementations are (N,N-2) Reed Solomon codes.
The speed of performing Reed Solomon encoding and error recovery in general is not as fast as RAID5 and RAID6, because the implementations operate on polynomials over GF(2) which don't have direct hardware support in most processors like XOR does for RAID5. From what I've found, the time to calculate parity can be made to scale roughly linearly with the number of parity words being calculated, but that relies on using 8 bit words and pre-calculated multiplication tables for each data word which scales quadratically in space. With 16 parity words the coding and error correction can take about 16 cycles per byte of data, and with 32 parity words the speed drops to 30 cycles per byte. That means a theoretical maximum of several dozen MB/s on modern processors. If each storage device can calculate its own parity information, the speed could probably be increased significantly for very large storage arrays.
Aside from the original story's idea of using free hard disk space of workstations, I think it would be cool for people to be able to group their machines together on the Internet using the above scheme so that each user could donate X bytes of storage to the common pool, and once an acceptable level of redundancy (an (N,M) Reed Solomon code) was decided upon each user would have X*(M/N) bytes of highly redundant storage available. I hope to write either a FUSE driver or network block device driver that implements this for Linux. If anyone's interested, I'm planning on making everything available under either BSD or LGPL licensing when it's finished.
I guess you can also be clever with redundancy, so that say half the hard disks in your network can go down but you're still left with a working system (provided the right ones go down), but basically, because you cannot guarantee which hard disks will be up at any given time you also cannot guarantee that you're system won't break in horrible ways. Hence it's not practical unless you don't particularly care about which files are available at any given time as long as some are there.
You can use a redundancy coding scheme so that any failure of M out of N devices is fully recoverable. Reed Solomon coding is a good example. If you have N storage devices out of which up to M may be unavailable at any time, use an (N,N-M) Reed Solomon code to encode all data, then split the codes up so each word of the code is stored in a separate device. Reed Solomon codes can recover from M errors in code words as long as it's known before-hand which words are in error. If you can keep a pool of additional devices available as hot-swap spares, a completely failed device can be rebuilt on another device by just recoding the data after it's recovered.
General PC hardware doesn't allow DMA transfers between disks, AFAIK. Encryption also doesn't prevent DMA from working properly. You can still get full speed transfers over UDMA ATAPI or SATA interfaces. A modern CPU can easily encrypt or decrypt 100MB/s on modern hardware using AES, although if you have CPU intensive tasks they will obviously have to share some of the CPU with the encryption/decryption routines. Encryption is a tradeoff between needing absolute data secrecy and convenience. If you don't really need encryption, why even bother trying it? If you actually do need encryption, then convenience isn't really a consideration.
DriveLock looks like just a policy based device filter that stops Windows from using certain devices. Nothing prevents someone from taking the hard disk out and mounting it under Linux in another machine, or even booting from a Linux live CD or USB stick to get the data (unless you've disabled that in the BIOS, set a BIOS password, and the BIOS password can't be easily reset).
He has good views on war, small government, and the Constitution, but he's also a creationist wacko, plus either a lying racist or so atrociously lazy and irresponsible about reading papers before signing them that it's hard to trust him.
In other words, he acts and votes appropriately but says stupid things from time to time, as opposed to all the other politicians who say the right thing to the right people at the right time and vote according to their corporate masters? I haven't seen any creationist bills signed by RP, nor any racist bills. Frankly, I couldn't care less what people say or think (free speech after all), but what they actually do is what matters.
That's absolutely correct. I don't much care if the whole nation votes unanimously to kill me, I'm still going to defend myself until I run out of ammo.
That's why the U.S. sticks people in jail (or at least requires you to be unarmed in court) *before* handing down a death penalty. Less messy.
Just a counterexample to the idea that all people have an inalienable right to life.
I haven't tried this, and indeed there isn't much real work going on in provable software languages these days. But I think that it would be possible to set theoretical constraints on a program such that it serves data and does not allow it to be modified. There might be a good Ph.D. paper in it for someone.
It's possible to prove almost anything about the programs and operating systems, from type safety and runtime guarantees to any arbitrary set of predicates you want the system to satisfy. That assumes perfect hardware, so at most a security guarantee must be probabilistic, but can be made arbitrarily close to 100% secure by using redundancy and potentially cryptography in hardware to ensure either correct results or the triggering of an error condition.
For some current examples of work in this area you might look at George Necula's work on proof carrying code, which looks pretty interesting. They also have a Java and I think even a subset of C compiler that can output proofs of type safety. I haven't tried them though.
Another big challenge is to figure out how much the security model should cover. Type safety, privilege separation and file permissions are pretty obvious things to include, but what about network security, probabilistic assumptions about cryptographic security, or information control polices like the original Common Criteria required?. It would be useful for normal users to have some sort of classification they could assign to their personal information that the OS could use to keep most processes away from it. I've been interested in capability systems for quite a while too, since they often match a provable security model and programming language a little better than the typical ACL and privilege approaches.
While not network neutrality per se, protocol neutrality is just as important. Traffic shaping is fine so long as it's applied to all traffic and documented in the service agreement. Comcast is proof that corporations can get away with treating Internet customers however they want when they've been granted a monopoly, which makes it the government's business to regulate them if they're going to hand out the monopolies in the first place.
just the mere thought of them confiscating it and all the data I have on it (which is easily worth more than the cost of the laptop to me) is terrifying
Data worth more than your hardware? Time to invest in some redundant backups...
Suppose Kang promises 51% of the population that they can rule the nation, and Kodos promises 49% of the population that they can rule the nation. Ron Paul promises freedom and justice and puppies. The game theory answer is that 51% rank Kang highest, 49% rate Kodos highest, and 100% have Ron as their second choice. Should either Kang or Kodos actually win this election?
For the big bang
There can be no disproof of "creation", because a god could have equally initiated the big bang or magically made the universe look billions of years old just 6000 years ago, or even two minutes ago. There's no way to gather scientific proof about things outside of our universe.
However, it is easy to disprove certain elements of fundamentalist creation ideas. In the bible, Genesis offers two contradictory orders of events which should be enough for any rational person to realize it's not a literal account. Noah's flood can't explain where all the water came from, where it went, or how it left anything but bare bedrock on the continents when it went into the oceans. An oft quoted statement about every kind of animal reproducing its own kind is falsified right in the bible where it mentions mules (offspring of a donkey and a horse). Plenty more examples if you search for them.
Presumably, moving bits around in memory doesn't help in this case because the exact memory image is retained. Additionally, the code that moves the bits around is also present, making it straightforward to locate the bits and reassemble the key.
Even better solution: Provide cryptographic support in the CPU and store the keys there, or lacking that just some extra storage for key schedules. Only 240 bytes of storage are needed for a full AES-256 key schedule, twice that for fast encryption and decryption with the most common implementation.
It would be much harder to extract the key schedule from the CPU hardware with the system running, and much easier for the CPU to wipe the storage upon loss of power. As long as the OS wiped the key and passphrase (or any other key source) from RAM upon startup, the key should remain secure.
This could probably be implemented with a few MSRs (model specific registers) for backward compatibility while still retaining a high speed software implementation of the cipher.
But what does it mean when two "copies" of you exist at the same time, each having their own experiences? Is that one conscience or two? Which one did you "wake up" to?
I'd wake up in both bodies as two separate consciousnesses with the same memories. If the copies never met each other, they wouldn't know the difference. "I" would almost certainly diverge in experiences in each copy just from random quantum effects, not to mention environmental differences, until "I" was no longer classifiable as a single individual. It may take seconds, or it may take weeks, depending on how similar our environments were. If we started out in a perfectly symmetrical room facing each other (and the universe was deterministic), it could even be argued that we would remain the same person since there would be no way to introduce differences into our brains. We'd react to each other, but if the timing and motions were perfectly exact we'd just keep doing the exact same things at the same time.
Actually, if you believe the Copenhagen interpretation this happens all the time in alternate universes spawned by the collapse of quantum states, except that there are infinitely many copies going their own way every instant.
snip lots of protection measures
The obvious problem to submit would be one that tries all possible programs of increasing length until one that solves NP problems in P time is found, and return that program as the solution.
Not if you want to it do something, like have an OS installed or sign some X.509 certificates.
How do you actually use the computer once it's sealed away? Do you trust a USB stick or floppy disk not to have any viruses or hardware attacks built into it, or do you have some proprietary dongle to interface with the box? Or do you have to type in the byte values of the hash you want to sign and then write down the signature on a piece of paper?
Basically, if you have a machine that you have to trust so completely that it involves keeping it completely disconnected from the network and protecting it against power analysis (speaking of which, is the power supply flywheel isolated or just full of capacitors and inductors?), then how can you trust any other device that you might connect to the box? I'm not being facetious at this point, I've just never had to deal with systems that are that secure.
Also, I would say that 'software' emulation in the case you describe is a misnomer. It may be that artificial neurons could slowly replace biological ones and retain the sense of consciousness. (It may also be that your consciousness actually does die a little with each neuron, replaced slowly by a new and different consciousness.) However, the software powering the neurons would not be where consciousness lies. As an abstract concept, software cannot "do" anything. It takes hardware to execute the software and actually perform the action. If we should ever figure out how to create consciousness through software, then it would still be the hardware that experiences consciousness.
First, changes in consciousness happen all the time; it's called growth and learning. The child that you think you were several years ago no longer exists in any meaningful sense because that consciousness grew and changed into the present you. Every second our consciousness changes and leaves the old behind. Quantum mechanics ensures that it's actually impossible to retrace the exact steps that lead from an earlier state of consciousness.
Second, your distinction between hardware and software is meaningless in this context. When a computer runs software, only the hardware exists in the physical sense. So how does the software exist? It's just a portion of the configuration of the hardware, e.g. an aspect of the hardware state. The same is true of the brain and of a brain simulation. Whatever hardware runs a brain exists physically, and the software is encoded in the physical relationships of the atoms making up the hardware. I guess what I'm trying to say is that only hardware exists, but software is the word we use to talk about the important relationships inherent in the hardware.
The point is that we are not software, but hardware. If you replace that hardware outright, as the OP suggested, you will certainly cease to exist.
What does it mean to cease to exist? The relationships between your atoms are irreversibly changed? If so, that happens every instant. Is it merely the degree of change? Would every atom of your body have to settle to maximum entropy, or would a smaller change suffice? What changes do not cause a person to cease to exist? If the change from meat to electronics causes less of a change than the level that would qualify for cessation of existence in a meat body, wouldn't a person continue to exist as electronics?
Existence is not a trivial concept since it is a completely arbitrary human definition lacking exact specification. If you can define the reason that your body, which is different every second, does not cease to exist, then I can define a transformation to an electronic body that meets all the properties you list. It's just a matter of how sensitive and accurate the hardware simulation needs to be.
It's a complete show stopper when installing in an air-gapped secure room holding the root keys for a certificate authority. The place is RF shielded, no wires enter the room except the well armored power supply, no cell phones or other comms equipment are permitted.
Can't you just turn the computer off at that point?
It doesn't seem like you think advanced AI is impossible, just that humans are doing very poorly at designing it.
The problem is akin to the busy beaver problem, but what do you think the minimum number of bits required to store a human-equivalent intelligence is (e.g. if you stuck the thing in a human skull and raised it normally, it would think and act like a human), and how many fundamental bit operations would it take to simulate one in real time? My guess is that the number of bits is quite a bit lower than the number of neurons in the brain, and that the operations/second required are lower than O(Neurons^2). The important questions are how much more efficient than a human brain it could be, and of course how long an environment with selection pressures tailored to producing advanced intelligence would take to actually create such an intelligence.
One problem with evolving solutions to our problems is that we must be able to define the parameters of the problem in the first place, otherwise we invite solutions that only appear to solve a problem. It's probably much easier to evolve a program that says "I'm human!" and can even convince other humans that it is indeed human that it would be to evolve a program that fundamentally *is* human. E.g. imposters are easier to find than true solutions. Any ideas on proper methods of finding true solutions and weeding out imposters? This goes for generic software engineering solutions as well, since I can think of dozens of applications that claim to solve a specific problem while actually failing to do anything but wrap it in a sugary layer.
The copy of "you" that runs on a computer for thousands of years won't really be you. You'll still be dead.
Just as dead as the meat copy of you from 5 minutes ago? What magic makes your body 5 minutes in the future "you" instead of just a random copy? You do know that all your atoms get replaced every few years, and that when you sleep deeply or get put under general anesthesia almost all of your brain activity ceases, right? I have no problem with going to sleep at night and waking up in a slightly different biological body that thinks it's the same person as the one that went to sleep last night. Why should I care if the body I wake up in is made out of electronics instead of meat, so long as it feels the same way?
Things like cold fusion, teleportation, quantum computing, virtual reality capable of universe-scale simulation, therapeutic gene engineering and nanosurgery, universal molecular constructors, interstellar flight and perhaps even Dyson spheres... all these we will get before we trully can start getting at building the AI that is human-matching. At least we know how we can handle all the other problems, the advances they require and the research that is still needed in their fields.
On the other hand, making a machine with human intelligence is (literally) as easy as making a baby, and humans are very adept at modifying existing tools. We already have working neural interfaces to simple prosthetics, so it's not a stretch to think that intelligence amplification or augmentation is unobtainable in the next two centuries. As we improve our own intelligence, the creation of AI will become easier. It's likely that the hard problems you've mentioned will actually be solved after humans have improved their brains, since any increase in intelligence will make those problems easier to solve, and we seem to be closer to neural improvement than we are to sustainable fusion (we actually have neural interfaces that work; we still can't sustain a thermonuclear fusion reaction).
Isn't the obvious solution to just build a P2P client that uses UDP? Presumably using UDP over port 53 would be even more difficult to filter since every client on the Internet is going to make domain requests and receive responses at some point. Plenty of online games use UDP too, so hiding P2P traffic on those ports would also be a no-brainer. It's going to be very difficult (and expensive) for Comcast to filter UDP streams by determining whether or not it's *really* WoW or counterstrike. A bunch of gamers having their bandwidth throttled would be a nightmare for Comcast.
Reed Solomon error correcting codes are a good example.
Reed Solomon codes are of the form (N,M), where there are N code words of which M are data and (N-M) are parity or error correction words. Reed Solomon codes can correct (N-M)/2 errors if the position of the errors is unknown, e.g. out of N words it is not known which are in error, but Reed Solomon codes can correct all (N-M) errors if the position of the error words are known, as is the case in a distributed storage system (assuming each device stores data perfectly, which can be enforced by another level of redundancy on each device). If there are N storage devices out of which a maximum of E can be lost at any one time, an (N,N-E) Reed Solomon code will provide perfect data integrity. All data is encoded as an N word code, one word of each is stored on each of the N devices. If a storage device is lost, a new one can be added and all the words that were stored on the failed device can be rebuilt from existing data on the new device. RAID5 is just an implementation of a (N,N-1) Reed Solomon code, and many RAID6 implementations are (N,N-2) Reed Solomon codes.
The speed of performing Reed Solomon encoding and error recovery in general is not as fast as RAID5 and RAID6, because the implementations operate on polynomials over GF(2) which don't have direct hardware support in most processors like XOR does for RAID5. From what I've found, the time to calculate parity can be made to scale roughly linearly with the number of parity words being calculated, but that relies on using 8 bit words and pre-calculated multiplication tables for each data word which scales quadratically in space. With 16 parity words the coding and error correction can take about 16 cycles per byte of data, and with 32 parity words the speed drops to 30 cycles per byte. That means a theoretical maximum of several dozen MB/s on modern processors. If each storage device can calculate its own parity information, the speed could probably be increased significantly for very large storage arrays.
Aside from the original story's idea of using free hard disk space of workstations, I think it would be cool for people to be able to group their machines together on the Internet using the above scheme so that each user could donate X bytes of storage to the common pool, and once an acceptable level of redundancy (an (N,M) Reed Solomon code) was decided upon each user would have X*(M/N) bytes of highly redundant storage available. I hope to write either a FUSE driver or network block device driver that implements this for Linux. If anyone's interested, I'm planning on making everything available under either BSD or LGPL licensing when it's finished.
I guess you can also be clever with redundancy, so that say half the hard disks in your network can go down but you're still left with a working system (provided the right ones go down), but basically, because you cannot guarantee which hard disks will be up at any given time you also cannot guarantee that you're system won't break in horrible ways. Hence it's not practical unless you don't particularly care about which files are available at any given time as long as some are there.
You can use a redundancy coding scheme so that any failure of M out of N devices is fully recoverable. Reed Solomon coding is a good example. If you have N storage devices out of which up to M may be unavailable at any time, use an (N,N-M) Reed Solomon code to encode all data, then split the codes up so each word of the code is stored in a separate device. Reed Solomon codes can recover from M errors in code words as long as it's known before-hand which words are in error. If you can keep a pool of additional devices available as hot-swap spares, a completely failed device can be rebuilt on another device by just recoding the data after it's recovered.
General PC hardware doesn't allow DMA transfers between disks, AFAIK. Encryption also doesn't prevent DMA from working properly. You can still get full speed transfers over UDMA ATAPI or SATA interfaces. A modern CPU can easily encrypt or decrypt 100MB/s on modern hardware using AES, although if you have CPU intensive tasks they will obviously have to share some of the CPU with the encryption/decryption routines. Encryption is a tradeoff between needing absolute data secrecy and convenience. If you don't really need encryption, why even bother trying it? If you actually do need encryption, then convenience isn't really a consideration.
DriveLock looks like just a policy based device filter that stops Windows from using certain devices. Nothing prevents someone from taking the hard disk out and mounting it under Linux in another machine, or even booting from a Linux live CD or USB stick to get the data (unless you've disabled that in the BIOS, set a BIOS password, and the BIOS password can't be easily reset).
He has good views on war, small government, and the Constitution, but he's also a creationist wacko, plus either a lying racist or so atrociously lazy and irresponsible about reading papers before signing them that it's hard to trust him.
In other words, he acts and votes appropriately but says stupid things from time to time, as opposed to all the other politicians who say the right thing to the right people at the right time and vote according to their corporate masters? I haven't seen any creationist bills signed by RP, nor any racist bills. Frankly, I couldn't care less what people say or think (free speech after all), but what they actually do is what matters.
That's absolutely correct. I don't much care if the whole nation votes unanimously to kill me, I'm still going to defend myself until I run out of ammo.
That's why the U.S. sticks people in jail (or at least requires you to be unarmed in court) *before* handing down a death penalty. Less messy.
Just a counterexample to the idea that all people have an inalienable right to life.
I can lock my house, but even if I do not do so, you will still be trespassing if you enter my house.
Not if you have a big "Open to the public for name requests!" sign above Door 53 on your house, which opens automatically when knocked upon.
I bet your parents weren't capable of putting a sniffer on the network and recording all of your traffic, either.
With Tor, LUKS, and Truecrypt I think any privacy desiring individual (including a child) has the upper hand.
There are dozens on ebay for only a little more than half the price of the give one get one deal (e.g. a good deal).
I haven't tried this, and indeed there isn't much real work going on in provable software languages these days. But I think that it would be possible to set theoretical constraints on a program such that it serves data and does not allow it to be modified. There might be a good Ph.D. paper in it for someone.
It's possible to prove almost anything about the programs and operating systems, from type safety and runtime guarantees to any arbitrary set of predicates you want the system to satisfy. That assumes perfect hardware, so at most a security guarantee must be probabilistic, but can be made arbitrarily close to 100% secure by using redundancy and potentially cryptography in hardware to ensure either correct results or the triggering of an error condition.
For some current examples of work in this area you might look at George Necula's work on proof carrying code, which looks pretty interesting. They also have a Java and I think even a subset of C compiler that can output proofs of type safety. I haven't tried them though.
Another big challenge is to figure out how much the security model should cover. Type safety, privilege separation and file permissions are pretty obvious things to include, but what about network security, probabilistic assumptions about cryptographic security, or information control polices like the original Common Criteria required?. It would be useful for normal users to have some sort of classification they could assign to their personal information that the OS could use to keep most processes away from it. I've been interested in capability systems for quite a while too, since they often match a provable security model and programming language a little better than the typical ACL and privilege approaches.
With the registration time, it should be easy for shady individuals to register them the second NSI drops them.
While not network neutrality per se, protocol neutrality is just as important. Traffic shaping is fine so long as it's applied to all traffic and documented in the service agreement. Comcast is proof that corporations can get away with treating Internet customers however they want when they've been granted a monopoly, which makes it the government's business to regulate them if they're going to hand out the monopolies in the first place.
just the mere thought of them confiscating it and all the data I have on it (which is easily worth more than the cost of the laptop to me) is terrifying
Data worth more than your hardware? Time to invest in some redundant backups...
Suppose Kang promises 51% of the population that they can rule the nation, and Kodos promises 49% of the population that they can rule the nation. Ron Paul promises freedom and justice and puppies. The game theory answer is that 51% rank Kang highest, 49% rate Kodos highest, and 100% have Ron as their second choice. Should either Kang or Kodos actually win this election?