Saturday, November 23, 2013
Why Did the Russians Ban an Appliance Found in 90% of American Homes
Saturday, November 2, 2013
Google Taking Aim at Device Modders in Android 4.4 KitKat
Ref: http://www.xda-developers.com/android/google-taking-aim-at-device-modders-in-android-4-4-kitkat/
Google Taking Aim at Device Modders in Android 4.4 KitKat
POSTED NOVEMBER 1, 2013 AT 6:30 PM BY PULSER_G2
Google Taking Aim at Device Modders in Android 4.4 KitKat
Android 4.4 introduces a number of changes intended to reduce the risks of rootkits on the platform. In addition to SELinux, the dm-verity kernel feature is also used on boot. The dm-verity feature is used to verify the filesystem storage, and detect modifications to the device at block level (rather than file level). In essence, dm-verity aims to prevent root software from modifying the device file system. This is done by detecting the modifications made to the filesystem, which will no longer match the expected configuration.
In dm-verity, each block of the storage device has a SHA-256 hash associated with it. (For reference, a block is simply a unit of address for storage, typically around 4 KB on flash devices.) A tree of hashes is formed across pages, such that only the “top” hash in the tree (known as the root hash) needs to be trusted, in order for the entire filesystem to be trusted. If any block is modified, this will change the hash, breaking the chain.
The boot partition of the device will contain a public key, which the OEM is expected to externally verify (perhaps via the bootloader or low-level CPU features). This public key is used to ensure the signature of the hash on the file system is valid and unmodified.
In order to reduce the time taken to verify the filesystem, blocks are only verified when they are accessed, and are verified in parallel with the regular read operation (to essentially eliminate any latency with accessing the storage). If the verification changes (i.e. files have changed on the system partition), then a read error is generated. Depending on the application accessing the data, it may proceed if it’s not a critical action, but it is also possible for applications to decline to operate under these conditions.
While nobody can predict the future with 100% accuracy, I think it’s fair to say that “rooting” and modifying devices running Android 4.4 with locked bootloaders (i.e. where root exploits are required, as the OEM will not permit custom kernels) may well be considerably more difficult than in previous Android versions. It seems that Android 4.4 is taking a few leaves out of the Chrome OS book, as these changes essentially implement “verified boot,” as found on Chrome OS.
To re-iterate, if you are able to change the kernel your device uses, this feature will not be a concern. It’s possible to either disable dm-verity in the kernel, or to set it up to use your own keys to authenticate the system hash. For users who choose to buy carrier-branded devices and accept a locked bootloader, but find a way to root the device, take heed of this warning. It’s not at all unlikely (in my technical opinion) for this to become incredibly unlikely to happen on future devices. If you want the ability to modify the software on your phone, I’d avoid anything with a locked bootloader, and ensure you can modify the kernel (to disable or modify the dm-verity signatures).
Right now, little is known about what this will actually mean, but aside from greater security for users on stock ROMs, I suspect there will be some noticeable impact on casual users wishing to make small changes to Android. Until we see devices from other OEMs shipping with 4.4, it’s difficult to really assess how (or if) this will change things. But take note, and bear it in mind.
Sunday, October 20, 2013
What is the Casimir effect?
Image: Scientific American
CASIMIR EFFECT
|
Basics of Intel Virtualization (VT-x)
Due to explicit prohibition, I can only share the original link and not reproduce it on this blog.
SO, it is just 1 click away :)
Ref: http://www.hardwaresecrets.com/article/Everything-You-Need-to-Know-About-the-Intel-Virtualization-Technology/263/1
Multiple Scientists Confirm The Reality of Free Energy – Here’s The Proof - See more at: http://www.collective-evolution.com/2013/10/11/multiple-scientists-confirm-the-reality-of-free-energy-heres-the-proof/#_
Multiple Scientists Confirm The Reality of Free Energy – Here’s The Proof
These concepts have been proven in hundreds of laboratories all over the world, yet never see the light of day. If the new energy technologies were set free world wide the change would be profound. It would affect everybody, it would be applicable everywhere. These technologies are absolutely the most important thing that have happened in the history of the world. – Dr. Brian O’Leary, Former NASA Astronaut and Princeton Physics Professor.
The Research
Vacuums generally are thought to be voids, but Hendrik Casimir believed these pockets of nothing do indeed contain fluctuations of electromagnetic waves. He suggested that two metal plates held apart in a vacuum could trap the waves, creating vacuum energy that could attract or repel the plates. As the boundaries of a region move, the variation in vacuum energy (zero-point energy) leads to the Casimir effect. Recent research done at Harvard University, and Vrije University in Amsterdam and elsewhere has proved the Casimir effect correct (7).
There is significant evidence that scientists since Tesla have known about this energy, but that its existence and potential use has been discouraged and indeed suppressed over the past half century or more (2) – Dr. Theodor C. Loder III
Relatively recent proposals have been made in the literature for extracting energy and heat from electromagnetic zero-point radiation via the use of the Casimir force. The basic thermodynamics involved in these proposals is analyzed and clarified here, with the conclusion that yes, in principle, these proposals are correct (5).
We’ve had major military people at great risks to themselves say yes these things are real. Why do you think the military industrial complex doesn’t want that statement to be made, because you start thinking about what kind of technology is behind that, that’s the bottom line. – Adam Trombly, Physicist, Inventor
These technologies are locked up in black budget projects, it would take an act of God to ever get them out to benifit humanity (2) – Ben Rich, Former Director of Lockheed’s Skunkworks Division
Wednesday, September 25, 2013
A Few Thoughts on Cryptographic Engineering: On the NSA
Friday, September 13, 2013
[Linux] Learning Linux for embedded systems
Learning Linux for embedded systems
What I always recommend to such an embedded systems programmer is this: Look at Embedded Linux as two parts, the embedded part and the Linux part. Let's consider the Linux part first.
The Linux side
Operating systems abound and the choices are many for an embedded system, both proprietary and open source. Linux is one of these choices. No matter what you use for your development host, whether Linux or Windows or Mac, you need to learn how to program using the target OS. In this respect, using Embedded Linux is not greatly different from using VXworks, WindowCE, or another OS. You need an understanding of how the OS is designed, how to configure the OS, and how to program using its application programming interface (API).
A few factors make learning how to program Linux easier than other embedded OSes. You'll find many books and tutorials about Linux, as well as Unix from which it is derived -- many more than for other OSes. Online resources for Linux are ample, while other OSes have a much smaller presence, or one driven by the OS manufacturer. Linux is open source, and you can read the code to get an understanding of exactly what the OS is doing, something that is often impossible with a proprietary OS distributed as binaries. (I certainly do not recommend reading Linux source to try to learn how to program Linux. That's like trying to learn to drive by studying how a car's transmission works.)
The most significant factor that sets Linux apart from other OSes is that the same kernel is used for all systems, from the smallest embedded boards, to desktop systems, to large server farms. This means that you can learn a large amount of Linux programming on your desktop in an environment, which is much more flexible than using a target board with all of the complexities of connecting to the target, downloading a test programming, and running the test. All of the basic concepts and most APIs are the same for your desktop Linux and your Embedded Linux.
Installing Linux
You could install a desktop Linux distribution on your development system, replacing your Windows or Mac system, but that may be a pretty large piece to bite off at one time, since you would likely need to configure email, learn new tools, and come up to speed with a different desktop interface. You could install Linux in a dual-boot environment, where you use the old environment for email, etc., and use the Linux system for learning. This can be pretty awkward, since you need to shut down one environment to bring up the other. Additionally, doing either within a corporate environment may be impractical or impossible. IT folks prefer supporting a known environment, not one that you have chosen.
An easier way is to create a virtual machine environment on your current development system. For Windows hosts, you can install VMware Player or VirtualBox, and on the Mac, you can install Parallels or VMware Fusion. Using a VM offers you much more flexibility. You can install a desktop Linux distribution, like Ubuntu or Fedora. You can use this distribution to become familiar with basic Linux concepts, learn the command shell and learn how to build and run programs. You can reconfigure the kernel or load drivers, without the concern that you'll crash your desktop system. You can build the entire kernel and application environment, similar to what you might do with a cross-development environment for an Embedded Linux target.
If your VM running Linux crashes, you simply restart the VM. The crash doesn't affect other things which you might be doing on your development system, such as reading a web page on how to build and install a driver, or that writing an email to one of the many support mailing lists.
Some of the VM products have snapshot features that allow you to take a checkpoint of a known working configuration, to which you can roll back if you can't correct a crash easily. This snapshot is far easier than trying to rescue a crashing desktop system or an unresponsive target board.
A Linux VM running on your desktop is not a perfect model for an Embedded Linux environment. The VM emulates the hardware of a desktop system, with a limited set of devices that are unlikely to match a real embedded target. But our objective at this point is not modeling a real target (something we'll discuss later) but creating an environment were you can learn Linux concepts and programming easily.
This is the first step: Create a VM and install a desktop Linux distribution on the VM. We'll pick from here in our next installment.
Michael Eager is principal consultant at Eager Consulting in Palo Alto, Calif. He has over four decades experience developing compilers, debuggers, and simulators for a wide range of processor architectures used in embedded systems. His current and former clients include major semiconductor companies and systems developers. Michael has been a member of the ISO C++ Standard Committee and ABI Committees for several processor architectures. He is chair of the Debugging Standards Committee for DWARF, a widely used debug data format. He is active in the open-source and Linux communities.
Tuesday, September 10, 2013
Trusted Execution Technology (aka TXT): What is it?
Thursday, August 15, 2013
Execution address built-in functions for use in scatter files
Execution address built-in functions for use in scatter files
base_address
, +offset
value, or max_size
. They map to combinations of the linker defined symbols shown in Table 4.Function | Linker defined symbol value |
---|---|
ImageBase(region_name) | Image$$region_name$$Base |
ImageLength(region_name) | Image$$region_name$$Length + Image$$region_name$$ZI$$Length |
ImageLimit(region_name) | Image$$region_name$$Base + Image$$region_name$$Length + Image$$region_name$$ZI$$Length |
region_name
can be either a load or an execution region name. Forward references are not permitted. The region_name
can only refer to load or execution regions that have already been defined.Note
.ANY
selector pattern. This is because a .ANY
region uses the maximum size when assigning sections. The maximum size might not be available at that point, because the size of all regions is not known until after the .ANY
assignment.ImageLimit(region_name
)
to place one execution region immediately after another:LR1 0x8000 { ER1 0x100000 { *(+RO) } } LR2 0x100000 { ER2 (ImageLimit(ER1)) ; Place ER2 after ER1 has finished { *(+RW +ZI) } }
+offset
value for an execution region is defined in terms of the previous region. You can use this as an input to other expressions such as AlignExpr
. For example:LR1 0x4000 { ER1 AlignExpr(+0, 0x8000) { ... } }
AlignExpr
, the result of +0
is aligned to a 0x8000
boundary. This creates an execution region with a load address of 0x4000
but an execution address of 0x8000
.Thursday, June 6, 2013
Intel working on low-power Thunderbolt for tablets, smartphones
Intel working on low-power Thunderbolt for tablets, smartphones
Intel working on low-power Thunderbolt for tablets, smartphones
Intel says Thunderbolt on mobile devices depends on the future of WiGig, a wireless data transfer specification
June 04, 2013 10:34 AM ET
- Add a comment