tag:blogger.com,1999:blog-64449116257891154942024-03-06T11:07:35.335+11:00Securitas DatoLes Bellhttp://www.blogger.com/profile/08026252513996335050noreply@blogger.comBlogger42125tag:blogger.com,1999:blog-6444911625789115494.post-21121420590047995012019-11-20T11:11:00.000+11:002019-11-20T11:51:45.882+11:00Book Review - "Elementary Information Security, 3rd ed." by Richard E. Smith<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO3FjYH3wmom0Huy4wZUJoE7ianMU_i0KQS6xjOUFZtzjKyTEr9hHfBFZhEwY8-4ZitowUJ1XpfwkccTKM3y-f2V0HUM2PaPAybjxs5GmFKP0Y9xzY2EhRtkLO1NxkY4Z9O_TDURHbDe4/s1600/Smith+-+ElementaryInfoSec.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="686" data-original-width="556" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO3FjYH3wmom0Huy4wZUJoE7ianMU_i0KQS6xjOUFZtzjKyTEr9hHfBFZhEwY8-4ZitowUJ1XpfwkccTKM3y-f2V0HUM2PaPAybjxs5GmFKP0Y9xzY2EhRtkLO1NxkY4Z9O_TDURHbDe4/s320/Smith+-+ElementaryInfoSec.jpg" width="259" /></a></div>
This book first came to my attention several years back when the first edition received glowing reviews, including recommendations for its use as a study guide for the CISSP exam. The third edition was recently released, and I pre-ordered it, considering it for use in my teaching of both undergraduate and postgraduate programs, as well as CISSP prep courses.<br />
<br />
<b>Table of Contents</b><br />
<br />
<b>Chapter 1, Security from the Ground Up</b> - This starts with a very relatable (important for undergraduates with no business experience) small business scenario ("Alice's Arts") then introduces the NIST Risk Management Framework (SP800-30, -37, -60, -53, FIPS 199) along with related concepts (the CIA triad, various attacks, controls, etc.). There is no mention of ISO 27005, FAIR and other approaches.<br />
<br />
<b>Chapter 2, Controlling a Computer</b> - Essentially "Platform Architecture" - computer architecture, software concepts, programs, processes, buffer overflows, etc.<br />
<br />
<b>Chapter 3, Controlling Files</b> - essentially a high-level look at access control and execution policies, with a discussion of malware and a small section on vulnerability and patch management. Curiously, there is no discussion of mandatory access control systems, especially multi-level (Bell-LaPadula) access control, role-based access control, etc. (although capabilities are discussed briefly) - but see below.<br />
<br />
<b>Chapter 4, Sharing Files</b> - This chapter focuses on discretionary access control: the permissions in *ix and ACL's in MacOS and Windows. It then digresses into a discussion of logging and monitoring, and a discussion of standards compliance is tacked on at the end.<br />
<br />
<b>Chapter 5, Storing Files</b> - This chapter places a description of storage media and disk formats within the context of forensic investigation. Towards the end, it digresses into a discussion of operating system layering and I/O operations.<br />
<br />
<b>Chapter 6, Authenticating People</b> - Here we come to discussion of authentication factors, password systems (in some detail), tokens and biometrics, with some discussion of threats and policy mixed in.<br />
<br />
<b>Chapter 7, Encrypting Files</b> - This chapter provides an introduction to the basic concepts of cryptology; some discussion of classical cryptosystems is followed by a nicely-pitched discussion of some fundamental concepts such as block and stream ciphers, Vernam encryption, etc. before turning to coverage of practical file encryption programs and finally a brief treatment of DRM.<br />
<br />
<b>Chapter 8, Secret and Public Keys</b> - This chapter addresses the key exchange problem along with other issues in key management. There is a minimal mathematical treatment of Diffie-Hellman and RSA, as well as hash functions, digital signatures and certificates. Good to see quantum cryptanalysis and post-quantum cryptography getting some discussion, too.<br />
<br />
<b>Chapter 9, Encrypting Volumes</b> - This chapter further refines the ideas introduced in Chapter 7, providing more detail on DES and AES, and discussion of block cipher modes before building up a good description of a trusted boot operation. Along the way, various attacks are discussed.<br />
<br />
<b>Chapter 10, Connecting Computers</b> - lays down the basics of networking with a security perspective.<br />
<br />
<b>Chapter 11, Networks of Networks</b> - looks at the evolution of the modern Internet, routing protocols, IP and also introduces tools like nmap and Wireshark.<br />
<br />
<b>Chapter 12, End-to-End Networking</b> - Transport layer protocols, DBS, firewalls & NAT and authentication protocols.<br />
<br />
<b>Chapter 13, Network Encryption</b> - This chapter discusses the implementation of crypto at different levels of the protocol stack; along the way it addresses policy issues, problems of key management and distribution and the practicalities of SSL/TLS, IPSec and WPA2.<br />
<br />
<b>Chapter 14, Internet Services and Email</b> - This chapter introduces the basic operation of SMTP, POP and IMAP and then discusses the related security issues: spam, scams, phishing, viruses, etc. Enterprise firewalls reappear towards the end of this chapter.<br />
<br />
<b>Chapter 15, The World Wide Web</b> - The final chapter deals with the operation of the Web and the security and management challenges it poses. The latter part of the chapter deals with web application architecture, various attacks (XSS, injection, etc.) and the OWASP Top 10.<br />
<br />
The book is supplemented by online resources which are available for one year after registration. Importantly, these include two additional chapters:<br />
<br />
<b>Chapter A, Enterprise Computing</b> - This deals with insider threats, social engineering, management and policies, personnel security, physical security and some coverage of resilency and backups.<br />
<br />
<b>Chapter B, Governments and Secrecy</b> - Here we find the missing discussion of classifications and clearances, multi-level security, trusted systems, etc.<br />
<br />
The online resources also include flashcards for testing understanding of key terms and definitions, along with review slides and an image bank containing the figures from the book. An instructor site containing Powerpoint presentations, test questions and an instructor's manual is available, as well as a cloud-based virtual environment for exercise scenarios.<br />
<br />
This is a book for reading cover to cover, rather than dipping into; the concepts build up from a crude understanding to more refined approaches ('continuous process improvement'). As can be seen from the outline above, concepts such as the use of AES in CBC mode are gradually built up over several chapters. High-level concepts - some of the 'fundamental truths' of infosec - are interspersed in the material, and the tail end of each chapter sometimes wanders off tangentially into topics which seem not to fit (e.g. compliance in chapter 4).<br />
<br />
The text is interwoven with good examples of attacks and discussion of the relevant security issues, which help to leaven the dry theoretical concepts. The result is a quite readable textbook, rather than a reference book.<br />
<br />
Each chapter concludes with a list of important terms and abbreviations introduced in that chapter, a set of review questions and a number of practical exercises. These are appropriate to second- or third-year undergraduates.<br />
<br />
Some curious omissions remain: nothing on secure software development, the brief discussion of incident response does not mention the cyber kill chain or security operation centers, and databases merit only two-and-a-half pages in the final chapter. Penetration testing gets a one-sentence treatment and is not clearly differentiated from security audits and network security assessment or vulnerability scans.<br />
<br />
The third edition claims to "cover the core learning outcomes for information security education published in the ACM's 'IT 2008' curricular recommendations", but it really ought to be based on the CSEC2017 Curriculum Guidelines for Post-Secondary Degree Programs in Cybersecurity which a) were jointly developed by the ACM, IEEE and IFIP and b) are more up-to-date, as well as the knowledge, skills and abilities (KSA's) of the NICE Cybersecurity Workforce Framework. However, the key concepts are given a contemporary treatment, and it should be possible to map to the more modern frameworks.<br />
<br />
For CISSP candidates, this book should really be considered complementary to a CISSP-focused reference (e.g. Warsinske et. al., The Official (ISC)2 CISSP CBK Reference, Sybex, 2019). It provides a much more readable overview of the Security Engineering domain, the Communications and Network Security domain, the Identity and Access Management domain, a large part of the Security and Risk Management domain and some of the Operations domain. The online chapters are essential for CISSP candidates, while the end-of-chapter review questions and exercises are less directly relevant.<br />
<br />
Overall, this is one of the best cybersecurity textbooks out there, covering fewer topics, but in more depth, than Ross Anderson's "Security Engineering: A Guide to Building Dependable Distributed Systems" (which is over 300 pages larger). It is certainly much more readable, much better structured and much more accurate than most of the standard CISSP review books I've had the misfortune to encounter.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-51583046037696841522018-11-23T10:42:00.001+11:002018-11-23T10:42:25.553+11:00Navigating Cyber<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj77ioxCRwm9Ylj5omdZBIPlmcAI5hfs3SBMjvfMDdKfN1NvLo8bqnkMNkeS-xsaYOSG0buAPC1j1b2ZS6I8Pby6S6EaMxK9XX_fMw5xfckTl3P4LpsgrdSWsk7kWc9pqYWuD5pLf_gNlg/s1600/Cybernetics-Wiener.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="499" data-original-width="319" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj77ioxCRwm9Ylj5omdZBIPlmcAI5hfs3SBMjvfMDdKfN1NvLo8bqnkMNkeS-xsaYOSG0buAPC1j1b2ZS6I8Pby6S6EaMxK9XX_fMw5xfckTl3P4LpsgrdSWsk7kWc9pqYWuD5pLf_gNlg/s320/Cybernetics-Wiener.jpg" width="204" /></a></div>
Back in the mid-1970's, I was an undergraduate studying Cybernetics and Instrument Physics in the Department of Cybernetics at Reading University in the UK. I was attracted to the ideas of feedback and control theory introduced by the MIT mathematician Norbert Wiener in his landmark book, <i><a href="https://www.amazon.com/Cybernetics-Second-Control-Communication-Machine/dp/026273009X/" target="_blank">Cybernetics: Or Control and Communication in the Animal and the Machine</a></i>, which I had devoured in my final year of high school.<br />
<br />
Those ideas were eventually subsumed into a variety of specialized fields - missile guidance systems, bionics, artificial intelligence, economics and econometric modeling, ecology, general systems theory and others. Meanwhile, my own journey took me into electronics, personal computing hardware, software, operating systems, software development, networking and eventually, the destination for many of us old jacks-of-all-trades, computer security.<br />
<br />
Titles are more a matter of fashion than semantic precision, so in due course, I became an information security consultant - or, for added gravitas, an information assurance consultant. Whatever it was called, it was a long way from my starting point of cybernetics.<br />
<br />
And then, suddenly, the circle closed. "Oh, you work in cyber security?", I was asked.<br />
<br />
And so several years of teeth grinding began.<br />
<br />
The term "cybersecurity" began its rise to popularity thanks to a National Security Presidential Directive issued late in the George W. Bush Presidency. NSPD-54 of January 8, 2008. The accompanying memorandum (now declassified) defines "cybersecurity" to mean "prevention of damage to, protection of, and restoration of computers, electronic communications systems, electronic communications services, wire communication, and electronic communication, including information contained therein, to ensure its availability, integrity, authentication, confidentiality, and non-repudiation".<br />
<br />
The prefix "cyber", in this context, seems to relate to the next definition: "cyberspace", which means "the interdependent network of information technology infrastructures, and includes the Internet, telecommunications networks, computer systems, and embedded processors and controllers in critical industries".<br />
<br />
The term "cyberspace", in turn, was coined by the science fiction author William Gibson in his 1982 short story collection Burning Chrome, but really popularized in his novel Neuromancer. Wiktionary suggests it is a "Blend of cybernetics + space".<br />
<br />
So, where does "cybernetics" come from? Although Wiener coined the modern meaning with his 1948 book, its etymology begins with the Ancient Greek, κυβερνήτης, ("kubernetes") which means a steersman, pilot or navigator. The κυβερνήτης was the man holding the steering oar at the rear of a galley (something I know from another course at Reading, The History of the Warship, taught by an eminent materials scientist with a classicist bent, Prof. J. E. Gordon). It was the steersman's job to keep the ship on course, despite the vagaries of wind, tide and currents, maintaining a course for the next headland.<br />
<br />
It is from this root that we get the word governor - originally referring to the centrifugal governor, an arrangement of spinning brass balls which levered a valve open and closed to regulate the speed of a steam engine - perhaps the earliest example of a feedback system applying proportional control.<br />
<br />
And of course, the same root gives us the terms govern, government and governance. The latter is important in information security - corporate governance is the arrangements for oversight of management which acts to correct things when an enterprise is "off course", and leads in turn to information systems governance and information security governance.<br />
<br />
So, in that sense, we're still in the realm of cybernetics.<br />
<br />
The change from information security to cyber security has wrought some changes, though. The former term encompasses information in all its forms; it extends beyond computer and network security to cover paper (which is why we have information handling rules for classified documents, cabinets, safes, etc.) as well as tacit knowledge. But "cyber" carries other connotations - it abandons the physical world and replaces it with allusions to robots, androids, Dr. Who and the Cybermen and the online world.<br />
<br />
On the other hand, "cyber" also connotes machines and brings us to the world of cyber-physical systems - drones, autonomous vehicles, industrial control systems, power plants, factory and warehouse robots, and even bionic devices such as pacemakers, bionic limbs and implantable cardioverter defibrillators. While risk management for infosec specifies impact on information assets in dollar terms, now we have to think in terms of injuries and life safety.<br />
<br />
When people talk about "cyber security", though, what do they actually mean? In my experience, they're really talking about the security of things connected to the Internet, and securing systems against attacks delivered via the Internet. This tends to de-emphasize insider attacks, taking us back to the firewall-centric, M&M model of information security: hard and crunchy on the outside, but soft and gooey on the inside. That view was always problematic - all the more so with the move to deperimeterization and cloud services.<br />
<br />
In the end, we still don't have a well-defined term for what we do - "systems security" might be the most appropriate, in my view. But at least you know why, when you talk to me about "cyber" ("cyber all the things!") you are met with a quizzically raised eyebrow.<br />
<br />
You keep using that word; it does not mean what you think it means.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-73542647486128118722018-10-26T15:34:00.002+11:002018-10-29T16:40:33.346+11:00How to FAIL at Online Customer ServiceIn just over a week, I'm flying to the US for a conference (the <a href="https://niceconference.org/" target="_blank">NIST NICE Conference</a>, as it happens). My office has booked my flight with Qantas, and today I received an email from the airline offering me the chance to upgrade for a combination of frequent flyer points and cash.<br />
<br />
Clicking the "Make your offer" button in the email takes me to a page where I can select how much I wish to bid for the upgrade, using a slider. The instructions state:<br />
<ol>
<li>
Select the flight segment(s) you wish to upgrade. If there’s
more than one flight segment, you can choose to make an upgrade offer
for some or all of the segments. If you do not wish to make an upgrade
offer for a segment, move the slider to the left to indicate ‘no offer’.
</li>
<li>
Adjust the slider to show the amount of money you want to
offer and if you are a Qantas Frequent Flyer member, input the Qantas
Points you want to offer and select the update button.</li>
</ol>
Only, there's no slider. In both Firefox and Chrome, the part of the page where the slider should appear looks like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaHIz67WiED-q0AhXxizSgjf_uvSvgUmUne3Y-3xjb69iun3wcYRDmhW76CaFlU1-jRw5QK1e1fExt5L1qg5jaREZGGlXtY1quSaeZnX2xyvbynUERavMfZPeq3EAVzBbHtE3O9knkgZI/s1600/NoSlider.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="241" data-original-width="349" height="220" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaHIz67WiED-q0AhXxizSgjf_uvSvgUmUne3Y-3xjb69iun3wcYRDmhW76CaFlU1-jRw5QK1e1fExt5L1qg5jaREZGGlXtY1quSaeZnX2xyvbynUERavMfZPeq3EAVzBbHtE3O9knkgZI/s320/NoSlider.JPG" width="320" /></a></div>
<br />
The slider is probably supposed to appear either above, below or between the "No Offer" label and the maximum amount of $4,105. But it's not there.<br />
<br />
So I open the browser console, and there's a very obvious JavaScript error:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOuE_v_s18lK6RZFWhAuJHWs3D-IKmuno-nQW9Uj-Lu3R4WydimP3K-DBGqlsSYKJcCXMUhm5nrvqPXkjcJX8tqYcRhRNFz4RXLBiBfGgd8P81ts1GfM0s8NjgnMopZWHBMmAjhj27qkQ/s1600/ConsoleLogError.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="94" data-original-width="1100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOuE_v_s18lK6RZFWhAuJHWs3D-IKmuno-nQW9Uj-Lu3R4WydimP3K-DBGqlsSYKJcCXMUhm5nrvqPXkjcJX8tqYcRhRNFz4RXLBiBfGgd8P81ts1GfM0s8NjgnMopZWHBMmAjhj27qkQ/s1600/ConsoleLogError.jpg" /></a></div>
The error is in this line:<br />
<br />
<pre id="line1">plusgrade.page.modules.bid.slider.loyaltyPointsFormat.groupingSeparator = ","; </pre>
<br />
You can't set a property of an object that doesn't exist!<br />
<br />
<div style="text-align: center;">
<i><b>It turns out there is no way to make an offer and get an upgrade.</b></i></div>
<br />
Now, I'd like to notify Qantas of the problem with this process (which is outsourced, by the looks of things). I'm helpful like that. I mean, how many customers are willing and able to provide you with this kind of console log information to quickly resolve a problem?<br />
<br />
Only, there's no way to get the information to Qantas. Replying to the email simply gets a bounce: "Please note that this email is unattended.". Clicking on the "Online help" link at the foot of the email leads to<a href="https://qantas.custhelp.com/app/ask" target="_blank"> https://qantas.custhelp.com/app/ask</a>, which, despite being titled "Email Us" has nothing to do with email at all. Rather, it uses a pair of "Category" and "Sub category" drop-downs to try to categorise the user's query. After carefully inspecting these drop-downs - a time-wasting exercise if ever I saw one - there appears to be no way to direct a query relating to the upgrade process. I could search a library of FAQ's, but I don't have a question - I have a <i>failure</i>. I don't think searching the FAQ's for "loyaltyPointsFormat undefined" is going to get me very far, do you?<br />
<br />
This is the heart of the problem; in an attempt to reduce customer service costs, the company has ensure that the customer cannot obtain service. Worse, it wastes the customer's time.<br />
<br />
So, I'm writing this up in hopes that, one day, someone from Qantas will stumble over it and fix their broken upgrade bid process - and, more importantly, provide a way for customers with problems that Qantas doesn't anticipate - <i>and they're the ones they really need to hear about</i> - can get service. Until they do, they're going to miss out on business, fail to maximize revenues, give users a lousy customer experience (CX) and drive down their NPS (Net Promoter Score).<br />
<br />
I'd call that an epic online customer service FAIL - wouldn't you?<br />
<br />
<b>Update:</b> Afternoon of 29th October - three days later, somebody has finally woken up and the problem has been fixed. We can finally see the slider, and - wow! a little dial which provides a graphical indication of where the slider is positioned! Somebody is really thinking through the usability!<br /><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKciTen-wc1bOo3jXTsrNK9M_8YXJlsAggIvuOTUBlhHE_3mmhL6IFRV38-JqhXMWNtzjl2gPK-TQ3KKo13uHABvf5XuChKfyRxZjCliUmEV3qAFUXkl3QTBHKGOVI64-KqRqJNfoYPHs/s1600/Fixed.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="247" data-original-width="524" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKciTen-wc1bOo3jXTsrNK9M_8YXJlsAggIvuOTUBlhHE_3mmhL6IFRV38-JqhXMWNtzjl2gPK-TQ3KKo13uHABvf5XuChKfyRxZjCliUmEV3qAFUXkl3QTBHKGOVI64-KqRqJNfoYPHs/s320/Fixed.JPG" width="320" /></a></div>
Oh, well. At least it's working. . . for now.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-85655778290021246322018-04-03T16:18:00.001+10:002018-04-03T16:18:20.938+10:00Installing YARA from Source Code on CentOS 7A short post - really more of a reminder to myself - on how to install YARA on CentOS Linux 7.<br />
<br />
CentOS is an enterprise Linux distribution, and as a consequence aims for stability - it tends to have older versions of many software packages. This can make installing some software a bit of a challenge.<br />
<br />
YARA is a pattern-matching program for use by malware analysts - it's a kind of Swiss Army Knife that can calculate hashes, perform string and regular expression matching, and understands various binary executable formats, like PE - most of the techniques that are useful for finding and investigating malware.<br />
<br />
<h2>
Preparation</h2>
<br />
Installing the various required packages can only be done as root. Rather than prefixing each command with sudo, just su to root <br />
<span style="font-family: "Courier New", Courier, monospace;"># sudo su -</span> <br />
Many of the packages required by YARA are also a little ahead of the standard CentOS releases - but that's common for up-to-date versions of many programs, like PHP and others. So you may already have the first requirement - a Yum configuration for the EPEL (Extra Packages for Enterprise Linux) repository. If you have, then you're good to go - otherwise, enable EPEL with the command<br />
<pre><span style="font-family: "Courier New", Courier, monospace;"># yum install epel-release</span></pre>
<br />
If that doesn't work, because you don't have the CentOS Extras repository enabled, then try this:<br />
<pre><span style="font-family: "Courier New", Courier, monospace;"># rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm</span></pre>
Now you're ready to start installing the required packages. Start with GNU Autoconf and libtool:<br />
<br />
<span style="font-family: "Courier New", Courier, monospace;"># yum install autoconf libtool</span><br />
<br />
Then add the OpenSSL development files:<br />
<br />
<span style="font-family: "Courier New", Courier, monospace;"># yum install openssl-devel</span><br />
<br />
If you intend to use the YARA cuckoo and magic modules:<br />
<br />
<span style="font-family: "Courier New", Courier, monospace;"># yum install file-devel</span><br />
<span style="font-family: "Courier New", Courier, monospace;"># yum install jansson jansson-devel</span><br />
<br />
Finally, the latest YARA rules require Python 3.6, so if you don't have it:<br />
<br />
<span style="font-family: "Courier New", Courier, monospace;"># yum install python36 python36-devel</span><br />
<br />
<h2>
Installing YARA itself</h2>
<br />
From this point, everything goes as per the instructions at <a href="http://yara.readthedocs.io/en/v3.7.1/gettingstarted.html">http://yara.readthedocs.io/en/v3.7.1/gettingstarted.html</a>. You should drop your root privileges (exit or switch to another session) then download the latest version of YARA. From that point, it goes something like this:<br />
<br />
<span style="font-family: "Courier New", Courier, monospace;">$ tar xzvf yara-3.7.1.tar.gz</span><br />
<span style="font-family: "Courier New", Courier, monospace;">$ cd yara-3.7.1</span><br />
<span style="font-family: "Courier New", Courier, monospace;">$ ./bootstrap.sh</span><br />
<span style="font-family: "Courier New", Courier, monospace;">$ ./configure --enable-cuckoo --enable-magic</span><br />
<span style="font-family: "Courier New", Courier, monospace;">$ make</span><br />
<span style="font-family: "Courier New", Courier, monospace;">$ sudo make install</span><br />
<br />
Finally, run the YARA tests:<br />
<br />
<span style="font-family: "Courier New", Courier, monospace;">$ make check</span><br />
<br />
Among the output that follows, you should see:<br />
<br />
<span style="font-family: "Courier New", Courier, monospace;">PASS: test-alignment<br />PASS: test-api<br />PASS: test-rules<br />PASS: test-pe<br />PASS: test-elf<br />PASS: test-version<br />PASS: test-exception</span><br />
<span style="font-family: "Courier New", Courier, monospace;">[...]</span><br />
<span style="font-family: "Courier New", Courier, monospace;">============================================================================<br />Testsuite summary for yara 3.7.1<br />============================================================================<br /># TOTAL: 7<br /># PASS: 7<br /># SKIP: 0<br /># XFAIL: 0<br /># FAIL: 0<br /># XPASS: 0<br /># ERROR: 0<br />============================================================================</span><br />
If all is correct, you're good to go! Have fun, and nail that malware!Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com1tag:blogger.com,1999:blog-6444911625789115494.post-43700991082182474582018-03-30T10:44:00.001+11:002018-03-30T10:50:15.463+11:00Optus Cable with Google Wi-FiWe had Optus Cable installed yesterday, replacing an aging ADSL connection. We already had Google Wi-Fi installed, replacing a complicated setup consisting of a Linux-based firewall and multiple access points, but ADSL had become painful, with disconnections whenever it drizzled, let alone rained, and one phone line not working at all (perhaps disturbed by a linesman while trying to get the ADSL fixed).<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAdS1rwIUJ5e1yaQufaAknzMqE7BD_aNivD6DY1MwuUbNnmJK-SbGvXTxYfX6yJLCHHOecS1Fm3VooYxjnGNnAxwbi14pIKrmn1vcnZ9YFE432UMo0VPMCLCyuc05B5HKluJ6EU7Kg34o/s1600/Screenshot_20180203-102101.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1600" data-original-width="900" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAdS1rwIUJ5e1yaQufaAknzMqE7BD_aNivD6DY1MwuUbNnmJK-SbGvXTxYfX6yJLCHHOecS1Fm3VooYxjnGNnAxwbi14pIKrmn1vcnZ9YFE432UMo0VPMCLCyuc05B5HKluJ6EU7Kg34o/s320/Screenshot_20180203-102101.png" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Up with this, I shall not put!</td></tr>
</tbody></table>
<br />
<br />
<br />
<br />
<br />
<br />
I had no intention of downgrading our Google Wi-Fi setup with the somewhat primitive devices Optus supply, so the problem was to get the combination working. Google Wi-Fi can lose some functionality if hidden behind another router, so I had googled for information on the Optus-provided devices to see how they performed. Posts on discussion boards suggested the Netgear CG3000 could be configured as a bridge via some barely-documented settings, while the Sagemcom devices should be avoided at all costs. With that in mind, I selected a plan that provided the CG3000 and figured I would let the Optus technicians get it working and then figure it out. I also took the precaution of buying a spare CG3000 - just so I could replace a Sagemcom if worse came to worst, or perhaps have one configured the way I want and the original to put back into place if necessary.<br />
<br />
In the end, there was far less drama than expected. The Optus techs turned up with a Netgear CM500V modem and a separate Sagemcom 3864V3 router. I let them install it, connected to it via my laptop to show it was all working, and bid them adieu. <br />
<br />
Then I unplugged the Sagemcom and put it back in the box and performed the following procedure:<br />
<ol>
<li>Switch off the CM500V. This is necessary, as the modem remembers the MAC address of the router it is connected to and will not talk to the Google Wi-Fi router without a reboot.</li>
<li>Switch the CM500V back on again. It may take a few minutes to connect, so get it started while you're doing the rest of this procedure.</li>
<li>Unplug the Google Wi-Fi router from the ADSL modem.</li>
<li>Check the Google W-Fi router has realised it is offline - it should show a pulsing amber light.</li>
<li>Turn off mobile data on your phone, then run the Google Wi-Fi app and go to Settings -> Network & General -> Advanced Networking -> WAN. The WAN settings are not editable unless Google Wi-Fi is offline and your phone is talking to it directly on the wireless LAN.</li>
<li>Change the WAN settings to "DHCP" and tap "Save".</li>
<li>Check the CM500V - the Power, Downstream, Upstream and Internet LED's (the top four) should all be solid green by now.</li>
<li>Plug in the Ethernet cable from the Google Wi-Fi WAN port to the modem. Give it a few seconds - the Ethernet LED on the CM500V should turn green and the Google Wi-Fi router will get its WAN IP address via DHCP and should settle down to a stable white light.</li>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVVw5jK88n-OrcS1xw0LhwOHGMXGH5hXggMFu1rPVx2Ys__6rBSK4ZB2hvPTo5vRdKyNsAyjQIB5Bqp5VqdN2ggmSm1NTznAATUeHeCpCuBFyRZLDWBUWcUsHuEcB8vdSXSazb5M9_rcQ/s1600/Screenshot_20180330-104106.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1600" data-original-width="900" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVVw5jK88n-OrcS1xw0LhwOHGMXGH5hXggMFu1rPVx2Ys__6rBSK4ZB2hvPTo5vRdKyNsAyjQIB5Bqp5VqdN2ggmSm1NTznAATUeHeCpCuBFyRZLDWBUWcUsHuEcB8vdSXSazb5M9_rcQ/s320/Screenshot_20180330-104106.png" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Phew! That's better!</td></tr>
</tbody></table>
<li>Go back to the Google Wi-Fi app Shortcuts page, tap "Network check" and then "Test Internet". Marvel at the impressive speed test result!</li>
</ol>
<br />
The NBN HFC Internet connection box sits, forlorn, on the wall of our house while nbnco tries to figure out how to get DOCSIS 3.1 up and running on the cable. We just couldn't wait that long in the end. However, I expect this procedure should work just fine with an NBN cable modem.<br />
<br />
Final caveat: I haven't tested the CM500V with a phone, since we have an Asterisk VoIP setup. But I've no reason to suspect switch to the Google Wi-Fi setup will affect phone operation in any way.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-82469580017597075842017-04-30T12:31:00.000+10:002017-04-30T12:31:25.912+10:00Another Chromebook Use CaseRecent restrictions on traveling with laptops have caused difficulties for business travelers.<br />
<br />
My better half recently booked airline tickets to visit family in the UK, traveling with a codesharing combination of Qantas (Sydney - Dubai) and Emirates (Dubai - Birmingham). This is a much more convenient alternative to taking QF1 all the way to Heathrow and then organising land transport to the Midlands, but even QF1 still transits through Dubai, so would be subject to the same problem.<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1F0ZJf49wCcTWvDAt88YICyMT7wPwXtcLj52nVzAyAk7wJmLk5k-ncsQ0qHMHbl6qCbkziwFsLxYjqWHIXzRRvJTxgwcMBpjUZIVL3I-3nWt-6NOZPTPm4bg_tjw19WkgOatNY2lYX98/s1600/AcerChromebook14-CB3-431-Gold-photogallery-03.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="289" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1F0ZJf49wCcTWvDAt88YICyMT7wPwXtcLj52nVzAyAk7wJmLk5k-ncsQ0qHMHbl6qCbkziwFsLxYjqWHIXzRRvJTxgwcMBpjUZIVL3I-3nWt-6NOZPTPm4bg_tjw19WkgOatNY2lYX98/s320/AcerChromebook14-CB3-431-Gold-photogallery-03.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The Acer Chromebook 14, in Luxury Gold trim.</td></tr>
</tbody></table>
<br />
<h2>
The Problem </h2>
Recently the US instituted a ban on passengers traveling from several Middle Eastern airports carrying electronic devices in their hand baggage. The ban applies to tablets (including some of the older, larger Kindles), laptop computers and other personal electronic devices, and apparently is based on received intelligence on bomb-making techniques.<br />
<br />
This occurred a few weeks after my wife had bought her tickets, and we were initially unconcerned - until the UK followed suit, and specifically added Dubai to the list of ports concerned. Although this was a family visit, my wife needs to run her business while traveling, maintaining contact with clients and working on project reports and presentations. She had previously taken her Windows laptop for this purpose and so we initially considered how this could be done in the light of the new restrictions.<br />
<br />
The most obvious alternative to hand luggage was to put the laptop into checked luggage. But there are problems with this approach.<br />
<br />
Firstly, airlines (and aviation regulators) have specific rules for the carriage of dangerous goods, and lithium ion batteries feature quite prominently in the dangerous goods list. For example, Australia's Civil Aviation Safety Authority provides quite detailed advice to passengers ("<a href="https://www.casa.gov.au/standard-page/travelling-safely-batteries" target="_blank">Travelling safely with batteries and portable power packs</a>", available online at <a href="https://www.casa.gov.au/standard-page/travelling-safely-batteries">https://www.casa.gov.au/standard-page/travelling-safely-batteries</a>) and is quite clear that <i>spare batteries must be in carry-on baggage only</i>, because of the risk of fire.No advice is provided in relation to batteries installed in devices, probably because of the expectation that passengers will carry expensive and fragile devices as carry-on baggage anyway.<br />
<br />
However, a laptop packed into a suitcase - especially a zip-up lightweight suitcase - poses its own risks. First, there is the possibility of theft; I have personally had electronics stolen from a checked bag, presumably by a baggage handler. Secondly, there's the possibility of damage - suitcases are stacked up in containers for loading into the freight holds of large aircraft, and a lightweight suitcase at the bottom of a pile could be subject to considerable pressure and deformation. Finally, the natural inclination is to wrap the laptop in soft clothing to provide protection against the shock of dropping - but what if pressure on a power switch or deformation of the case causes the laptop to power up? It is quite likely to overheat since the clothing will block the air vents - and the clothing is also likely to be highly flammable.<br />
<br />
For these reasons, we rapidly ruled out the idea of packing the laptop in a suitcase - and I hope everyone else does, too.<br />
<br />
The airline eventually proposed a scheme in which passengers transiting Dubai could surrender their laptops for carriage in the hold - but this is unattractive, too - since the laptop bag is the obvious place to store travel documents (e-ticket, passport, etc.) and in-flight requirements. Surrender the bag, and you lose access to those, or have to have yet another bag to carry them; surrender the laptop without the bag, and it is unprotected. Both cases still leave an exposure to damage, loss or theft. Not a comfortable option, either.<br />
<h2>
The Solution </h2>
<br />
What to do, then? Fortunately, there is an easy alternative: order a Chromebook in advance of travel, for delivery to a UK address, and that is what we chose in the end.<br />
<br />
I drew up a short list of requirements for the various alternative solutions to the problem:<br />
<br />
<ul>
<li>Functionality. The device has to support essential business applications: email/calendar, word processing, spreadsheet and presentation graphics. </li>
</ul>
<ul>
<li>Low cost. If we acquired a device just for use on visits to the UK, it would only get used for a few weeks each year, so a high-cost device is not justified. This requirement extends to software licences as well.</li>
</ul>
<ul>
<li>Low maintenance. The machine would lie unused for three to six months at a time, and if the first task on arrival was to install updates and patches, requiring multiple reboots and lots of interaction (e.g. via the Help -> About menu option in Mozilla applications), that's time badly spent on a short trip - but if not done, security exposures would result.</li>
</ul>
<ul>
<li>Security. If the device is stolen, lost, lent to a third party, etc. there should be no exposure of sensitive data on the device and no threat to system integrity.</li>
</ul>
<ul>
<li>No interruption to work, and no work lost. Locally-stored files, e.g. on the hard drive of a Windows laptop, could accidentally be left behind, requiring work to be done all over again.</li>
</ul>
<ul>
<li>Simplicity. We wanted to avoid complicated schemes of copying files to and from USB keys or compact flash. This poses too much risk of an old file over-writing a newer version. </li>
</ul>
<br />
Fortunately, the use of a Chromebook meets these requirements perfectly. Since my wife's business uses Google GSuite (formerly Google Apps), she is already familiar with some of its components and uses them, particularly for collaborative projects. So we knew the functionality requirement was met. We already have another Chromebook and a Chromebox, so the device is familiar, too.<br />
<br />
The Chromebook meets the low maintenance requirement quite easily, as there's very little on the device itself to be updated, and that is taken care of with a few minutes downloading and a ten-second (at most!) reboot. All applications are cloud-based and continually updated.<br />
<br />
Security, simplicity and the requirement for no work to be lost are dealt with by the fact that the Chromebook and GSuite are cloud-based. All she had to do was transfer more of her work to GSuite in the weeks leading up to the trip, and all her work documents were available immediately upon initial login. Similarly, she can leave the Chromebook behind and upon arrival, immediately resume work. Everything is stored in the cloud; nothing is stored on the machine. And because we use two-factor authentication with security keys, there's no real possibility of someone using the machine to gain access to her data. For the same reasons, the family member charged with storing the device is relieved of a lot of responsibility.<br />
<br />
Finally, cost: the Acer Chromebook 14 is only GBP199.00 from Amazon.co.uk (see <a href="https://www.amazon.co.uk/Acer-Chromebook-CB3-431-14-Inch-Notebook/dp/B01MY6VFL3/">https://www.amazon.co.uk/Acer-Chromebook-CB3-431-14-Inch-Notebook/dp/B01MY6VFL3/</a>). That is sufficiently inexpensive that the low utilization is not a problem - it's a reasonable price to pay to solve the travel problem.<br />
<h2>
The Pudding</h2>
<br />
The proof of the pudding is in the eating, as they say. The trip is almost over, and my wife reports that the Chromebook worked well. Even as a non-technical user, she was able to get it unpacked, set up and working with minimal effort, and she has used it for ten days to complete a variety of work tasks. Not having to worry about taking a laptop was a load off her mind, and not having a laptop case to carry was a load off her shoulders.<br />
<br />
The Chromebook is now permanently stationed in the UK for use on future trips, and travel - especially via Dubai - will be a lot easier. The whole exercise has proved yet another use case for the Chromebook, and it has turned out to be a useful addition to our business technology toolbox. Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com1tag:blogger.com,1999:blog-6444911625789115494.post-70617763896391956272017-04-02T21:11:00.000+10:002017-04-02T21:14:11.072+10:00An Infosec View of PrivacyInformation security professionals, and especially cryptographers, tend to think in terms of preserving the security properties associated with information assets, and CISSP's in particular tend to start with the CIA Triad. Clearly, privacy relates to the first member of that triad - confidentiality - in some way, but the relationship is not obviously clear. For example, we often use secrecy as a synonym for confidentiality, but privacy is something different.<br />
<br />
The difference is centered on agency or control, and in particular the relationship between the subject of the information and the information custodian.<br />
<br />
The vast bulk of enterprise information - whether it be private enterprise, or public - is internally-generated, and the subject is, ultimately, the enterprise itself. For example, an ERP system revolves around accounting data (GL, A/R, A/P, etc.) and the ledgers therein describe the enterprise's financial state and history of transactions (as well as future revenue, of course). A CRM system may contain information about customers, but the bulk of that information relates to the enterprise's transactional history with the customer - sales calls, orders placed, etc.<br />
<br />
In such cases, the enterprise is custodian of its own information - it is both subject and custodian. There is no conflict of interest - as custodian, the enterprise is never going to breach the confidentiality of its own information, and indeed will implement controls - policies, identity and access management, security models - to ensure that its employees and agents cannot. The enterprise, as the subject, has authority over the custodians and users of the information.<br />
<br />
However, a conflict of interest arises when an enterprise is custodian of information about identified (or identifiable) individuals. For example, a medical practice maintains health records about patients; it is the custodian, while the patients are the subjects.<br />
<br />
The patient records obviously have value for advertising and marketing purposes, in addition to the intended purpose of patient diagnosis and treatment. For example, a company selling stand-up desks or ergonomic chairs would see considerable value in a list of patients who have complained of chronic back pain, while over-the-counter pharmaceuticals marketers might want to sell directly to patients whose test results indicate pre-diabetes, early indications of hypertension or any of a range of conditions. And an unscrupulous marketer might approach an unscrupulous medical practice manager, resulting in patients being subjected to sales calls for products they do not necessarily want or - worse still - their medical histories or problems being leaked to other interested parties such as family members or employers.<br />
<br />
There is a clear conflict of interest here. The subject of the data is not the custodian, and in fact, has no authority over the custodian. It is in the custodian's interest to on-sell the subject's data to anyone and everyone who is willing to pay for it. And while the example of a medical practice involves only a small business, many enterprises are much, much larger and employ many lawyers, resulting in a power imbalance between the enterprise and the affected individual.<br />
<br />
This is why governments, acting on behalf of civil society and the individual, enact privacy legislation - the legislation gives the individual some degree of authority over enterprises and restores the balance of power. <br />
<br />
Note that many information security controls are able to preserve confidentiality, but not privacy. Personal information is stored in databases and document management systems which are ultimately under the control of an information asset owner and users who are free to access the information for a range of purposes; if he or she decides to extract data, copy it to a USB key and sell it externally, the first two steps are probably authorized while the third cannot be detected, let alone prevented.<br />
<br />
Hence the need for a privacy policy and strong privacy education and awareness within the enterprise. In the end, privacy comes down to personal ethics and compliance with the law. It is really a matter of trust in the integrity of those who have access to personal information - and the threat of legal action provides a degree of assurance in that integrity.<br />
<br />
Notice that, in this model, the distinction between confidentiality and privacy can be extended beyond individual persons to companies or other entities. For example, the Chinese Wall model is another situation in which information about one entity is in the custody of another (e.g. information about clients held by a consulting firm would obviously be of great interest to other clients who are competitors). In that sense, then, the Chinese Wall model is intended to preserve privacy rather than integrity.<br />
<br />
Finally, consider personal information in the custody of the person themselves. The subject and the custodian are the same individual - there is no conflict of interest, privacy laws do not apply, and the issue here is confidentiality, not privacy.<br />
<br />
The distinction between confidentiality and privacy, then, is whether the subject of the information has authority over the custodian - if he does, it's a matter of confidentiality, but if he does not, then it's a matter of privacy.<br />
<br />
Of course, there are other common conceptions of privacy, as well as legal views relating to photography, etc. but these are not considered here.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-20019733897474963112016-07-17T12:22:00.000+10:002016-07-17T14:19:24.216+10:00A Little Learning - Electronic Voting and the Software ProfessionOver the last week, I've had occasion to ponder the expression that 'a little learning is a dangerous thing'. <br />
<br />
Quite spontaneously, a number of people have posted on Facebook in opposition to the idea of electronic voting. One linked to a YouTube video which clearly demonstrated the problems with some of the voting machines used in the US. Others posted a link to a <a href="https://www.theguardian.com/commentisfree/2016/jul/12/lets-put-e-voting-where-it-belongs-on-the-trash-heap-of-bad-ideas" target="_blank">Guardian opinion piece</a> that labeled electronic voting a "monumentally fatuous idea".<br />
<br />
The YouTube video - actually, a full-length documentary from 2006 entitled "Hacking Democracy" - showcased a number of well-known problems with the voting machines used in the US. Touch-screen misalignment causing the wrong candidate to be selected, possible tampering with the contents of memory cards, problems with mark-sense readers, allegations of corruption in the awarding of contracts for voting machines - these have been known for some years.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/M7W7rHxTsH0/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/M7W7rHxTsH0?feature=player_embedded" width="320"></iframe></div>
<br />
<br />
The Guardian article fell back on claims that "we could not guarantee that it was built correctly, even with source code audits. . . Until humans get better at building software (check back in 50 years) . . . we should leave e-voting where it needs to be: on the trash-heap of bad ideas."<br />
<br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">However, by exactly the same argument, online banking is also a
"monumentally fatuous" idea, along with chip & PIN credit card
transactions, online shopping, fly-by-wire airliners, etc.</span></span><br />
<br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">Whenever I've suggested that, actually, electronic voting is not such an outlandish idea, I've met with vehement opposition, usually supported by an appeal to authority along the lines of "I used to be a sysadmin, and let me tell you . . ." or "I'm a software engineer and it's impossible to write foolproof software. . ." <br /><br />There's an old saying among cryptographers, that every amateur cryptographer is capable
of inventing a security system that he, himself, is unable to break. In this
case, the author of the Guardian piece demonstrates the converse - that because he, himself,
is unable to come up with a system that he can't break, he is certain the
professionals can't either. </span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">I have to say, that's a novel form of arrogance; to be so sure that because electronic voting systems are beyond your own modest capacity, nobody else can do it, either.</span></span><br />
<br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">Yes, we've all seen software projects that were near-disasters, we've known programmers whose code had to be thrown away and rewritten, and poor practices like the storage of passwords and credit-card numbers in unencrypted form. I watch students today 'throw' code into the Eclipse IDE then run it through the debugger to figure out what the code they've just written actually does, and then I think back to my days of careful, paper-and-pencil bench-checking of Algol code, and I <i>cringe</i>!. But not every system is designed and implemented that way.</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjLR5ZzcxdTKS96zA6BFAIl64A0yacmk8w3_TJUu0c9yHpHRqXIcAc0NldiY9sOviH6CaBKUqNTHVp_ptrCtWleWEkSvSnOGsJjzmyQyVe8zl2kNif0ABJSgNy4SWOIGzx6MnrfCeX09k/s1600/ballot-box-32384_1280.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="252" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjLR5ZzcxdTKS96zA6BFAIl64A0yacmk8w3_TJUu0c9yHpHRqXIcAc0NldiY9sOviH6CaBKUqNTHVp_ptrCtWleWEkSvSnOGsJjzmyQyVe8zl2kNif0ABJSgNy4SWOIGzx6MnrfCeX09k/s320/ballot-box-32384_1280.png" width="320" /></a></div>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">It's true that electronic voting is a difficult problem, but it's one that some very fine minds in the cryptographic and security communities have been working on for several decades now. The underlying cause of this difficulty is that a voting protocol must simultaneously preserve what, at first sight, are a number of conflicting security properties.</span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">Most security people are familiar with the basic security properties we work to preserve in the information and systems in our care: confidentiality (also known as secrecy), integrity (correctness) and availability - the so-called "CIA triad". But there are many more, and some of them, at first glance contradict each other.</span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"></span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">For example, <i>anonymity </i>is important in a democracy; no-one should be able to find out how you voted so that nobody should fear any form of reprisal. For an electronic voting system, this means that the vote cannot be associated with the voter's identity, whether represented as a login ID, an IP address, a public key or some other identifying information. But democracy also requires that only those who are entitled to vote being able to do so - in Australia that means registering on the electoral roll and identifying yourself at the polling place. This property is called <i>eligibility</i>.</span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">At first glance, these requirements are mutually exclusive and contradictory - how can you identify yourself to claim eligibility, while at the same time remaining anonymous? In the physical world, the time and space between your identification, the booth where you mark your ballot paper, and the random placement of the ballot paper in a box all serve to provide anonymity. Fortunately there are cryptographic techniques that effectively do the same thing.</span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">An example is the use of blind signatures, which were originally invented by David Chaum in 1983 [1], although I'll use a later scheme, made possible by the RSA public-key system's property of homomorphism under multiplication. There are three parties: Henry, who holds a document (e.g. a vote) which he wants Sally (our electoral registrar) to sign without knowing what it is that she is signing. Finally, there is Victor (the verifier and vote tabulator), who needs to verify that the document was signed by Sally.</span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">I don't want to delve into the mathematics too deeply, and am constrained by the limited ability of this blogging platform to express mathematics - hence '=' in what follows should be read as 'is congruent to' in modular arithmetic, rather than the more common 'equals'. Henry obtains Sally's public key, which comprises a modulus, <i>N</i>, and a key, <i>e</i>. Henry then chooses an integer blinding factor, <i>r</i>, and uses this with the key, <i>e</i> and the modulus <i>N</i>, along with his vote message, <i>v</i> to calculate a ciphertext</span></span><br />
<br />
<div style="text-align: center;">
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><i>c</i> = <i>m</i> x <i>r</i>^<i>e</i> (mod <i>N</i>)</span></span></div>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">and sends this to Sally along with any required proof of his identity. If Sally determines that Henry is eligible to vote, she signs his encrypted vote by raising it to the power of her private key, <i>d</i>:</span></span><br />
<br />
<div style="text-align: center;">
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><i>s'</i> = <i>c</i>^<i>d</i> (mod <i>N</i>) = (<i>m</i> x <i>r</i>^<i>e</i>)^<i>d</i> (mod <i>N</i>) = <i>r</i> x <i>m</i>^<i>d</i> (mod <i>N</i>) (since <i>ed</i> = 1 (mod <i>N</i>))</span></span></div>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">and returns this to Henry. Henry now removes the blinding factor to get the correct signature:</span></span><br />
<br />
<div style="text-align: center;">
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><i>s</i> = <i>s'</i> x <i>r</i>^-1 (mod <i>N</i>) = <i>r</i> x <i>m</i>^<i>d</i> x <i>r</i>^-1 = <i>m</i>^<i>d</i></span></span></div>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">Henry can now send his vote message, <i>m</i>, off to Victor, along with the signature, <i>s</i>. Victor uses Sally's public key, <i>d</i>, to check whether</span></span><br />
<br />
<div style="text-align: center;">
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><i>s</i>^<i>d</i> = <i>m</i> (mod <i>N</i>)</span></span></div>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">If the two are equal (congruent, really) then the signature is correct, and Victor will count the vote. Notice that Henry does not identify himself to Victor, and Victor does not know who he is; he is willing to accept that he is an eligible voter because Sally has signed his vote message. And, very importantly, note that Sally does not know how Henry voted - she signed the blinded version of his vote message.</span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">If all that mathematics was a bit much, consider this simple analogy: if I want you to sign something for me without seeing what it is, I can fold up the paper I want to sign in such a way that the signature space is on top when the paper is placed in an envelope. I then insert a piece of carbon paper - the paper that's used in receipt books to make a second copy of a written receipt, and used to be used to make copies of typewritten documents - on top of the paper but inside the envelope. I then ask you to sign on the outside of the envelope, and the pressure of your pen will imprint your signature, via the carbon paper, to the unseen paper inside the envelope. Voila! You have blind-signed a document, which I can now extract from the envelope once alone.</span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">My point is that cryptographers have, for many years known about, and had solutions for, the superficially contradictory requirements for eligibility and anonymity.</span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">In practice, voting protocols have many more requirements:</span></span><br />
<ul>
<li><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">The voter must be registered or authorized to vote (<i>elegibility</i>)</span></span></li>
<li><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">The voter must vote once only (<i>uniqueness</i>)</span></span></li>
<li><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">The vote must be recorded confidentially (<i>privacy</i>) and cannot be associated with the voter's identity (<i>anonymity</i>)</span></span></li>
<li><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">The vote must be recorded correctly (<i>accuracy</i>)</span></span></li>
<li><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">The voter must be able to confirm that his vote was recorded correctly (<i>verifiability</i>)</span></span></li>
<li><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">The voter must not be able to sell his vote</span></span></li>
<li><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">No-one can be able to duplicate votes (<i>unreusability</i>)</span></span></li>
<li><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">The vote must be unalterable after recording (<i>integrity</i>)</span></span></li>
<li><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">The voter must not be vulnerable to coercion (<i>uncoercibility</i>) </span></span></li>
<li><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">The votes must not be revealed or tallied until the end of the election (<i>fairness</i>)</span></span></li>
<li><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">The electoral authority - or everyone - must know who voted and who did not</span></span></li>
</ul>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">But we still have more tools at our disposal, such as zero knowledge proofs, digests, signatures and, of course, conventional symmetric crypto which we can use to build more sophisticated protocols which do satisfy these security requirements. Some very fine minds indeed have been working on this for decades now, although obviously their work is not well known outside a relatively small community of cryptographers with an interest in voting.</span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">When
the NSW Electoral Commission were working on their iVote system, they
asked several universities to get involved. They supplied the design
documentation for iVote, including references to the various
cryptographic protocols used (e.g.
Schnorr's Protocol - a zero-knowledge proof based on the discrete logarithm problem). Both I and a team from UNSW independently
wrote programs which took over 250,000 votes and validated them, in a
ceremony attended by scrutineers of the various political parties.</span></span></span></span><br />
<br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">The
iVote system is quite sophisticated - it's an enhancement of what's
called a "split central tabulating facility" design, with a third,
separate verification server which allows voters to verify their votes
via a phone interface, while the counting system itself is airgapped
from everything else. The process I described above compared the votes
from the counting system with the encrypted votes in the verification
server. The voter can additionally obtain verification that their vote
was decrypted correctly via the web interface.</span></span></span></span></span></span><br />
<br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">It's true that researchers did find a vulnerability in the SSL/TLS library on one server in the system. I'm not familiar with that part of the system, but I'm pretty sure that even if that vulnerability was exploited in a man-in-the-middle attack, the attacker would not be able to manipulate the vote in that session as the votes are encrypted in the application protocol and do not rely on the transport layer encryption of TLS. However, the browser supports TLS anyway, so it's a good idea to use it as one more layer of a defence in depth - and an alert user would expect to see that padlock in the URL bar in any case, so it would be a mistake not to use it.</span></span></span></span></span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"></span></span></span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"></span></span></span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"></span></span>Prior to getting involved with the iVote project, I'd been somewhat cynical about the prospects for electronic voting. Although I knew something of the underlying principles, I felt it was still in the too hard basket. And reports of the problems with US voting machines didn't help, although a little investigation will reveal they are almost embarrassingly primitive and bear no resemblance to the protocols I am discussing here. But they still contribute to popular fear of electronic voting systems and pollute the overall climate. Watch the video above and you'll see what I mean.</span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">However, I discovered that work on voting protocols was more advanced than I had thought, and the implementation of the iVote system was considerably more sophisticated than most people would imagine.</span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">But what has surprised me is the negative attitude of software professionals. The (ISC)2 Code of Ethics [2] requires me, as a CISSP, to "Protect society, the commonwealth, and the infrastructure" and as part of that effort, to "Promote and preserve public trust and confidence in information and systems". And yes, it also requires me to "Discourage unsafe practice". At this point, I cannot say that the introduction of electronic voting is an unsafe practice - over 250,000 people used in our last State election - but it's hard to promote public trust and confidence when software professionals who ought to know better are so active in promoting distrust. There's a huge gap between the quality of code produced by a junior programmer working on a mobile app with time-to-market pressures and the careful design of a voting system based on decades of cryptographic research and development, and the fact that the former may be unreliable is not an indication that the latter is inevitably insecure.</span></span><br />
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><br /></span></span><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">Only a fool would guarantee that an electronic voting system is 100% secure and error-free - but then, only a fool would guarantee that paper-based voting systems are 100% secure and error-free. However, humans <i>are </i>better at writing software than the Guardian author suggests and electronic voting system are in use today, will increase in popularity and are very unlikely to result in the downfall of democracy.</span></span><br />
<h3>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">References</span></span></span></span></h3>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"></span></span></span></span>
<br />
<div class="csl-bib-body" style="line-height: 1.35; padding-left: 2em; text-indent: -2em;">
<div class="csl-entry">
[1] Chaum, David. “Blind Signatures for Untraceable Payments.” In <i>Advances in Cryptology</i>, edited by David Chaum, Ronald L. Rivest, and Alan T. Sherman, 199–203. Springer US, 1983. http://link.springer.com/chapter/10.1007/978-1-4757-0602-4_18.</div>
<span class="Z3988" title="url_ver=Z39.88-2004&ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fzotero.org%3A2&rft_id=urn%3Aisbn%3A978-1-4757-0604-8%20978-1-4757-0602-4&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=Blind%20Signatures%20for%20Untraceable%20Payments&rft.publisher=Springer%20US&rft.aufirst=David&rft.aulast=Chaum&rft.au=David%20Chaum&rft.au=David%20Chaum&rft.au=Ronald%20L.%20Rivest&rft.au=Alan%20T.%20Sherman&rft.date=1983-01-01&rft.pages=199-203&rft.spage=199&rft.epage=203&rft.isbn=978-1-4757-0604-8%20978-1-4757-0602-4&rft.language=en"></span>
</div>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"></span></span><br /></span></span>
<span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g"><span data-ft="{"tn":"K"}"><span class="UFICommentBody _1n4g">[2] (ISC)2 Code of Ethics - The Pursuit of Integrity, Honor and Trust in Information Security, International Information Systems Security Certification Consortium, 2010. Available online at <a href="https://www.isc2.org/uploadedfiles/(isc)2_public_content/code_of_ethics/isc2-code-of-ethics.pdf">https://www.isc2.org/uploadedfiles/(isc)2_public_content/code_of_ethics/isc2-code-of-ethics.pdf</a></span></span></span></span><br />
<br />Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-4704228740019571242016-07-10T14:06:00.002+10:002016-12-20T17:10:44.931+11:002FA FTWThis morning brought yet another story of identity theft (<a href="http://www.smh.com.au/business/consumer-affairs/id-theft-in-three-steps-adequate-telstra-and-telco-identity-checks-questioned-20160708-gq1a3k.html" target="_blank">ID Theft in three steps: 'Adequate' Telstra and telco identity checks questioned</a>) by the all-too-easy technique of finding an individual's name, home address and date of birth. These are all things that are on the public record and quite easy to discover; they should not be used as an authenticator. The US has a related problem with Social Security numbers which should also be regarded as an identifier, not an authenticator.<br />
<br />
One of the most important steps in identity theft is getting access to the victim's email account. This is because the attacker does not know the password for the victim's bank, PayPal, eBay or other accounts, but the most common technique for password reset is to email a link to the user. In other words, the email account is used as yet another authenticator in a chain of trust. This means that email account mismanagement poses an extreme risk for user - it is both highly likely to be targeted, and also leads to severe consequences if compromised.<br />
<br />
The weak link in all of this is the use of passwords; human beings being human and of bounded rationality, we tend to choose bad passwords that are easily guessable or discoverable. Even worse, we <i>reuse</i> passwords - confronted with the need to memorise the passwords for 20 or 30 different accounts, we understandably fail. Not everybody knows about password safes, for example. Inevitably, however, one of the sites we use gets compromised, the password hashes are stolen and posted on pastebin, and within minutes, a Rainbow Tables attack (or even quite mundane dictionary attack) reveals that favourite password, along with the email address, to the Bad Guy. And if the same password was used for the email account, it's Game Over.<br />
<br />
I long ago determined that my email account <i>had</i> to use a unique and painfully complex passphrase, since the security of so many other assets depended upon it. It might be a pain in the ass to pause for a while as I hunt and peck my way through a long near-random string, but it's the price I pay for peace of mind.<br />
<br />
And a few years ago, I decided that it was time to move to two-factor authentication for my email account. I'd had enough of running my own email servers and moved my email, etc. to Google Apps for Work, and Google was starting to offer two-factor authentication. I'm not a starry-eyed believer in 2FA - in many cases, there are better alternatives and a more sophisticated risk-based approach to the problem should reveal them - but to rely purely on passwords for such an important application is inviting disaster.<br />
<br />
Enabling two-factor authentication is a fairly straightforward process, and Google nicely provides several alternative approaches. The most obvious is to rely on a mobile phone number and send an SMS (or voice message) to it - what banking systems call a mobile Transaction Authentication Number (mTAN). But that won't always work for me - some places I work are screened so that a mobile phone signal can't reach them. Once nice alternative is a Security Key - a small device that plugs into a USB port and provides cryptographic authentication; this will work with any software that supports the FIDO (Fast Identity Online) U2F (Universal 2nd Factor) specification, such as Chrome (but not Firefox, unfortunately). And there's the Google Authenticator, a smartphone and tablet app (technically, a <i>soft token</i>) which generates a unique six-digit number each minute. Any of these can be combined with the passphrase to allow a successful login.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHyylqqrunZCSnCRvCRYe6NS2FYPjqBqFC0gTeWmzVmLNtgbVzKi-hCIP24qLZvXE-ZjdhqyEOTqk47b2Yzeysai0plkPQwPjbcVVC9uemNKm3NzMxllXlz_OupV2oytwa0RrULqhTcoc/s1600/Yubikey+Neo.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHyylqqrunZCSnCRvCRYe6NS2FYPjqBqFC0gTeWmzVmLNtgbVzKi-hCIP24qLZvXE-ZjdhqyEOTqk47b2Yzeysai0plkPQwPjbcVVC9uemNKm3NzMxllXlz_OupV2oytwa0RrULqhTcoc/s320/Yubikey+Neo.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">A Yubikey Neo - a "security key" which also supports NFC (near-field communications)</td></tr>
</tbody></table>
<div style="text-align: left;">
This will overcome what I suspect is the biggest obstacle for many people contemplating the switch to two-factor authentication for Gmail, etc. - the fear that they will be locked out of their account if they lose their phone or another device or simply don't have it to hand. With a little extra setup, there's always an alternative available.</div>
<br />
Setting up two-factor authentication is done by going to <a href="https://myaccount.google.com/security/signinoptions/two-step-verification">https://myaccount.google.com/security/signinoptions/two-step-verification</a> or just clicking on your avatar at top right of a Gmail or other Google page, then choosing "My Account", then under "Sign-in & security", selecting "Signing in to Google" and on that page, under "Password & sign-in method" clicking on "2-step Verification". Unsurprisingly, you'll be prompted for your login ID and password before getting access to this page.<br />
<br />
Turning on 2-step verification will start by sending a verification code to your recovery phone number. If you receive this successfully then 2-step verification will be turned on. At this point, any other sessions and devices you may have logged in to this Google account will be effectively logged out, and you will need to log in again, using 2-step verification. However, you may want to delay that until you have set up your security key or authenticator app.<br />
<br />
Security keys, such as the Yubikey, are inexpensive and widely available - I got mine from Amazon. Adding the security key to a Google account is very easy - on the 2-step Verification page, just click on "ADD SECURITY KEY"and you will prompted to insert your key and tap on its button if required. A second or two later, it will have been recognised and added to your account.<br />
<br />
Setting up Google Authenticator is almost as easy. The 2-step Verification page prompts you to install the app (versions are available for both iPhone and Android) and then tap "Set up account". This will allow you to scan a QR code which presumably seeds the pseudo-random number generator in the Authenticator app. And that's it - from this time on, opening the Authenticator app displays a six-digit number, changing every minute, which you can use to authenticate to Google.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj80puBv6ex4yguZgsLYJ8UdpoKE0-ae3wgXxgQX8J1H7tojLBr_hEKXMwfAjJiM1CHQhx4tL6_QS9X22UopyS59qYiwg_pPkv5uIGyyk66ym7YRLS3ESBQv9GDSkn4a7eSZ7rx8nrjlwA/s1600/Screenshot_20160710-133905.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj80puBv6ex4yguZgsLYJ8UdpoKE0-ae3wgXxgQX8J1H7tojLBr_hEKXMwfAjJiM1CHQhx4tL6_QS9X22UopyS59qYiwg_pPkv5uIGyyk66ym7YRLS3ESBQv9GDSkn4a7eSZ7rx8nrjlwA/s320/Screenshot_20160710-133905.png" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Google Authenticator</td></tr>
</tbody></table>
Google selects the second factor in a priority order - first (default) choice for me is the security key, then comes the Google Authenticator app, and only if those aren't available does it fall back on SMS authentication codes.<br />
<h3>
Logging In</h3>
<div>
As mentioned above, setting up 2-step verification effectively logs you out on other devices and sessions, so you'll need to log in again. Your phone may pop up a dialog requesting an authentication code, especially if you have the Google Device Policy app installed for remote management. In my case, I tapped the button requesting Google to send an authentication code, and a second later the SMS arrived - but after I'd viewed the SMS and written down the code, I couldn't get back to the authorization dialog. Since the phone is still logged in and hasn't skipped a beat, I can only presume that the Device Policy app was able to directly read the SMS and didn't need me to manually enter the code.</div>
<div>
<br /></div>
<div>
When I booted my Chromebook and logged in, it initially accepted just the password but then gave me a notification message that said I should log out and in again. This time, it prompted me to insert my security key and tap its button, after which I was logged in.</div>
<div>
<br /></div>
<div>
Chrome on Windows can be a bit confusing, because it requires a log in to the browser itself, independently of any web sites you may log in to (this is because Chrome syncs your bookmarks and other data to your Google account). So you may get a couple of prompts to authenticate when you first launch Chrome and log in to a Google page such as Gmail.</div>
<div>
<br /></div>
<div>
Firefox does not yet support security keys - there's a Bugzilla page where you can track development progress at <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1065729">https://bugzilla.mozilla.org/show_bug.cgi?id=1065729</a>. However, you can use Google Authenticator to log in to Google, as shown:</div>
<div>
<br /></div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5y38P7fSS3S-B0h_cssSf6O1Pdht3KFtJXHcShKdMdePmirdV10zplq5DyX-BP2hvA9dw5fnCWLn6X8YhXVtGh7jo8hgYV3ngaYqG-PdxOoEdd3pjKkIhp0Sgl44RkQBRUJGYHcgXHRE/s1600/Google+Authenticator+Prompt.JPG" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5y38P7fSS3S-B0h_cssSf6O1Pdht3KFtJXHcShKdMdePmirdV10zplq5DyX-BP2hvA9dw5fnCWLn6X8YhXVtGh7jo8hgYV3ngaYqG-PdxOoEdd3pjKkIhp0Sgl44RkQBRUJGYHcgXHRE/s320/Google+Authenticator+Prompt.JPG" width="208" /></a></div>
<div>
Thunderbird shares code with Firefox and also does not support security keys. In fact, if you've been relying on "Normal password" authentication for IMAP access to your Gmail account, it's now time to change. Right-click on your account in Thunderbird and choose "Settings", then click on "Server Settings" and change the "Authentication method" to OAuth2. Click on "OK", and then click on "Get messages" to force authentication. You'll get a password prompt and then a dialog like the one above, allowing you to authenticate using Google Authenticator or an SMS code. Once that's done, Thunderbird will be happy for the foreseeable future. If you're using the Provider for Google Calendar plugin, that should also prompt for re-authentication.</div>
<h3>
Third-party Sites</h3>
<div>
One of the beauties of adopting this technology is that it can eliminate the need for passwords for other web sites and applications. The OAuth2 protocol referred to above allows Google to function as an identity provider for other relying web sites - part of an underlying technology called <i>federated identity management</i>. I use this as part of my own systems - for example, I no longer use a password when logging in to my own web site, but instead have configured the content management system (in this case, Moodle) to use OAuth2 to get Google to confirm my identity. Not only can the site be more confident this really is me - I've used two-factor authentication to prove it - but I don't have to type in a password.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoGoPsDD059ndKSMsdksw5AGQJcO0KViXJYYepG4iF3Dlk6K0__hyphenhyphenSEtxPChscWsKjf1sHyZO6RJ6gdrBSqrXiar3LiiPsptd9JB8y_nMXQQ-GiiQ5zVppsPeQ-8aH5Of4rJKWbCN_O6Y/s1600/lba-site-login.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoGoPsDD059ndKSMsdksw5AGQJcO0KViXJYYepG4iF3Dlk6K0__hyphenhyphenSEtxPChscWsKjf1sHyZO6RJ6gdrBSqrXiar3LiiPsptd9JB8y_nMXQQ-GiiQ5zVppsPeQ-8aH5Of4rJKWbCN_O6Y/s320/lba-site-login.JPG" width="316" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">My own web site now supports login with Google credentials</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
</div>
<div>
Many other sites also use two-factor authentication or federated identity management; for example <a href="https://blogs.dropbox.com/dropbox/2015/08/u2f-security-keys/" target="_blank">DropBox now supports security keys</a>, <a href="https://github.com/blog/2071-github-supports-universal-2nd-factor-authentication" target="_blank">as does Github</a>, <a href="https://www.yubico.com/why-yubico/for-businesses/cloud/salesforce/" target="_blank">Salesforce</a> and many other sites. You can set up Facebook to use Google Authenticator by going to your settings, then choosing "Security", then clicking on "Code Generator" and clicking on "Set up another way to get security codes" and scanning the resultant QR code. The Facebook app on your phone can also be used as a generator.<br />
<br />
You can log in to <a href="https://www.theguardian.com/" target="_blank">The Guardian</a>, <a href="http://www.oreilly.com/" target="_blank">O'Reilly Media</a> and many other sites using federated identity management with Google, Facebook, LinkedIn or Twitter acting as identity providers. Of course, social media networks are keen to have you use them as identity providers since then they can track you across other sites, although they have other ways of doing that anyway. However, as a Google Apps user I am a Google customer, rather than a consumer of free services, so I prefer to use only my Google ID for authentication. </div>
<h3>
Summary</h3>
<div>
Email accounts are too valuable to protect with only a password, especially a weak or reused password. Two-factor authentication providers better security and lowers the risk of identity theft. It takes only a few minutes to set up and rarely inconvenient thereafter. <i>Use it</i>.</div>
<div>
<br /></div>
<div>
<br /></div>
Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-83173439556643601912015-08-12T15:31:00.000+10:002015-08-12T15:39:08.064+10:00<h2>
How To Bury Your Message - And Get Shot in the Process</h2>
<br />
<a href="http://www.smh.com.au/it-pro/security-it/backlash-after-oracle-it-security-executive-mary-ann-davidson-pens-nutty-3000word-rant-mocking-customers-for-trying-to-find-its-security-flaws-20150811-giwymy.html" target="_blank">Oracle hit the news today</a> for all the wrong reasons. The company's Chief Security Officer, Mary Ann Davidson, wrote a blog post on the topic of "security researchers" who are hired by enterprises - in this case, Oracle's own customers - to go hunting for vulnerabilities in their systems. Because those systems are very often running on Oracle's platforms and products - not just the database, but all the stuff Oracle acquired from Sun, like Solaris and Java - the hired bug-hunters turn their attention to those products, using disassemblers to reverse engineer the code and automated tools to scan for vulnerabilities. <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjapHFfhNn4SdnvyKkqrr9uK961iyqVXwXuP5vYx04nGP6QmkVnSrDKei8o2BNaX9MzSm1oqzgCVzIjldpD2vYrW2vgzHCHVgbaNJrOtNrJ80l6Nww7LSLQUoap-P2b9SB5Wyyw0m7_TOQ/s1600/Computer_hacking-300.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjapHFfhNn4SdnvyKkqrr9uK961iyqVXwXuP5vYx04nGP6QmkVnSrDKei8o2BNaX9MzSm1oqzgCVzIjldpD2vYrW2vgzHCHVgbaNJrOtNrJ80l6Nww7LSLQUoap-P2b9SB5Wyyw0m7_TOQ/s1600/Computer_hacking-300.jpg" /></a></div>
<br />
Unfortunately, Davidson chose to bang the drum a little too hard on the reverse-engineering aspect, predictably triggering a response from some "security researchers". Which , in turn, led Oracle to delete the blog post. However, nothing ever dies on the Internet, and so the blog can still be read via the Internet Wayback Machine, <a href="https://web.archive.org/web/20150811052336/https://blogs.oracle.com/maryanndavidson/entry/no_you_really_can_t" target="_blank">here</a> (<a href="https://web.archive.org/web/20150811052336/https://blogs.oracle.com/maryanndavidson/entry/no_you_really_can_t">https://web.archive.org/web/20150811052336/https://blogs.oracle.com/maryanndavidson/entry/no_you_really_can_t</a>).<br />
<br />
End-user licence agreements which prohibit tracing, debugging and other reverse engineering techniques do pose something of a problem in the security world. Yes, we ought to honour them, especially since we accepted those terms and conditions. No, we shouldn't use these kinds of techniques to snoop around our suppliers' intellectual property. But the bad guys couldn't give a rat's patootie about these moral quibbles - they're hacking away for fun and profit, and if there's a vulnerability to be found, so much the better.<br />
<br />
However, "security researchers" ought to know better. A junior "security researcher" armed with some automated tools for vulnerability is the white hat equivalent of a script kiddy - he knows just enough to be dangerous. This is one of the two points Davidson really ought to have emphasized - hiring this kind of person just encourages them. And here comes the second point: <i>it's counterproductive</i>.<br />
<br />
Hiring "security researchers" of this type in an attempt to secure systems is the kind of futile endeavour that the much-misunderstood Kind Canute would have railed against. How many vulnerabilities are there in a complex business system? A handful? A few dozen? Hundreds? You don't know. You'll never know.<br />
<br />
So you hire a "security researcher" to hammer on the code with his automated tools and Bingo! He finds one. So what? Out of the unknown <i>n</i> vulnerabilities in that subsystem, you've found one. Which leaves an unknown <i>n-1</i> vulnerabilities. What are you going to do about them?<br />
<br />
The answer is, you're going to deploy a variety of other controls in a defense-in-depth strategy to prevent entire classes of exploits. You'll use a DMZ configuration, an application-layer firewall, an IPS (Intrusion Prevention System) and a whole bunch of other things to make your systems and the business processes they support as resilient as possible. You have to do that.<br />
<br />
Searching for, reporting, and patching vulnerabilities one by one is an inefficient strategy which ignores the fundamental asymmetry of the information security business:<br />
<blockquote class="tr_bq">
The bad guys only have to be lucky <i>once</i>. The defenders have to be lucky <i>every time</i>.</blockquote>
<br />
Trying to do exactly the same thing - find vulnerabilities - faster than all the hackers out there is not a sensible strategy, unless and until you've done everything else you can to make your systems and business processes resilient. Otherwise, your resources - time and money - can be better employed elsewhere.<br />
<br />
As Davidson explains, Oracle and other software developers already use static source code analysis tools to scan the original source code for vulnerabilities (among other errors). There's not much point in doing it all over again. There's a bit more point to performing dynamic testing, against complete systems - that's much more likely to turn up architectural issues and configuration problems, and - as Davidson unfortunately chose to over-emphasise - it doesn't violate the EULA.<br />
<br />
So why do it? Because software companies pay bounties; the vigilante bug-hunter is in it for the money, and a little fame might be nice, too. But if you're going to play that game, do it properly - if you're going to hunt for vulnerabilities, follow through - document it and develop a proof-of-concept that shows it really is a vulnerability. Don't just submit the output of an automated scan and sit back with hand outstretched. If you do the whole job, properly, then you actually <i>will</i> be a Security Researcher.<br />
<br />
(And I hope Mary Ann Davidson enjoys her next job, where the Marketing Department will hopefully put an approval process in place for her blog articles.) Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-26703402476414780662014-11-02T20:46:00.000+11:002014-11-03T08:35:37.242+11:00Sending Confirmation Emails from Google Apps FormsFor a recent project, I had to create a form which allows invited respondents to register for a survey. Since we already use Google Apps, this seemed like an ideal opportunity to make use of Google Forms - and Google Sites, to provide a wrapper for the form, with supporting text and an easy-to-type URL.<br />
<br />
And so it proved; creating a simple form was easy and within five minutes I was capturing test registrations into a Google Sheets spreadsheet. Another five minutes and it was embedded into a Google Site, and I could turn it over to the intended user.<br />
<br />
But I can never resist fixing things that aren't broken, and it seemed like a good idea to add automatic sending of a confirmation email. Sure enough, there are plenty of recipes for doing this on various blogs, and after a few minutes more, that was working, too.<br />
<br />
But wait a minute! What if the respondent gets the email and realises they've entered the wrong data (excluding their email address, of course - if that was entered wrongly, they won't even get the confirmation email). Can I add a link that will allow the respondent to edit their own form submission?<br />
<br />
A quick bit of Googling later, and it appears that this is a problem that has stumped a lot of people and given rise to some ugly hacks. When that happens to me, it usually means that I've missed the point and am trying a totally wrong approach. So I set to reading the Google Apps Script documentation and looking for the classes and functions that might do what I needed. And, to cut a long story short, I found them.<br />
<br />
Here's the resultant code:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">function setup() {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> /* First, delete all previous triggers */</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var triggers = ScriptApp.getProjectTriggers();</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> for (var i in triggers) {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> ScriptApp.deleteTrigger(triggers[i]);</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> /* Then add a trigger to send an email on form submit */</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> ScriptApp.newTrigger("sendConfirmationEmail")</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> .forForm(FormApp.getActiveForm())</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> .onFormSubmit()</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> .create();</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">function sendConfirmationEmail(e) {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> // e is a Form Event object - see https://developers.google.com/apps-script/guides/triggers/events#google_forms_events</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> // Edit this to set the subject line for the sent email</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var subject = "Registration Successful";</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> // This will show up as the sender's name</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var sendername = "Your Name Goes Here";</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> // This is the body of the registration confirmation message</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var message = "Thank you for registering.<br>We will be in touch.<br><br>";</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> message += "Your form responses were:<br><br>";</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> // response is a FormResponse - see https://developers.google.com/apps-script/reference/forms/form-response</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var response = e.response;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var textbody, sendTo, bcc;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> // Get the script owner's email address, in order to bcc: them</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> bcc = Session.getActiveUser().getEmail();</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> // Now loop around, getting the item responses and writing them into the email message</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var itemResponses = response.getItemResponses();</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> for (var i = 0; i < itemResponses.length; i++) {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var itemResponse = itemResponses[i];</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> message += itemResponse.getItem().getTitle() +": " + itemResponse.getResponse() + "<br>";</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> // If this field is the email address, then use it to fill in the sendTo variable</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> // Check that your form item is named "Email Address" or edit to match</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> if (itemResponse.getItem().getTitle() == "Email Address") {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> sendTo = itemResponse.getResponse();</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> message += "<br>If you wish to edit your response, please click on <a href=\"" + response.getEditResponseUrl() + "\">this link</a>.";</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> message += "<br><br>";</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> textbody = message.replace("<br>", "\n");</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> GmailApp.sendEmail(sendTo, subject, textbody,</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> {bcc: bcc, name: sendername, htmlBody: message});</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span><br />
<br />
To use it, set up your form, making sure it has an item named "Email Address", and then choose "Tools" -> "Script Editor...". Copy and paste the code above into it, edit the variables at the top of the sendConfirmationEmail() function and then save it, naming the project as you do so. Then choose "Run" -> "setup", which installs a trigger on the form; as it does this, it will ask you for various permissions, such as to access your Gmail and to run when you're not present.<br />
<br />
That's it. Now, if you enter some data into the form, the sender will receive an email which lists their form responses, and also provides a link to edit them if they wish.<br />
<br />
<h3>
How It Works</h3>
For those who want to know what's under the covers, here's how it works. First of all, you need to understand how Google Forms works, under the covers.<br />
<br />
When someone fills in a form and clicks on the "Submit" button, their answers are recorded in an automatically-created Google Sheets spreadsheet - usually with the same name as the form plus "(Responses)" tacked on the end. It's easy to assume that the form just directly stuffs the responses into the spreadsheet - but that's not what it does.<br />
<br />
(And it was this assumption that has led a lot of programmers astray - they try to write a script using the Sheets Script Editor. That has access to the spreadsheet content, but not the form response info, and so they tie themselves into knots trying to get the URL which will edit user's response. Wrong approach!).<br />
<br />
The form actually records the responses in a database behind the form - if you look at the Form editor menu, you'll see a menu item for "Responses (n)" where n is the number of responses recorded. And this probably matches the number of response rows in the backing spreadsheet - but not always. For example, you can delete rows in the spreadsheet, but the number of responses shown in the Form Editor won't change.<br />
<br />
And more impressively, you can choose "Responses" -> "Change response destination", choose a new spreadsheet, and when you open it, it won't be empty - it will contain all the responses previously captured! This shows that the responses are being stored elsewhere. It also implies that if you edit the contents of the spreadsheet, your edits could be over-written by data from the response storage - and this will happen if the respondent chooses to edit their responses.<br />
<br />
It therefore <i>must </i>be the case that the Edit URL edits the data in this database (and then copy the change to the spreadsheet). All of this logic belongs to the Forms app, and not the spreadsheet.<br />
<br />
So, the correct place to deal with emailing the respondent is when the completed form is submitted - not in the spreadsheet. Google Apps triggers allow a function to be called when various events occur (see <a href="https://developers.google.com/apps-script/guides/triggers/">https://developers.google.com/apps-script/guides/triggers/</a>), and this script mostly consists of an "Installable Trigger", plus the setup() function which installs it. When <span style="font-family: Courier New, Courier, monospace;">sendConfirmationEmail()</span> is called, it is passed a <span style="font-family: Courier New, Courier, monospace;">FormEvent </span>object, which contains an <span style="font-family: Courier New, Courier, monospace;">AuthMode </span>object, a <span style="font-family: Courier New, Courier, monospace;">FormResponse </span>object and a <span style="font-family: Courier New, Courier, monospace;">Form </span>object representing the form itself. Only the <span style="font-family: Courier New, Courier, monospace;">FormResponse </span>is of interest.<br />
<br />
The script just sets up some strings for the email subject, sender name, and the beginning of the body text, then extracts the <span style="font-family: Courier New, Courier, monospace;">FormResponse </span>variable (just for mnemonic simplicity). It then calls <span style="font-family: Courier New, Courier, monospace;">Session.getActiveUser().getEmail()</span> to get the user's email address.<br />
<br />
It then calls getItemResponses(), which returns an array of the form item responses, and loops through the array, getting the item title and the response, writing them to the email message. Along the way, when it finds the item titled "Email Address", it gets the corresponding reponse and uses it as the "Send To:" address. It then calls the FormResponse's getEditResponseUrl() method to get a URL which will edit this response, and wraps it up in an href element.<br />
<br />
Finally, it calls the <span style="font-family: Courier New, Courier, monospace;">GmailApp</span> <span style="font-family: Courier New, Courier, monospace;">sendEmail()</span> method to send the email.<br />
<br />
That's it; pretty clean and straightforward, once you know how Google Forms works.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-67146728930699382962013-09-08T11:44:00.000+10:002013-09-08T17:53:29.282+10:00She'll Be Right, Mate!Dateline - Sydney, 8th September, 1953<br />
<br />
Awoke this morning to a grey and overcast morning - the clear and sunny skies of recent weeks have gone - and the realization that we are Under New Management. Changes Will Have to be Made if we are to Open For Business.<br />
<br />
The first order of business is to get a haircut. My hair is too long - it slightly covers my ears - and it's going to cost a fortune if I use that much Brylcreem (and that's another thing - Her Indoors is going to have to buy some antimacassars). Then I shall have to see my tailor - it will be best to get in quickly, before demand drives the price of brown tweed up through the roof. Something with a waistcoat, I fancy - and while I await my suit, I shall have to get the little woman to let down the hems of my existing trousers and create some turnups, in line with the new fashion. I shall need to get a couple of new hats, too.<br />
<br />
I'm going to have to change careers, of course - there will be
no demand for computer security in Australia and all that work will be in
countries that have decided to build telecommunications infrastructure. The German car will have to go, too - it's politically incorrect, now. A Holden in every garage, that's the motto! And I hope that we'll soon be able to take a break for a short holiday - perhaps in the Great Barrier Reef, before it's gone, or the bits of the Northern Territory that haven't been dug up yet.<br />
<br />
The better half is going to have to sell off her business - in our hearts, we always felt it was a mistake to let women advise giant corporations and government. What were we thinking? But she's quite looking forward to her new life at home, and has set about choosing material for new curtains, throw cushions, bedspreads and tablecloths. But before she can put the sewing machine to work on those, she's going to have to let those hemlines down - they're just not acceptable these days! And she's going to need a couple of new hats, too.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH9l_UR5OWJJPGDb7mDpc7oOXtapYPIhoj3hr0MYOZqyvgaN8kvTbdvAgd10Yn_3nO6M0a_0xpItYaliwrfDsu0u1T4n3pr7LqWt3yR07pbZvA1fDSQzjUBDjzcPXQUiSP3j8v8x6Y-9U/s1600/ahj-01-10-1953.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH9l_UR5OWJJPGDb7mDpc7oOXtapYPIhoj3hr0MYOZqyvgaN8kvTbdvAgd10Yn_3nO6M0a_0xpItYaliwrfDsu0u1T4n3pr7LqWt3yR07pbZvA1fDSQzjUBDjzcPXQUiSP3j8v8x6Y-9U/s400/ahj-01-10-1953.jpg" width="306" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Oh, yes - comfort and style for the ladies!</td></tr>
</tbody></table>
<span id="goog_193003697"></span><span id="goog_193003698"></span><br />
<br />
We are expecting some resistance from our daughter. We should never have encouraged her in this foolish belief that she should get educated, learn languages and travel, so we are just going to have to bite the bullet and withdraw her from University so that she can go to secretarial college and learn shorthand. Hopefully she can master it quickly enough to get a job in an office and then, with a bit of luck, she'll meet a sound chap, get married and settle down. We shall be grandparents before we know it! I wonder how she'll look in a hat?<br />
<br />
The young master, of course, accepts that he will have to sign up for nasho. My advice to him is: join the Navy! There'll be plenty of demand for young officer cadets to take charge in our Northern Defences, and since they'll need lots of ships to tow leaky fishing boats full of refugees back out to sea, I expect he'll have his own command in just a few years. After that, he should be well set for a job with a bank.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilK2PPf8nu3xyzOXlzw47onD4V_XyU5c60WFxEhw632pZYzfqnK34hNavqI76ZjIeItoCAf_aXiqocTXM3-VaREIVI3ycS_qO6L12_nGR3NRSM4cJw_3BLbr6WbQFpQ27u2c7j1l0hgX8/s1600/page_15.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilK2PPf8nu3xyzOXlzw47onD4V_XyU5c60WFxEhw632pZYzfqnK34hNavqI76ZjIeItoCAf_aXiqocTXM3-VaREIVI3ycS_qO6L12_nGR3NRSM4cJw_3BLbr6WbQFpQ27u2c7j1l0hgX8/s320/page_15.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I do hope the little woman's over-active mind doesn't lead her astray.</td></tr>
</tbody></table>
<br />
And there's more good news for the young people, too - housing will be much more affordable, with the reintroduction of asbestos sheeting as a cheap building material (thanks, Julie!). The economy is going to boom, and soon the Harbour will once more be full of ships from distant lands, the docks ringing to the cheerful sounds of low-paid immigrant labourers! Gina's mines, too, will benefit - her "New Australian" workers are so much better suited to tunneling work, and they need very little pay, since they only eat a couple of bowls of rice per day.<br />
<br />
Soon, our coal-powered factories will be mass-producing widgets at prices that can compete with expensive Chinese-made widgets, those silly Chinese having introduced a 10 yuan-per-tonne carbon tax. How silly is that? We know that carbon is a colourless gas, so how can it be harmful? Tony is right - global warming is crap, and those boffins who dreamt it up have lost touch with reality. It's time somebody stood up to these "experts". And even better - our cheap electricity will allow us to run bigger air conditioners, which I find is so important, with the warmer weather we seem to be getting at the moment. <br />
<br />
It's good that we have such a stable hand on the tiller, a sound chap, educated in the Mother Country, who understands our rightful place in the world, and that we mustn't get above our station as a colonial outpost of The Empire. A man who understands that Thrift is a Virtue, and that we cannot afford luxuries like the ABC - no matter, since we look forward to clustering around our wireless sets of an evening listening to the replayed highlights of BBC Radio Four, or dancing to big band sounds. Then it's off to bed, and up with the dawn to cycle to work - or down to the Surf Club, on the weekend. If the pushbike is good enough for Our Leader, it's good enough for me!<br />
<br />
Anyway, that's all I have time to write in this first report - we have to rush off to church, as Tony is expecting a good turnout. And after that, the ladies will come home and put the roast in the oven for Sunday lunch, while me and my cobbers sink a few schooners of Tooheys Old at the RSL.<br />
<br />
Aye, Australia - it's the lucky country, all right.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-36447999487771991992013-09-03T18:55:00.000+10:002013-09-03T18:55:35.023+10:00Another Paradigm ShiftWhen you've been in the software development business as long as I have, you get used to things changing continuously, but in retrospect, you can see the steps that represent paradigm shifts. When I learned to program, at school, in the early 1970's, we wrote programs with paper and pencil; the final version was written up on coding sheets which were then posted to the nearest university computer centre, over a hundred miles away. And if you weren't thoughtful and careful, the result that was delivered ten days later was a sheet of fan-fold paper which simply said, "SYNTAX ERROR ON LINE 2".<br />
<br />
So, over the years, I've used punched cards, paper tape, mag tape (both 9-track and cassette, including audio cassette storage!), floppy disks, hard disks, flash and solid-state disks. I've been through traditional procedural languages like FORTRAN IV and Algol, multiple assemblers, object-oriented languages like Clascal, C++ and Java, logic languages like Prolog, functional languages like ML and Ocaml and peculiar specialized languages.<br />
<br />
I've also seen user interfaces evolve. After the paper-and-pencil era, I got to use interactive systems via an ASR-33 teletype - i.e. a roll of paper - and early Tektronix storage-tube graphic displays. Then came serial terminals like the ADM-3a and VT-220, as well as block-mode mainframe terminals like the 3270, which could do basic form-filling. The major shift from shared minicomputers to single-user microcomputers enabled a switch to memory-mapped displays with crude monochrome graphics (remember the ETI-640, anyone?) and further improvements in graphics brought us GUI's with the Apple Lisa (yes, I had one), Macintosh and the X Window System. Oh, yes - and Windows (and OS/2 PM!).<br />
<br />
The transition to graphics made it difficult to separate the computer from the display. The X Windows system was designed to support graphical terminals attached to a minicomputer, but later systems like OS/2 Presentation Manager and Windows were designed with directly-accessible memory-mapped displays in mind. Extensions to Windows to support remote access, like Citrix Metaframe, have had to rely heavily on very clever protocols like ICA to minimise their bandwidth requirements, and even X has a variant called LBX (Low Bandwidth X).<br />
<br />
However, remote computing has been taking place via the Internet for more than two decades now, and the web has evolved a protocol for the remote display of text and graphics, in the form of HTML. For much of that time, users have sat at comparatively powerful computers - these days, they're quad-core Intel CPU's with multiple GBytes of RAM - while performing relatively simple tasks on remote servers, such as posting messages, ordering products or sharing photographs.<br />
<br />
But the balance between the server and client has changed. These days, clients are more commonly phones or tablets; although these machines are more powerful than ever before, for reasons of cost and battery life, most of the power needs to be devoted to those tasks that must be performed locally and every thing else, especially compute-intensive tasks, off-loaded to the server.<br />
<br />
This has coincided with the development of even more powerful, yet cheaper, servers which support virtualization; add a layer of self-service, and the result is the cloud - an amorphous set of services made available on a pay-as-you-go basis to both enterprise and individual customers.<br />
<br />
<h3>
Mobility</h3>
In particular, a desire to have information available on a range of devices, particularly mobile devices, is driving both types of customer to store their data in the cloud, rather than on the devices themselves. I used to store all my important files on a RAID-based file server in my office, and that was fine as long as I only wanted to share them between computers inside the office; but then I wanted to be able to access them while on the road, and that required me to set up and configure another level of complexity in the form of a VPN, with all the management of clients that that requires.<br />
<br />
Now I want to access them from my tablet, my phone and my Chromebook, and that involves finding, installing and supporting VPN software for them, too. In the end, it's easier just to say, "I've had enough; I don't care if the NSA wants to read my files, and realistically, why would they bother? So I'm just going to stick my stuff in Google Drive, or Dropbox or Box or wherever".<br />
<br />
But the relative power of mobile devices means that they can't do the processing - therefore that has to be done in the cloud, too. This isn't a completely new idea - large-scale number-crunching has always been done on supercomputers or even mainframes with specialized hardware like array processors. And, of course, database servers represent another category of specialized devices used by clients, as does print servers.<br />
<br />
For my number-crunching needs, I've been using Sage (<a href="http://www.sagemath.org/">http://www.sagemath.org/</a>) an open-source mathematics program that combines lots of other specialized maths programs (<a href="http://www.sagemath.org/links-components.html">http://www.sagemath.org/links-components.html</a>) into one - and for its user interface, Sage uses a web browser. It's extremely difficult to build Sage for Windows, so if you want to run it, you download a complete appliance virtual machine which runs under VirtualBox, and then point your browser at that. However, I prefer not to load up a machine that's also being used for other things - especially my smaller machines. So, by installing Sage on a spare server - I start its notebook interface only when needed - I am able to keep my work files in a single location but access Sage from any of my machines (although using it from my phone would be a bit tedious).<br />
<br />
<h3>
New Architectural Paradigm</h3>
This may well be the computing model and user interface paradigm of choice for the next few years. It makes no sense for me to design any applications that I write from this point onwards to use a conventional GUI like Java's Swing or - not that I would - the various classes in Windows. If I do that, they become inaccessible from my phone, tablet and Chromebook. Nor should I use the Android SDK - that gives me apps that will run on a phone or tablet, but won't run on a PC. I suspect that many enterprise developers are facing the same dilemma - demand for access from mobile devices is causing them portability problems,<br />
<br />
The answer has to be a move to a thin-client approach to everything. The client is, inevitably, the web browser, which is now so capable that it is nothing like as "thin" as the thin clients of yesteryear. The form description and layout language is HTML 5, the client-side procedural language is JavaScript, the communication protocol is HTTP with AJAX, WebSockets, XML and JSON layered on top.<br />
<br />
The back end language can be any of the traditional languages - C/C++, Java, Python, etc. A lot of my code is written in Java; adapting it to run as a servlet would not be particularly difficult. For new projects I also have some new (-ish) language options, such as PHP or JavaScript, in the form of Node.js, which I would not previously have considered for conventional applications. And now I have the choice of running it on my own machines, or finding a cloudy home for it with Google, Amazon, Rackspace or any of a number of public or private cloud providers.<br />
<br />
<h3>
For the User</h3>
I suspect we're going to see a change in the way people use computers, too. Right now, many people have both a desktop and laptop computer, and switch between them, sometimes transferring files via USB drive. Gone will be the large desktop PC; people will prefer laptops and tablets, but they may still need a fixed box - as I do - to handle DTV tuners, scanners, home theater, media services, etc. Such devices might even morph into a "home server" - a headless box that serves music, video, graphics files, etc. to the various TV's, and perhaps even terminates fixed-line phone services, should they survive that long. And yes, we can stream music and video from the cloud, but here in the Third World (where the distant promise of fiber-to-the-home seems likely to be snatched from our grasp) there just isn't the bandwidth for us all to do that all the time.<br />
<br />
So, in a sense, we're back where I almost started - with minicomputers and mainframes (replaced by servers and the cloud) and users connecting to them via terminals - replaced by a variety of thin clients.<br />
<br />
Plus ca change, plus c'est la même chose. Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-71545735146843807972013-09-01T17:51:00.000+10:002013-09-03T09:50:04.579+10:00Living with the Acer C710 Chromebook (Review)The end of the financial year saw me with a few spare dollars to put back into the business for tax reasons. Now, I've moved a lot of my business technology over to Google (and GoDaddy) and have grown to appreciate the convenience and functionality of my Nexus tablet and phone, so the obvious next step was to investigate a Chromebook. Fortunately, JB Hi-Fi had a special deal on the Acer C710 Chromebook that weekend, so I hopped in the car and an hour later was unboxing the new beast in order to explore further.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpqSbfspMbqkmqwXftFIHAmWmjjri813OrzI71JGGKtgPqN78Mrkl7IXMqcjgSm4SXqZ3bgLNmYGl5h13EPBtrzV6ZIZhsAlKUVl1gDSD-73cSOPoDZ2kZ4xQrfAvWB8Syf9YM_P7_Aak/s1600/IMG_20130901_160329.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpqSbfspMbqkmqwXftFIHAmWmjjri813OrzI71JGGKtgPqN78Mrkl7IXMqcjgSm4SXqZ3bgLNmYGl5h13EPBtrzV6ZIZhsAlKUVl1gDSD-73cSOPoDZ2kZ4xQrfAvWB8Syf9YM_P7_Aak/s400/IMG_20130901_160329.jpg" width="400" /></a></div>
<br />
<br />
<h2>
Hardware</h2>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHOWn4Fo-gFVSQ2I1JaV51pvrZ_Mpufv0N8CsODZa1y13JWfZXWYHXT3UJ310NAmFLCW6sgn8ctenfbRxC8q0J_1yi6UaEBDPIxw_3SrOtkNcm6kxdizYyrPCDkPsB7i2y9CckXUlWcqo/s1600/IMG_20130901_160429.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHOWn4Fo-gFVSQ2I1JaV51pvrZ_Mpufv0N8CsODZa1y13JWfZXWYHXT3UJ310NAmFLCW6sgn8ctenfbRxC8q0J_1yi6UaEBDPIxw_3SrOtkNcm6kxdizYyrPCDkPsB7i2y9CckXUlWcqo/s400/IMG_20130901_160429.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The left side of the C710, showing (L-R) Ethernet, VGA, HDMI and USB ports.</td></tr>
</tbody></table>
I had chosen the C710, rather than the more expensive Samsung Chromebooks, for one simple reason - I do a lot of presentations, and need VGA output to drive an external projector. The Samsung devices offer HDMI output only, while the Acer has both VGA and HDMI. However, despite the low price, the Acer machine is quite nicely built. It has the grey finish made popular by recent Macbooks, although it is obviously made of plastic. The 11.6" screen opens up with an even force on its hinges, and is coated with a glossy, reflective finish. The right side of the machine has a slot for a locking cable, inlet for the external power adapter (which is just a largish wall-wart), two USB ports and the headphone jack. The left side has wired Ethernet jack (another plus for the Acer compared to the Samsungs), VGA, HDMI and a third USB port, while the front edge conceals a dual SD/MMC memory card slot.<br />
<br />
At 1366 x 768, the screen is a little smaller than I'm used to (my main laptop is a Thinkpad T500, since it does duty as a backup development workstation), but it is sharp, the colour saturation is good and it is quite bright. The keyboard is a weak point, though - the keys feel slightly spongy, with only short travel; while it's quite usable, it's not in the same league as the Thinkpad (but then, it's darn near one-tenth of the price). The trackpad is quite usable, with various shortcut gestures (e.g. sliding two fingers to scroll a window), although I still prefer the Thinkpad's Trackpoint - this is more a matter of taste, though.<br />
<br />
Finally, my model came with a 320 GB hard drive. That really is ridiculously large for a machine that's intended for use with Google's cloud services, and I note that the current model now ships with a 16 GB solid-state drive. In fact, the day I bought my Chromebook I also ordered up an additional 4 GB of RAM (which upped it to 6 GB in total) and a 120 GB Samsung SSD. When I opened up the Acer to swap the drive, I noticed that the construction was quite solid, with all the parts securely mounted in a very confined space, yet easy to work on. The only moving parts left in my machine are the CPU fan and the power button, so I'm expecting it to be quite reliable.<br />
<br />
<h2>
The Software</h2>
While Google already has a platform for its cloud and email services in the form of the Android OS and the related tablets and phones, the Chrome browser represents another platform which has made strong inroads, becoming the dominant browser in the marketplace. Google's enterprise business (as opposed to its ad-sales and analytics business) is based on the SaaS (Software as a Service) and PaaS (Platform as a Service) cloud service models (see NIST SP800-145, "The NIST Definition of Cloud Computing"). <br />
<br />
For most individual users, the SaaS component of interest is email, delivered as a cloud-based application presented in a browser. (In fact, from teaching undergraduates how to encrypt email, I've learned that a whole generation has grown up not knowing that there's such a thing as an email client!). However, Google has extended Gmail into related services such as contact management and calendar management.<br />
<br />
This has led Google to enterprise customers who require additional functionality - hence Google Apps, which additionally provides word processing, spreadsheet and presentation graphics functionality. The technology that underpins these is AJAX (Asynchronous Javascript And XML), which allows Javascript code, running in the context of the browser, to dynamically communicate with a web server while updating the onscreen window via the DOM (Document Object Model). This allows what are sometimes called "single-page web apps", i.e. web applications which present as a single, continuously-updated page, as opposed to older web applications which required an entire page refresh when a form button was pressed. Remember what a breakthrough Google Earth was? AJAX.<br />
<br />
What has really made this possible is the maturation of JavaScript as a programming language, along with the development of libraries like JQuery. I admit, I used to be somewhat dismissive of JavaScript, relegating it to such tasks as mouseover graphics (pop-ups, etc.) and basic form validation (although the server always has to perform its own input sanitization for security reasons).<br />
<br />
But the fact is that, whether by accident or by good design is not clear, JavaScript is actually a rather sophisticated programming language with some advanced features, such as closures and the ability to treat functions as first-class objects. These functional programming paradigms are then capitalized on by libraries like JQuery to achieve a high level of productivity for the programmer and a high level of functionality for the user.<br />
<br />
Because they are pushing JavaScript and the DOM pretty hard, it was obvious that Google would try to minimise cross-platform problems by developing their own browser. The result is Chrome, a browser based on the Blink rendering engine. And one important component of Chrome is V8, a JavaScript engine developed by Google in Denmark. V8 is actually an incremental compiler - it compiles JavaScript down to machine code (for 32-bit or 64-bit Intel, ARM and other architectures) then performs sophisticated optimizations at run-time - and therefore achieves high performance. And although it was developed for the Chrome browser, V8 has also found its way onto the server, in the form of Node.js, making JavaScript an option for both client- and server-side development.<br />
<br />
The result is that JavaScript, today, isn't your mother's JavaScript. People have made it do some bizarre things, down to implementing a virtual machine that can boot and run Linux - in the context of the browser!<br />
<br />
As a consequence, Google has been able to implement quite a high level of functionality in the SaaS applications. As an initial test, I exported the introductory slide set for my "CISSP Fast Track Review" class in Powerpoint format (I usually maintain them in Libre Office, for historical reasons) and then imported them into Google Slides. While there were some initial alignment and scaling issues, I was quickly able to clean them up and the result has been quite effective.<br />
<br />
Given that these applications run in the context of the browser, there is no longer a need for many other native applications and utilities. Without them, a lot of other OS and run-time library services can be dropped as well. All that is really required is a stripped-down kernel that can boot a restricted graphical desktop on which the browser is the major application. And that's ChromeOS. Install it in flash memory on an otherwise diskless machine, and you have a Chromebook. Although most are laptop devices, Google also sells (in some markets) a desktop (or -side) device called a ChromeBox, which works with an external keyboard, mouse and monitor.<br />
<br />
The Chromebook boots near-instantaneously, since the operating system is minimal. On first startup, the purchaser is offered the opportunity to register a new Google account or to sign in with an existing one. Since I already have three corporate/education Google Apps accounts, I signed in with one of them, and immediately the device displayed my photo (probably from my Google+ profile) and the browser bookmarks were immediately populated with my desktop Chrome bookmarks.<br />
<br />
The operating system binaries are signed and checked on startup via a public key stored in the TPM (Trusted Platform Module), although it is possible to install other operating systems such as variants of Ubuntu and other Linux distributions. However, the result is an unmodified OS kernel on every boot; soon after initial setup the latest OS will be downloaded and a reboot is all that's required for installation - it happened last night and took less than 10 seconds.<br />
<h2>
Applications</h2>
By default, the Chromebook has icons arrayed in a launcher at the bottom of the screen. Where Windows would have a "Start" button, the Chromebook has a "Chrome" icon, which just launches the browser. There's also an icon for GMail, and a 3x3 matrix which pops up a window with all other application icons (rather like the equivalent on Android). However, you can "pin" other application icons to the launcher, and so mine now has icons for Google Drive, Plus, Keep, Slides, Docs, Sheets, etc. Each icon can be configured to open the application as a standard tab (default), as a "pinned" tab, as a window or maximised.<br />
<br />
I don't propose to review the major applications here - they're software which is, to some extent, external to the hardware - especially since, if you want to explore their functionality, all you need is a free Google account and a browser; they work fine in both Firefox and Chrome. What you will find is that they do not provide all the functionality of a high-end suite like Microsoft Office. However, they work adequately well for personal, educational and small business use, and are continually being upgraded and improved. The Docs word processor, for example, is considerably more powerful than a cloud-based note database like Evernote, and not far off the capabilities of Open Office or Libre Office.<br />
<br />
The applications also have their own unique capabilities - for example, it's possible for multiple users to edit documents and spreadsheets simultaneously, with coloured highlighting (and a key at top right of the window) indicating the cells or locations where each user is currently working. This makes collaboration easy - a popular feature for students working on group assignments and projects. However, I've also used it myself, to work on two different areas of the same document simultaneously.<br />
<br />
Apart from the usual office productivity applications, you also get a scratchpad app of dubious value - the Google Keep application does that kind of thing much better - Google Forms for data collection, Google Drawings, Blogger, an SSH client, Google Play books, music and movies, a calculator, camera and web-conferencing apps (Google Hangouts). There's also a "Files" application, which allows management of both local and cloud-stored files.<br />
<br />
Google Keep started life as a very basic notebook program, but has been revised to add functionality such as checklist formatting and reminders, so that it now fills a niche for those simple to-do list and shopping list requirements that do not justify the use of a full word processor. And this is one of the nice features of Chrome - the applications are continually evolving and because they load from the cloud on startup, you always get the latest version. There's also no obvious way for a virus to infect the programs - another subtle benefit. And more apps are on the way - there are hints (search in chrome://flags) that Google Now cards are coming to Chrome in the future.<br />
<br />
Additional apps - as well as extensions and themes - can be obtained from the Chrome Web Store (<a href="https://chrome.google.com/webstore/category/apps">https://chrome.google.com/webstore/category/apps</a>). These are mostly apps that run within the browser itself.<br />
<br />
By default, all work files are stored in Google Drive, and the Chromebook comes with 100 GB of cloud storage, free of charge for two years. As a Google Apps customer, I already had 30 GB of storage, shared transparently between Gmail/Calendar/Contacts and Drive, and I've used less than 1% if it so far, even with a number of quite large documents in it.<br />
<br />
<h2>
The Google Infrastructure and Ecosystem</h2>
As mentioned above,
Google also sells PaaS cloud services. Developers can write applications
in their choice of JavaScript (Node.js), Go, PHP or Java, and deploy them in the
Google cloud. The result is a large collection of applications that are available to Google Apps customers - the enterprise market for Google. Additionally, Google Apps customers have access to a device management console which they can use to enforce corporate policies across Chrome devices.<br />
<br />
<h2>
</h2>
<h2>
Wi-Fi Dependence?</h2>
Because the applications are written in JavaScript, they load at run-time from Google's servers. At first glance, this suggests that the Chromebook is of no use without an Internet connection, but surprisingly, that isn't the case. The device comes with GMail for offline use as standard, and this can be used to read and reply to emails, schedule appointments, etc. In addition, Google Drive - the storage application for Google Apps - has an option for "Offline" which can be used to cache folders and files for stand-alone use - rather like Windows' "offline files" and "Sync Center" feature.<br />
<h2>
My Hardware</h2>
Feeling that 360 GB was far too much local storage for this type of machine and that rotating media wasn't the most reliable for a lightweight, highly portable computer, I pulled the drive out of mine and replaced it with a 120 GB Samsung SSD (solid state drive). The result is even faster to boot and shut down.<br />
<br />
I also upgraded the RAM from 2 GB to 6 GB - it's easy to slip in an extra DIMM, following the instructions at <a href="http://normcf.net/~john/chromebook/Acer/acerChromebookUpgrade.html">http://normcf.net/~john/chromebook/Acer/acerChromebookUpgrade.html</a>. However, examining the memory usage in the system configuration report (<a href="chrome://system">chrome://system</a>) it appears that it rarely gets much above the 2 GB usage level anyway.<br />
<h2>
Misconceptions</h2>
It's not a netbook. Netbooks were typically underpowered, especially those machines which ran a stripped down Windows XP and were built down to a price in order to fund the MS Windows software licence. In addition, many netbooks offered no cloud storage, but were totally reliant on local SSD storage only, and ran minimalistic sets of applications.<br />
<br />
The trick is to realize that JavaScript today has moved to fulfill the promise of portable applications, originally made by Java. Whether by accident or design, it's a very powerful programming language with functional programming idoms such as closures, functions as first-class objects, etc. When coupled with AJAX capabilities and libraries like JQuery, running on a fast, low-powered processor, it can deliver extremely sophisticated applications that <i>happen </i>to run in a browser.<br />
<br />
And then there's Google's PaaS cloud - you also have the ability to script the server side with JavaScript, or run entire Java, Python, PHP, Go and Node.js applications - and that, in turn, has created the applications that we see in the Chrome Web Store and the Google Apps Store.<br />
<br />
In essence, then, the Chromebook is a low-maintenance thin client backed up by Google's cloud services, and not a simple cheap laptop. <br />
<h2>
Usability</h2>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVv0X4VBkXcfiN5XAntC-DQWfONyAgk9Co2DskzTRTp2XfwDT8XK31sYKZUiSUHgtXOPdD7J7LJGZIIkRcSwRHpuIhl6PzOQUZeakeZ1Bs-VkJTdXonT90gxj3pcqOL99cdZaz1qq4VD8/s1600/IMG_20130901_160717.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVv0X4VBkXcfiN5XAntC-DQWfONyAgk9Co2DskzTRTp2XfwDT8XK31sYKZUiSUHgtXOPdD7J7LJGZIIkRcSwRHpuIhl6PzOQUZeakeZ1Bs-VkJTdXonT90gxj3pcqOL99cdZaz1qq4VD8/s400/IMG_20130901_160717.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">It's nice to have a lightweight machine for working outdoors.</td></tr>
</tbody></table>
I am already well-catered-for, in terms of computing resources - my desktop machine is an i7 quad-core box with 32 GB of RAM and 5 TB of disk, while my regular laptop is a large-screen Thinkpad T500. I use these large machines because I develop and run large simulations using Eclipse and Java. But I find that I do some of my best creative thinking away from my desk - over a coffee or in a quiet library, or even, as shown above, sitting on the deck wishing the pool was just a little warmer (it's only the first day of Spring as I write this).<br />
<br />
While I have a Nexus 7 tablet, and am experimenting with a Bluetooth keyboard for it, I find that the Chromebook occupies a rather nice niche - it's much lighter than the Thinkpad, but much more useful for serious work than the Nexus 7. In fact, I sometimes find myself using the two together - the Nexus 7 to display reference documents and the Chromebook to write. It's also light enough to carry as a backup laptop - the week before last I took it on a business trip and worked in the evenings, using the Chromebook by itself at a restaurant table, and the three-screen combination of the Thinkpad, Chromebook and Nexus 7 at the desk in my hotel room.<br />
<br />
In addition, like many others, I've moved a lot of my work from the local desktop to separate compute engines, either on dedicated servers or in the cloud. For example, as I write this, I have another tab open to perform complex calculations (calculating the transition probability matrices of Markov Decision Processes, if you must know) using <a href="http://www.sagemath.org/" target="_blank">Sage</a> on one of my servers. The resultant output renders just fine on the Chromebook and because the number-crunching is done on the server, there's no difference in performance compared to using my desktop machine.<br />
<h2>
Summary</h2>
My conclusions are that the C710 Chromebook represents a highly attractive platform for several types of user:<br />
<ul>
<li>Business customers using Google Apps</li>
<li>Education customers using Google Apps</li>
<li>Those who need a spare computer</li>
<li>Those who want a lightweight, simple (nearly no management) computer</li>
<li>Those concerned about loss or damage, with consequent loss of their work </li>
</ul>
The latter is highly appealing to many users who are losing patience with the issues of patching, securing, backing up and generally maintaining more conventional (Windows, Mac and even Linux) computers. Essentially, the Chromebook represents the most successful implementation yet of software as a service - all the stressful maintenance is taken care of by the provider, and the user can simply concentrate on getting their work done.<br />
<br />
At $US199, I'd say the C710 Chromebook is tremendous value, and the potential for ongoing savings make it better and better.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-881995137259925142013-07-28T11:37:00.000+10:002013-07-28T11:37:44.934+10:00Nexus 7 - One Year OnThis time last year, I was given a Nexus 7 as a birthday gift (I'd hinted really, <i>really </i>strongly!). One year on, Google has released an updated model, and I have a lot better understanding of how the thing works and what it's good at. The new Nexus 7 hasn't been released in Australia yet - but will I upgrade?<br />
<br />I think so. I've come to regard the N7, along with the Roomba, as one of my two most successful "Let's give this a shot and see what it's all about" tech purchases. However, the N7 hasn't achieved this position on the basis of its technology or bang-for-the-buck alone; its significance was to introduce me to the Google ecosystem and I should, perhaps, give a close runner-up award to the Galaxy Nexus phone which I bought as a result of my positive experience with the N7.<br />
<br />
I haven't used the N7 as a toy at all. Never watched a movie on it, rarely play music on it, will never play a game on it (I'm not a gamer, unless you count me vs the evil Java compiler as some kind of strategy game).<br />
<br />
For me, it's all been about personal organization and having instant access to information wherever I happen to be - in my office, in the kitchen, in front of the TV, in a lecture theatre, in the coffee shop. The apps I use most heavily would be Gmail (I have two business and one university accounts), Google Calendar, and Google Maps, along with Google Drive/Docs/Apps. The latter, especially, has been getting heavy use for writing up course materials and presentations - I do a lot of the heavy lifting on my desktop machines or on a Chromebook I also bought in the "Let's give this a shot and see what it's all about" mind-set, but it's been really useful to have ability to view materials while away from my desk, or to display them on a second (really fourth!) screen while working.<br />
<br />
Then there's Evernote, which has also been getting heavy use, especially for mundane things like shopping lists. However, with Google Keep maturing and being standard in Android 4.3, it might take over for those lightweight tasks.<br />
<br />
Perhaps the biggest unexpected "killer app" is Google Now, which integrates voice search against the Google Knowledge Graph with before-demand presentation of information cards to organise my day.<br />
<br />
And then there's a whole host of other information-handling apps: Wikipedia, Youtube, IMDB for when I'm watching movies (always nice to be able to answer "What else have we seen <i>him </i>in?"), the Guardian for my twice-daily news fix - plus, of course, go41cx and free42 for calculations. And the Kindle app has proved especially useful while dining alone in dimly-lit restaurants recently.<br />
<br />
Where has the N7 fallen down, and what would I like to fix? The only thing I would change would be to get a 3G/HSPA+/LTE model next time. Although the N7 is not as dependent on an always-on connection as the Chromebook, and I can get a wi-fi connection all over the university campus, there are times when the longer battery life and larger display of the N7 has made it a better choice for navigation and some other tasks than the Galaxy Nexus phone, which is my "always-connected" device. I suspect that quite a low-cost, low-bandwidth prepaid SIM would be more than adequate, so it needn't break the bank.<br />
<br />
The other thing I want to investigate is yet another case, this time with a bluetooth keyboard. While the standard Google keyboard's swype input technique really is quite usable, a more capable keyboard would hugely improve the usability of Evernote and similar apps.<br />
<br />
All things considered, I think I'll be queuing up for a 32G/HSPA+ N7 when they finally make it to Australia.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-2728830500072651702013-05-19T17:58:00.001+10:002013-05-19T17:58:41.999+10:00Thanks for Nothing, VerisignFor, lo, these many years I have used a VeriSign "Class 1 Individual Subscriber - Persona Not Validated" personal X.509 certificate for several purposes. I originally got mine back in The Day, when Netscape offered a web mail service but required that you log in using a personal X.509 certificate for authentication. Not surprisingly, Netscape's web mail service didn't take off, even in competition with the horror that was Hotmail.<br />
<br />
But the personal certificate has other uses, too - mainly in conjunction with email. You can use it to sign emails, using the S/MIME protocol. Mail clients like Thunderbird automatically append your certificate to signed emails, making it easy to verify the signature - just calculate a hash over the email message, decrypt the signature using the public key in the attached certificate, and if the two match, the message wasn't modified and it was sent by whoever has the private key that matches the certificate. Very easy, even for completely non-technical users.<br />
<br />
And once you've received someone's certificate, the email client automatically places a copy in your certificate store. Since the certificate contains their public key, you can now encrypt emails that you send to them (assuming that you also have a private key and certificate. It's almost foolproof.<br />
<br />
But now comes the $64,000 question: how does the recipient of a signed email know that they can trust the public key in the attached certificate? Of course, that's the whole point of a PKI (Public Key Infrastructure): you can trust the certificate to identify an entity because the certificate is itself signed by a Certification Authority. Of course, for an inexpensive certificate like the Class 1 Persona Not Validated ones, all it really means is that the person who bought the certificate was able to collect it via a link in an email sent to them by the CA, proving that they can access the email postbox.<br />
<br />
But to check the validity of the certificate signature itself, we need the public key of the CA. No problem - browsers and email clients have those public keys built in, in the form of self-signed root certificates. We explicitly trust the root certificate, and given that, we know we can trust any certificates signed by it (actually, signed by the private key that corresponds to the root, but the terminology gets pretty lax, as we'll see).<br />
<br />
And so that is how it has been, since time immemorial. Each year, I have renewed my certificate and dutifully backed it up from Firefox, then imported a copy into Thunderbird and used the new one.<br />
<br />
Last year, I even taught the details of this as part of a university class on Cryptography and Information Security, and I set the students an exercise - get yourself a free Class 1 personal certificate from Comodo, send me a signed email, exchange signed emails with other students, start sending each other encrypted emails, then obtain my certificate from the VeriSign Digital ID directory (or directly import it from a file) and send me an encrypted email. It all went swimmingly well, with no problems.<br />
<br />
This year, lots of problems - albeit a good opportunity for learning, for my students. First of all, I forgot to upload my new certificate, and the old one had obviously expired. But even when I exported and uploaded the new, current, certificate, they still couldn't import it into Thunderbird. Typically, they would get an alert dialog:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjipIMK6GhCfPtQGOAQcIRv8nAVrmoqf1U_2DQXrwPpjF2I2FlpaCSuBRnOfuksnmi6GBprW3hJZridr5JIzrD7Gihi1VsAkSKrvFd-4G0w7M_oKpbJiGITVy37emiSDZ84rE_OtXnG0lc/s1600/import-error.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjipIMK6GhCfPtQGOAQcIRv8nAVrmoqf1U_2DQXrwPpjF2I2FlpaCSuBRnOfuksnmi6GBprW3hJZridr5JIzrD7Gihi1VsAkSKrvFd-4G0w7M_oKpbJiGITVy37emiSDZ84rE_OtXnG0lc/s1600/import-error.png" /></a></div>
<span id="goog_1731700897"></span><span id="goog_1731700898"></span><br />
<span id="goog_1731700897">This is not cool. </span>Now, I knew the certificate was perfectly valid. I even opened it using the Windows Crypto Shell Exensions on my desktop machine, and here's what it looked like:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ21bqhyphenhyphenXVjlT9hfBRb3-46sshJ3jpBNH4dkSdR1okGDD11pdKQRyDhPbtsnOXmo3IBbVDlKzWoeiq3U_CHmxIorjmdGKZWKebvaZXQriRg5QZlrItWuSTMw9k5uRqVzmvybUm0gwcQqs/s1600/LBCertPathonXP.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgewmQvlQiG03d12pRE4zH0ZQ3hNd2avcinGxc1zefDASmJwDoudeGJBtDUaUhjzBzzVkuR3gXmyiPrUPzkqa7GsSzZXs_qM3I3dwi9kK-Fvpe_82GywCDknxv8JpzCzwNsurAgDnvqNqM/s1600/LBCertonXP.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgewmQvlQiG03d12pRE4zH0ZQ3hNd2avcinGxc1zefDASmJwDoudeGJBtDUaUhjzBzzVkuR3gXmyiPrUPzkqa7GsSzZXs_qM3I3dwi9kK-Fvpe_82GywCDknxv8JpzCzwNsurAgDnvqNqM/s1600/LBCertonXP.png" /></a></div>
<br />
Looks fine to me. Clicking on the "Certification Path" tab reveals that the certificate isn't directly signed by a VeriSign root certificate - rather, it's signed by an intermediate CA certificate and that one is signed by the root:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ21bqhyphenhyphenXVjlT9hfBRb3-46sshJ3jpBNH4dkSdR1okGDD11pdKQRyDhPbtsnOXmo3IBbVDlKzWoeiq3U_CHmxIorjmdGKZWKebvaZXQriRg5QZlrItWuSTMw9k5uRqVzmvybUm0gwcQqs/s1600/LBCertPathonXP.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ21bqhyphenhyphenXVjlT9hfBRb3-46sshJ3jpBNH4dkSdR1okGDD11pdKQRyDhPbtsnOXmo3IBbVDlKzWoeiq3U_CHmxIorjmdGKZWKebvaZXQriRg5QZlrItWuSTMw9k5uRqVzmvybUm0gwcQqs/s1600/LBCertPathonXP.png" /></a></div>
<br />
But here's how it looks on my Windows 7 machine: <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_aRsc3DOq03kQRpQ3zgmLY5xXgkAyjp_pahkvtwNjyy98EKD6vOyi1EygIJFK5B6EBP79kZfyg2Pzw-U2ur64pLFS8yP-S23IbbTWbnwmL7fMSiXvkqcIqVRk2ZXp63iDcvhbj8lMp1k/s1600/LBCertonWin7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_aRsc3DOq03kQRpQ3zgmLY5xXgkAyjp_pahkvtwNjyy98EKD6vOyi1EygIJFK5B6EBP79kZfyg2Pzw-U2ur64pLFS8yP-S23IbbTWbnwmL7fMSiXvkqcIqVRk2ZXp63iDcvhbj8lMp1k/s1600/LBCertonWin7.png" /></a></div>
<br />
What's this? "... not enough information to verify this certificate"? Let's have a look at the "Certification Path" tab:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1ASKlnaO1SHwxSgeZjRWEb07S5x43CBlg8EHElcBQ1EXUwdtpBSahx71e7H5VJHerCs9_myJOwoZBxi4hvuq9W4giWr86ng_NuT-n6HtXkxpXI4mhh7GDwVWk8o-1cWOJulp2r9221hk/s1600/LBCertPathonWin7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1ASKlnaO1SHwxSgeZjRWEb07S5x43CBlg8EHElcBQ1EXUwdtpBSahx71e7H5VJHerCs9_myJOwoZBxi4hvuq9W4giWr86ng_NuT-n6HtXkxpXI4mhh7GDwVWk8o-1cWOJulp2r9221hk/s1600/LBCertPathonWin7.png" /></a></div>
<br />
The issuer of the certificate could not be found. Hmm. Remember, I'm looking at the Windows certificate store, here, not the Firefox or Thunderbird one - they were fine because I'd been using that cert with Thunderbird on that machine for the best part of a year with no problems. But it looked as though the Windows certificate store was missing one or other, or both, of the Verisign CA certificates. So I went into the Firefox Certificate Manager and exported both the required certificates, noticing as I did so that the VeriSign Class 1 Public Primary Certification Authority - G3 certificate was a Builtin Object Token (distributed as part of the browser) while the VeriSign Class 1 Individual Subscriber CA - G3 certificate was stored in the Software Security Device - i.e. it had been imported separately.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfkPhD-1P04asUi9D9_KneUBG4bzaLKKwUBKf0ZEftLXJ_CX4JfHfkZfC6GVNDiHbh5kxVfjLlrDw7MJmV1gAzRY5Y_ccPHeCiiJgQ65jSvWO5e3Jvv3cXzmgad0wRBaTQS7plinrGgx4/s1600/VerisignClass1PublicPrimaryonXP.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfkPhD-1P04asUi9D9_KneUBG4bzaLKKwUBKf0ZEftLXJ_CX4JfHfkZfC6GVNDiHbh5kxVfjLlrDw7MJmV1gAzRY5Y_ccPHeCiiJgQ65jSvWO5e3Jvv3cXzmgad0wRBaTQS7plinrGgx4/s1600/VerisignClass1PublicPrimaryonXP.PNG" /></a></div>
<br />
Now, it was over to the Windows 7 machine, and the Certificates MMC snap-in. To run this, use Start -> Run, type in "mmc.exe" to start MMC, then use File -> Add/Remove Snap-in, Select "Certificates" and add to "Selected snap-ins", select "My user account" and click OK. A quick inspection revealed that the VeriSign Class 1 certificates weren't there, but right-clicking almost anywhere and choosing "All Tasks" -> "Import..." allowed them to be imported successfully.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_NmIHSwJ-99EzL8kn_xgGIIX2inetKXMuIolvWLzs89PHKjcMDPDB0z_3bR-KCUCGe87lsUAEF8rXGoyRnkLiHyAhGdaPzsJ1RFKEu6VuLEEMLgVjK1E3St0QDInxRCyuASB6PGN23Jk/s1600/MMCCertificatesSnapin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_NmIHSwJ-99EzL8kn_xgGIIX2inetKXMuIolvWLzs89PHKjcMDPDB0z_3bR-KCUCGe87lsUAEF8rXGoyRnkLiHyAhGdaPzsJ1RFKEu6VuLEEMLgVjK1E3St0QDInxRCyuASB6PGN23Jk/s1600/MMCCertificatesSnapin.png" /></a></div>
<br />
Once this is done, my personal certificate shows up correctly on the Windows 7 desktop:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXZuZ1WKkaV5tLp492UwRamgZ4eJ5BSWIRC0fOWkBqqkG3X96VVCaV9-0OSb-26_sxxTzGohW4dqeiHOUyA_dCed4XkaSXZp4_peTONTgZTKi1JBjrFPLN7XKuXuldiFSpCrsn4uaGag0/s1600/LBCertFixedonWin7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXZuZ1WKkaV5tLp492UwRamgZ4eJ5BSWIRC0fOWkBqqkG3X96VVCaV9-0OSb-26_sxxTzGohW4dqeiHOUyA_dCed4XkaSXZp4_peTONTgZTKi1JBjrFPLN7XKuXuldiFSpCrsn4uaGag0/s1600/LBCertFixedonWin7.png" /></a></div>
<br />
Now, the students were experiencing problems importing my certificate into Thunderbird, but I bet it was the same problem - missing Verisign root and intermediate signing certificates. I've sent a couple of them the certificates as described above, and I've also sent others my certificate exported from Thunderbird using the "X.509 Certificate with chain (PEM)" format, which puts all three required certificates into a single .crt file. I'm waiting to hear back from them, but I'm expecting success.<br />
<br />
All this is complicated by some terminological inexactitudes in the industry and the software used. One has to be careful to distinguish between Firefox/Thunderbird's "Backup...", which exports both the certificate and the corresponding private key in PKCS #12 (.p12) format, which displays in a Windows folder as a certificate with a key in front of it. You don't want to give anyone else this file, as it contains your private key (albeit password protected). It's mainly useful for exporting your key and certificate from Firefox and importing it into Thunderbird or other applications. So, a "certificate file" may not contain just a certificate! (This is almost as egregious an error as the old man page for OpenSSH, which used the word "certificate" to mean "private key"!)<br />
<br />
On the other hand, if you want to give someone else your public key, in the form of a certificate, you have to "View..." the certificate, click on the "Details" tab and then choose "Export...". At this point, one can choose PEM (.crt - appears as a certificate) or PKCS #7 (.p7c - appears as a rolodex card) format, with or without the certification chain.<br />
<br />
But the real problem is that VeriSign - now part of Symantec - appears to be backing, slowly, and without notifying their customers, out of the personal certificate or Digital ID business. They are no longer distributing their Class 1 root and intermediate certificates with Firefox or Thunderbird, or with Windows. What's worse, my students have not been able to download my certificate from the <a href="https://securitycenter.verisign.com/celp/enroll/outsideSearch?application_locale=VRSN_US&originator=VeriSign:CELP&tid=symc_vrsn_search" target="_blank">Verisign Digital ID directory</a>. It's there (as are records for my previous certs going all the way back to May 1997!) but there are no links or buttons to do anything with it. No-one can download it, and it looks as though I'm not going to be able to renew it - although without distribution of the CA certificates in email clients, it's of dubious value anyway.<br />
<br />
By contrast, Comodo not only offers <a href="http://www.comodo.com/home/email-security/free-email-certificate.php" target="_blank"><i>free </i>Class 1 personal certificates</a>, but also operates the <a href="http://directory.comodo.com/" target="_blank">SecureZIP Global Directory</a> where you can place your certificate for use with the PKWare SecureZIP utility. And their Class 1 CA certificates are more widely distributed than Verisign's, making them less prone to problems.<br />
<br />
So, if you've been experiencing problems with your VeriSign Class 1 certificate, perhaps you now know why. And if, like me, you've been paying for your certificate for the best part of 20 years, you'll join me in saying:<br />
<br />Thanks for nothing, VeriSign.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-39593130823530851012013-04-21T12:51:00.000+10:002013-04-21T13:27:26.399+10:002013: The Year of the Facebook Mobile Attack?Facebook has been pushing - if you don't update, you'll receive notifications in your newsfeed - a new version of the Facebook app for Android. I've reluctantly upgraded the version on my Nexus 7, but I'm holding off installing it on my phone. At this point, I'm not sure the increased risk is worth it.<br />
<br />
"What risk?", I hear you ask. There's a potential exposure in the new Facebook app; the app requires somewhat looser permissions than the previous version, including - wait for it - the ability to directly call phone numbers. Big red flag here, Facebook. The major form of malware seen to date on Android phones has been apps that use this permission to call premium-rate international numbers, running up a huge phone bill for the victim and delivering a nice profit for the attacker.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="height: 428px; margin-left: auto; margin-right: auto; text-align: center; width: 382px;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguftYurYA6PbC_AFnCGoSMkRgjBIbzhJjtPMJrs44lMM93mWc9okphNkH72gv_yfYjys0h6urac-KoTKfwvI28GPFsRFxb0GFPMDA7L00pdCGrQhGGm0ZhjGMu15LyDDmwFg4EFsGVF0U/s1600/Screenshot_2013-04-21-12-25-28.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguftYurYA6PbC_AFnCGoSMkRgjBIbzhJjtPMJrs44lMM93mWc9okphNkH72gv_yfYjys0h6urac-KoTKfwvI28GPFsRFxb0GFPMDA7L00pdCGrQhGGm0ZhjGMu15LyDDmwFg4EFsGVF0U/s640/Screenshot_2013-04-21-12-25-28.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Properties required by the Facebook app for Android - <br />notice "direct call phone numers"</td></tr>
</tbody></table>
<br />
The need to make phone calls arises from the introduction of the new "Facebook Home" - an app which takes over the home screen of a phone to present a Facebook-centric experience - as well as Facebook Messenger, which integrates Facebook messaging with SMS as well as supporting voice messaging. It's not clear to me why the main Facebook app, which does not support these functions, should also require access to the phone functionality, not to mention the ability to record audio, download files without notification, read your contacts and many other privacy-invading permissions.<br />
<br />
At the same time Facebook has been a terrific vector for the spread of malware on the PC, sometimes in the form of infected videos or apps, as well as privacy-invading apps which harvest your profile, contacts or other information or download files.<br />
<br />
The message: expect this to spread rapidly to mobile devices. Facebook now exposes a relatively large attack surface, and an attacker who can compromise the Facebook app on Android can use its permissions in a range of creative ways.<br />
<br />
2013: the year of the Facebook mobile attack? I hope not, but it looks likely to me.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-73010683102134295892013-04-14T15:45:00.002+10:002013-04-15T09:54:37.238+10:00Google+: The Good, The Bad and The UglyI've recently introduced a group of online friends to Google+. We'd mostly met via Facebook, where we'd shared things via a secret group, but disenchantment set in and the group was fractured when some of our number were locked out of their accounts (the reasons for that are not at all straightforward and I won't go into them here).<br />
<br />
So a few of us were chatting about how to get around this, and off the top of my head I quipped, "We ought to set up a similar group as a Google+ community". Then I thought, "why not?" and a minute later, I'd done it.<br />
<br />
I spent the day intermittently writing short "How-To" posts for the new users I was dragging across from Facebook, and answering their questions, helping them to figure out how to get things done, etc. It's been a couple of days and the experience has given me a better understanding of Google+<br />
<br />
<h3>
Neither Good Nor Bad - Just Important</h3>
<br />
<i>Circles</i>. You have to grok circles. Circles have both read and write, or in and out, functionality. You can use circles to filter what you see in your home page - for example, you can suppress a circle from appearing in your Home page stream (great if they are prone to posting NSFW images!). That's the "read" functionality. You can also limit posts to only certain circles so that your doings are not broadcast to the wrong people - that's the "write" functionality, which will be more important to some people (to be honest, I regard anything that I post on a social networking site as public).<br />
<br />
The problem is that the importance of circles, and the things one ought to consider when creating them and adding people to them, are <i>not immediately obvious </i>- it's only after you've spent some time fiddling with the various configuration options that their importance becomes apparent.<br />
<br />
<h3>
The Good</h3>
<br />
Now to some good points I've noticed and others have commented on.<br />
<br />
Firstly, the <i>Home page has filtering</i>, so you can view just specific circles. Across the top of the home page are buttons for "All", "Friends", "Following", or whatever circles you've created. This means you can choose to see only posts from colleagues during the workday, then spend some time catching up with friends, or reading up on products/technology you're following.<br />
<br />
The <i>integration with Gmail, Contacts, Youtube, Blogger</i>, etc. is nice - but only important for users who have already engaged with the Googleverse. It's good for me - I use Google Apps for both business and university purposes, and it was that that led me to get my Google+ profile sorted out and then start using it - but for people looking for a Facebook alternative, the fact that you might have to use some other Google service such as Google Drive to get things done seems odd.<br />
<br />
There are some <i>nice usability features</i>; for example, you can drag and drop pictures directly into the "Share what's new..." comment box - there's no need to click on "Add Photos/Video" first. However, on the down side, sharing URL's requires you to click on a link button to get a field, rather than auto-recognising the URL in your text. And Google+ doesn't automatically provide previews of URL's in comments like Facebook does.<br />
<br />
The <i>privacy and security options </i>are very granular; this is great if you're willing to take the time to learn and use them. Not every is willing, though - and it can be confusing for the new user, who doesn't know what all these things are.<br />
<br />
<i>Communities </i>are essentially equivalent to Facebook groups, and can be made public with no barriers to joining, public with approval for joins, or secret, which will require an invitation to join. A nice feature which Facebook doesn't have is "Categories"; for example, I quickly created a a "Using Google+ And This Community" category where I could post hints and answer questions without overwhelming the main "Discussion" category. Of course, the default view when one logs in is "All posts", which displays everything - and it takes the new user some time to discover and use categories. Until they do, they post everything in the default "Discussion" category and (under "Bad") there's no way for moderators to move posts to the correct category.<br />
<br />
<i>It's quiet</i>. I've given up on Twitter; it's been over-run by social media "marketers" who think they're slick, and aren't. Facebook is rapidly heading the same way; my newsfeed is starting to fill with posts from link farmers trying to trap people into granting access to their Facebook profiles. Google+ doesn't have that, as far as I can see. Yes, there are marketers there - I follow a couple of my favourite brands - but so far, it's a pretty well-behaved place.<br />
<br />
<h3>
The Bad</h3>
<br />
But there are problems, and it's been obvious as I've introduced these new users. <br />
<br />
<i>It's noisy.</i> By default, every post, every comment on a post, every damn thing that happens, fires off an email. There's a notifications on/off button in communities, but that doesn't seem to do much to quieten things down - instead, you have to go to your profile, <br />
<br />
<i>Configuration options and settings are spread out in various places,</i> mostly accessible from your Profile, via the gear-wheel icon at top right. Some options are under "Profile and Privacy" (https://www.google.com/settings/privacy) - for example, you can control which people appear in the "People in his/her circle" listing on your profile, on a circle-by-circle basis if you want. But other settings, such as just what "Your Circles" means when you share something with "Your Circles", and the email/SMS notification noise level, are under "Google+" (https://www.google.com/settings/plus). It all gets rather confusing, especially for the new user.<br />
<br />
Another big issue is the <i>lack of group chat functionality</i>. Just like Facebook, there's a "Chat" tab at lower right of most pages, but unlike Facebook, you can't add multiple people to the conversation. Googling "Google+ group chat" leads to articles that imply it's possible, but the software has obviously changed since they were written. And the confusion over Google's IM products don't help, there's Google+ Chat, Google Talk, Google Messenger and Google Voice, and they're all different things. In fact, it seems that two different things on different platforms (PC vs Android) can even have the same name even though they're incompatible and not interoperable.<br />
<br />
If you really want a multi-way conversation, Google+ pushes you towards "Hangouts" which offer up to 10-way videoconferencing and have some really neat features such as screen-sharing, etc. However, not everyone has a webcam, or even a microphone, or they don't want to be seen. And Hangouts require special software; when you start a hangout (or try to join one?) without the software, you are prompted to download GoogleVoiceAndVideoSetup.exe. The messages seem to imply that the software has installed itself; however I soon discovered that it hadn't, and when I found and ran GoogleVoiceAndVideoSetup.exe, it downloaded and installed the actual code required. At this stage, no-one else in our little group seems to have completed the process and so we haven't actually accomplished a Hangout. If we do, we might well move this feature to the "Good" side of this balance sheet.<br />
<br />
<i>File sharing is difficult</i>. Facebook groups have a "Files" tab and even an "Add file" link right at the top of the page. There's nothing like this in Google+ communities. The easiest way to share something seems to be to upload it to Google Drive, make it public and accessible to anyone who has the link, then copy and paste the link into a Google+ post. This is awkward at best, and it also means that the file is stored in an individual user's Drive, rather than storage space that belongs to the community. At the very least, the Share... menu option in Google Drive ought to have options for sharing to Google+ - that functionality already exists in Youtube and could almost be copied and pasted into the Google Drive code base.(Update: it turns out that there <i>may</i> be a button which allows direct sharing to Google+ [or email, Facebook or Twitter], but I don't see it because I'm using the Google Apps version of Google Drive. Just another complication - <i>different people see different versions of the same thing</i>, depending upon which Google services they're signed up for.)<br />
<br />
<i>Terminology keeps changing</i>. For example, the term "stream" has fallen into disuse - your "stream" is now your "Home page". And I've already mentioned the confusion over the IM apps.<br />
<br />
<i>Functionality keeps changing and is inconsistent</i>. Google+ - and the rest of the Googleverse - is obviously in a constant state of change and flux. New functionality is constantly appearing while older and less-used - but popular with its users - features are liable to disappear. I need only mention Google Reader at this point - but it's an issue I'll return to.<br />
<br />
Related to this is the fact that while Google is positioning Google+ as the central hub of their applications and services, at least for identity and profile management, it is <i>not very good as a user-centric dashboard</i>. As one of my friends pointed out, iGoogle was much better for that - but it's due for end-of-life later this year. It's a great pity - Google needs something that provides a single page with widgets for Gmail, Calendar, Contacts, Google+, etc. Ironically, I realised that's what my home screen on the Nexus 7 provides - it would be wonderful if Google could provide a web page that could run the same widgets as Android devices. How about it, Google?<br />
<br />
<h3>
The Ugly</h3>
<br />
Now we're down to cosmetics - the kind of thing that a bit of CSS fine-tuning could probably fix<br />
<br />
Google+ doesn't seem to fit as much information on the page as Facebook does. I say, "seem", because on close inspection they both use the same font size for the main text of posts. Google+ puts its major app icons down the left column while Facebook lists groups, apps and pages there; scrolling up, Facebook shifts it up, leaving empty white space. Over on the right, Google+ lists more "stuff" you might like while Facebook puts a scrolling "ticker" app, which is dense with a smaller font and less white space.<br />
<br />
Part of the reason for the less dense appearance of Google+ is its use of boxes around posts and grey shading. Facebook's all-white page is much cleaner looking. Google+ could really use a makeover from a good designer.<br />
<br />
<h3>
Summing Up</h3>
<br />
Overall, the impression one gets is that Google+ is "geekier" - it's stronger and more innovative on the back end server functionality. There are lots of configuration options, but Google annoys most first-time users by not setting appropriate defaults - there are far too many email notifications and the privacy settings probably aren't set high enough for most users, requiring a good half-hour or more of stumbling around, changing things by trial and error.<br />
<br />
I believe that Google+ is going to grow and get better - as more and more users acquire Android devices or switch to using Google Apps and Gmail, they will be assimilated, and the functionality will be refined. But for now, it's still rough round the edges and a bit abrasive for the user switching over from Facebook.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com1tag:blogger.com,1999:blog-6444911625789115494.post-88134138281619709832013-04-01T17:17:00.001+11:002013-04-01T17:33:11.723+11:00Much Ado About DNS Amplification AttacksThere's been much wailing and gnashing of teeth from one or two people over DNS amplification attacks, following an over-hyped DDoS attack on Spamhaus using this technique. The attack relies on sending DNS requests with the source IP address spoofed to be the address of the victim, which is swamped by comparatively large reply datagrams, Here are two techniques to make sure that your systems can't be used by Bad Guys to conduct these attacks.<br />
<br />
For years now, in my CISSP Fast Track Review Seminars, I've been advocating the use of reverse path filtering in routers and firewalls. In fact, it's an Internet Best Practice - see BCP 38 [1]. It's implemented in the Linux kernel and many distributions turn it on by default. On Red Hat Enterprise Linux, CentOS or Scientific Linux, for example, take a look at the <span style="font-family: "Courier New",Courier,monospace;">/etc/sysctl.conf</span> file, looking for the following lines near the top:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"># Controls IP packet forwarding<br />net.ipv4.ip_forward = 1<br /><br /># Controls source route verification<br />net.ipv4.conf.default.rp_filter = 1</span><br />
<br />
If you change that to:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">net.ipv4.conf.default.rp_filter = 2</span><br />
<br />
you have solved the problem - before forwarding a packet, the kernel essentially asks itself, "If I was sending a reply to the source address of this packet, would I send that reply back out the interface that I received this packet on?". If the answer is no, the packet is dropped. So, for example, if a packet with a source address on your internal network arrived on the external interface, it would be dropped.<br />
<br />
If your distro does not use the <span style="font-family: "Courier New",Courier,monospace;">sysctl.conf </span>file, you can achieve the same effect with the following command in a startup script such as <span style="font-family: "Courier New",Courier,monospace;">/etc/rc.d/rc.local</span>:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">echo 2 > /proc/sys/net/ipv4/conf/default/rp_filter</span><br />
<br />
The default value of <span style="font-family: "Courier New",Courier,monospace;">1</span> enables reverse path filtering only of addresses on directly connected networks. This is a safer option - full reverse path filtering can break networks which use asymmetric routing (e.g. the combination of satellite downlinks with dial-up back-channels) or dynamic routing protocols such as OSPF or RIP.<br />
<br />
However, reverse path filtering really needs to be implemented by all ISP's, to stop datagrams with spoofed source addresses from getting anywhere on the Internet. For those of us who aren't ISP's but just operate our own networks, a better fix is to make sure that your DNS either does not support recursive lookups, or supports them only for your own networks.<br />
<br />
If your DNS is intended only as a primary or slave master for your own public zones, and will therefore be authoritative, then just edit the named.conf file to set the global options:<br />
<br />
<code>options {<br /> allow-query-cache { none; };<br /> recursion no;<br />};</code><br />
<br />
However, if your DNS will provide recursive lookups for your internal machines, then restrict recursive lookups like this:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">acl ournets {203.35.0.152/29; 192.168.0.0/21; };<br /><br />options {<br /> directory "/var/named/data";<br /> version "This isn't the DNS you're looking for";<br /> allow-query { ournets; };<br /> allow-transfer { ournets; 139.130.4.5; 203.50.0.24; };<br /> allow-recursion { ournets; };<br />};</span><br />
<br />
(Replace the network addresses in the <span style="font-family: "Courier New",Courier,monospace;">ournets </span>acl with your own addresses, obviously.)<br />
<br />
The <span style="font-family: "Courier New",Courier,monospace;">allow-transfer </span>directive restricts zone transfers, and you would normally only allow slave DNS's (e.g. those provided by your ISP) and perhaps a few addresses within your own network - I've allowed transfers from all addresses in ournets, so that the dig command can be used for diagnostics. The <span style="font-family: "Courier New",Courier,monospace;">allow-recursion </span>directive allows recursive lookups only from our own machines<br />
<br />
Finally, the allow-query directive means that only your own network(s) can
even query this DNS - if you need to allow queries of your public zones,
you can allow that in their specific options, later:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">zone "ourcorp.com.au" IN {<br /> type master;</span><br />
<span style="font-family: "Courier New",Courier,monospace;"> file "db.ourcorp.com.au";<br /> allow-query { any; };<br />};</span><br />
<br />
Should you choose to go even further, there are even patches for BIND which allow you to rate-limit responses, so that you can provide protection for your own addresses against DNS amplification attacks.<br />
<br />
The bad news is that if you are running Windows, the only option that you have is to completely disable recursion - the Windows DNS is originally based on really old BIND code and does not have most of these options.<br />
<br />
Implement these two simple fixes, and you can be confident that your systems won't be part of the problem. <br />
<h3>
References:</h3>
<br />
[1] BCP 38: Network Ingress Filtering - Defeating Denial of Service Attacks which employ IP Source Address Spoofing - available online at <a href="http://tools.ietf.org/html/bcp38" target="_blank">http://tools.ietf.org/html/bcp38</a><br />
<br />
[2] US CERT Alert TA13-088A, DNS Amplification Attacks. Available online at <a href="http://www.us-cert.gov/ncas/alerts/TA13-088A" target="_blank">http://www.us-cert.gov/ncas/alerts/TA13-088A</a>Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-8306367066260900362013-03-24T21:41:00.001+11:002013-03-24T21:41:21.687+11:00High Kernel CPU Usage - Grrr!My poor old desktop machine, Sleipnir, is much abused and overloaded. It's maxed out, with 3 GB of RAM (max usable for 32-bit XP), 300 GB IDE C: drive, and 1.5 TB and 2 TB drives for use with my SageTV software for DVD images and recorded TV shows, respectively. <br />
<br />
For a few weeks now, the poor old thing has been dragging her feet. Everything was slow; menus would take many seconds, even a minute, to appear, programs were slow to load, and once RAM was fully committed, any switching of programs that involved the swap file - and with Firefox's memory leaks, that usually didn't take long to occur - was painful.<br />
<br />
I didn't think too much of it; it's well known that Windows machines degrade over time. I've always put it down to registry rot, coupled with Microsoft's unholy alliance with hardware manufacturers that gives them an incentive to drive users to replace their computers frequently.<br />
<br />
But it got to be a major Pain In The Ass. My work was slowing down; Eclipse was dragging along and even simple edits were getting to be painful. Worse still, TV recordings were becoming corrupted. Sleipnir contains three TV tuners, and we rely on the SageTV software to automatically record TV shows so that we can watch them at a convenient time. Downstairs, our main TV has a Sage HD-300 extender which allows us to view recordings or live TV, and we count heavily on this to allow us to watch our favourite shows when our workload allows. In fact, the TV won't work without it as there is no external antenna and simple rabbits-ears don't get a usable signal in that location - my upstairs office has much better reception.<br />
<br />
However, now both recorded and "live" TV was jittering, dropping out and downright corrupted. At the least, there were occasional ear-shattering chirps; at worst, shows were just unwatchable. The pressure was on to either replace the computer or get the problem fixed.<br />
<br />
So I did a little hunting around. Sleipnir is so heavily loaded that I routinely run the Task Manager to keep an eye on it, and it was already obvious that the CPU Usage display was showing most of the time spent in the kernel. At the same time, the hard drive activity light was solidly on. Hmmm. Disk activity involving lots of CPU? That shouldn't be happening. (You have to imagine me stroking my chin, thoughtfully at this point). Usually, disk I/O is handled by the DMA Controller, which transfers sectors (or more) directly from the disk controller buffers into main memory with no CPU intervention. The CPU hasn't been involved since the good old days of ...<br />
<br />
PIO! Programmed I/O - where the processor itself enters a loop to transfer data, word by word (it used to be byte by byte, in the old days) from the disk controller into main memory.<br />
<br />
Could it be? Opening Device Manager (from within the "My Computer" properties) and examining the "Primary IDE Channel" properties, "Advanced Settings" tab soon revealed that yes, indeed! - the "Current Transfer Mode" as set to "PIO" rather than the expected "Ultra DMA Mode 5". It turns out that if Windows experiences 6 or more CRC (Cyclic Redundancy Check) errors while reading a drive, it degrades the DMA mode setting, eventually getting to zero and then reverting to PIO mode. This won't actually help anything - the problem is with the disk drive, not the controller - but of course, the CPU is now having to work hard during disk transfers and it slows everything right down.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifRacz9sPDk1zXzqsNg8dek64gi4pmj8ch5XWoFFelUfOuT7WkMRnKPDvy5tT_ABKfT4aJ8z7d1pR8RSL0dyhAw3MPUZ7PVOVHmNWVwfjGfF44d96bRDMzVMzKLSEH7vXR-oT1k2zCGU0/s1600/ide-properties.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifRacz9sPDk1zXzqsNg8dek64gi4pmj8ch5XWoFFelUfOuT7WkMRnKPDvy5tT_ABKfT4aJ8z7d1pR8RSL0dyhAw3MPUZ7PVOVHmNWVwfjGfF44d96bRDMzVMzKLSEH7vXR-oT1k2zCGU0/s320/ide-properties.JPG" width="284" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">IDE Properties - if the "Current Transfer Mode" is "PIO" you're in trouble.</td></tr>
</tbody></table>
Simply setting the "Transfer Mode" to "DMA if available" won't reset things. Rather, you have to click on the "Driver" tab and - yes, this is correct - <i>uninstall the driver. </i>This is a considerable leap of faith, especially considering that this is Windows we're talking about here, people. In fact, you have to uninstall the driver on all IDE channels, and then reboot.<br />
<br />
On rebooting, Windows will produce "New hardware discovered" messages and will reinstall the drivers. It did for me, and it should for you, too. If you haven't uninstalled the driver on all channels, then you'll probably find it's still running in PIO mode on the problematic channel. If you have uninstalled the driver on all channels, you might have to reboot yet again.<br />
<br />
If this works for you, you should be back on the air with a decently-performing machine. It certainly worked, in my case. However, it's probably only a matter of time before the problem arises again - if there were six CRC errors on a drive, it may well be failing. In my case, I have a spare 320 GB IDE drive on the shelf - being a hardware hacker, I have spares for most things - and so I'll take care to back up anything vital and swap drives when I get time. All my work is stored on a server with RAID array and offsite backup or backed up to multiple machines and in the cloud anyway, and my iTunes library is also backed up to a pair of external hard drives rotated weekly to an off-site location. So I'm willing to sit and wait, in the interests of seeing how long it takes for the required six CRC errors to accumulate.<br />
<br />
In the meantime, everything is so much snappier. The "All Programs" menu appears in less than a second rather than anything up to a minute, and I can watch TV while recording three programs simultaneously and running Eclipse, Thunderbird and Firefox.<br /><br />Life is good again!Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-8624451768399714762012-10-18T14:48:00.000+11:002012-10-18T14:48:39.427+11:00And So It Comes to PassBack in January, annoyed by the number of people wanting a password lock built into the Kindle - an idea that is frankly naive and problematical - I sat down and wrote what I thought Amazon ought to do, based upon my experience working in security and e-commerce. It became quite a long blog article, which can be found here: <a href="http://securitasdato.blogspot.com.au/2012/01/if-i-was-amazon.html" target="_blank">"If *I* Was Amazon"</a>.<br />
<br />
Well, blow me down - they've only gone and done it!<br />
<br />
<a href="https://whispercast.amazon.com/" target="_blank">Amazon Whispercast</a> is Amazon's back-end administration tool for organizational users of the Kindle, such as schools, colleges and companies - but it looks as though it would work for families as well. Many of the features will appeal to organizations deploying the new models of Kindles - especially the Kindle Fire HD and Fire HD 8.9" models - such as automatic configuration of wi-fi network connections, VPN configuration, ActiveSync with Exchange servers, etc.<br />
<br />
But the basic ability to centralize book-buying, organize users into groups and automatically deploy books to the Kindles is very like the "parental control" requirement. And there's also the ability to create named policies which selectively block access to the Kindle store, block access to social networks, etc.<br />
<br />
All in all, it looks like Amazon have done a lot of work on the back end, just as I predicted. I can't wait to check it out, in depth.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-23590247163375255392012-10-07T21:41:00.000+11:002012-10-08T10:53:44.951+11:00Apps for the Google Nexus 7 and Galaxy Nexus<div>
<div dir="ltr">
I'm sometimes asked what are the best apps for the Google Nexus 7 tablet and the Galaxy Nexus phone, so here are a few thoughts, written from the perspective of a grad student or very junior academic. All these apps can be installed from the Google Play store, with no need for rooting or side-loading. They are all free (with the exception of Zandy).</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<b>Amazon Kindle</b></div>
<div dir="ltr">
It's hard to escape from Amazon. Whether for leisure reading or for textbooks, Amazon has the biggest selection. The Kindle app is <i>slightly </i>awkward - it can be tricky getting its menu to appear, for example. And a back-lit device isn't the best for reading. But it's nice to have key books available without having to carry the Kindle around as well.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
As I've <a href="http://securitasdato.blogspot.com.au/2011/10/more-on-kindle-for-academia.html" target="_blank">previously commented</a>, the Kindle works best as a reading device - the Kindle infrastructure lets you work with clippings and notes from within a web browser on a PC. I'd say the same for any tablet, let alone the 7" screen of the N7 - set it beside your computer and use a proper keyboard to write.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<b>Blogger</b></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
This article was at least partially composed on the N7 while sitting watching TV. The app has support for inserting pictures directly from the device camera as well as from the Gallery or Dropbox. The app can get a little confused if you edit an article from both the web interface and the app at the same time - it starts displaying HTML tags, rather than embedding and interpreting them - but that's a trap that's easily avoided. Great for blogging on the run, with short pieces.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<b>Slices</b></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Slices is a Twitter client with a very polished interface which allows you to organise your Twitter feed into categories (e.g. I have one for Science/Technology). <br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjobOwBxKEU-ygWcOdn5bloUn4uFR_eja66o-ACs49pOjMDorrrJx78g2LEXWcDATH1JVZUewbLFO24Q94PCJ8u5Dd2C2r-FLSTXJ3PdenoyDiUL_4_4p5Zl5brkGAmGdpxl3pr36hNhw/s1600/Screenshot_2012-10-07-21-11-26.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjobOwBxKEU-ygWcOdn5bloUn4uFR_eja66o-ACs49pOjMDorrrJx78g2LEXWcDATH1JVZUewbLFO24Q94PCJ8u5Dd2C2r-FLSTXJ3PdenoyDiUL_4_4p5Zl5brkGAmGdpxl3pr36hNhw/s320/Screenshot_2012-10-07-21-11-26.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Slices has a particularly clean design</td></tr>
</tbody></table>
</div>
<div dir="ltr">
</div>
<div dir="ltr">
Z<b>andy</b></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Zandy is an Android client for Zotero. Zotero, of course, is a bibliographic plugin for the Firefox web browser - a highly natural fit, given that a browser is the most common way to access online publication databases. With one click, Zotero can create a bibliography entry from a database like Springerlink, download the PDF document as an attachment and store it in "the cloud".</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Zandy uses the Zotero API to access this cloud database. The interface is a little clunky - it would benefit enormously from a rewrite to use the sliding tiles metaphor of Slices and Evernote - but it is easy to forgive this given the convenient access to the database. PDF's can be downloaded, and can be read reasonably clearly on the N7 screen.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<b>Calculators</b></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Disclaimer: I don't like the vast majority of modern scientific calculators - the ones that have an "equals" key - as my brain was molded to prefer Reverse Polish Notation by the classic Hewlett-Packard pocket scientific calculators of the early seventies to mid-eighties.<br />
<br />
Free42 is an emulation of the classic Hewlett-Packard HP-42s programmable pocket calculator - it has a very clean and elegant design with a huge selection of scientific functions. It looks slightly over-sized on the N7, and slightly under-sized on the Galaxy Nexus, but works brilliantly on both.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEit7yivr-Jd_N6EUNDcEGjKB_mgWWjlMjQXYOUUjObqFyxvPIaAcZ815ttUQ_Y9-QMYOevdvfu99MKsRMrrvc963mguQpU2DJfHBdvO6aJW1xo4RYWyBD10i4KyXPGp6O_eAXrLTJu99A/s1600/Screenshot_2012-10-07-21-08-39.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEit7yivr-Jd_N6EUNDcEGjKB_mgWWjlMjQXYOUUjObqFyxvPIaAcZ815ttUQ_Y9-QMYOevdvfu99MKsRMrrvc963mguQpU2DJfHBdvO6aJW1xo4RYWyBD10i4KyXPGp6O_eAXrLTJu99A/s320/Screenshot_2012-10-07-21-08-39.png" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Free42's classic simplicity masks enormous power.</td></tr>
</tbody></table>
<br />
</div>
<div dir="ltr">
go41c emulates the earlier HP-41C, for those who - like me - are more familiar with its keyboard layout. <br />
<br />
For those who need even more power, there's an intriguing option in Frink, a full programming language which seems to incorporate some of the features of high-end graphing calculators, such as calculations and conversions with units.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<b>Evernote</b></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJC0JgQceXYfgao5YR71zjxEG5Y2MEgpLU7eClIiKZPt_AmRu6t88Q8XBA55psspgs5ck_NvIdcTCLJepCGFjzNJ9M444zbNcA3GbrvAuccovSxo1EJ8akh5_HMzaML7ACpIZM00Z_qA8/s1600/Evernote.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJC0JgQceXYfgao5YR71zjxEG5Y2MEgpLU7eClIiKZPt_AmRu6t88Q8XBA55psspgs5ck_NvIdcTCLJepCGFjzNJ9M444zbNcA3GbrvAuccovSxo1EJ8akh5_HMzaML7ACpIZM00Z_qA8/s400/Evernote.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Evernote has a similar "sliding tile" interface to Slices.</td></tr>
</tbody></table>
A terrific little application for the PC, Mac, iOS, Android - you name it. I use it for the most obvious application - I maintain a work journal with ideas, to-do lists, etc. as well as other bits of writing, so I'm using it as a simple word processor that stores all my notes in "the cloud" and makes them available wherever I am. However, Evernote is a lot more than this: you can record audio and video notes, and you can also use the Evernote Web Clipper to clip web pages (including just the main column) or URL's to notes.<br />
<br />
That's just the beginning - there are lots of add-ons and applications that work with Evernote. One that really interests me is the <a href="http://evernote.com/moleskine/" target="_blank">Evernote Smart Notebook</a> - a good old-fashioned paper-and-pencil notebook that works with the handwriting recognition in Evernote, via your smartphone's camera, to record and digitize notes including drawings. Included "Smart Stickers" allow notes to be automatically tagged and organized.<br />
<br />
I'd find it really hard to get by without Evernote.<br />
<br />
<b>Google Sky Map</b><br />
<br />
Using the GPS, digital compass and accelerometer in the Galaxy Nexus - I presume it works on the N7, too, but it's a bit heavier to hold up - this app displays a map of the part of the sky you're pointing it at. A simple, elegant example of augmented reality in action.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirHqZ4yfpXXl8tvVB8TsyPRTfuj9MfB3ez_67TfyZGe2Iz4CJhlEW7B5Akdar7xTPAQQx9av5cQ8vKvu3ctLJJWad0ROsDd8qykV8IkWpZkSFioTo9oli3Y29f9maiQHFPTAgqOUQjJTk/s1600/Screenshot_2012-10-07-21-15-50.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirHqZ4yfpXXl8tvVB8TsyPRTfuj9MfB3ez_67TfyZGe2Iz4CJhlEW7B5Akdar7xTPAQQx9av5cQ8vKvu3ctLJJWad0ROsDd8qykV8IkWpZkSFioTo9oli3Y29f9maiQHFPTAgqOUQjJTk/s320/Screenshot_2012-10-07-21-15-50.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Google Sky Map</td></tr>
</tbody></table>
<br />
<b>Wikipedia</b><br />
<br />
The perfect app for resolving disputes in the pub. Or for looking things up while watching TV. <br />
<br />
<b>GTasks</b><br />
<br />
This is yet another app which uses the "sliding tile" metaphor - this time to manage entries in the Google Tasks database. Generally, this is accessed via the Google Calendar web interface, where it sits to the right of the main calendar display, but the Calendar app on Android doesn't show it. All the better for this excellent app, which provides an easy interface to manage your to-do list.<br />
<br />
<b>Google Goggles</b><br />
<br />
Another app which makes use of compute power in "the cloud". Point your phone camera at almost anything - a painting, a sculpture, a building, a company logo - and press the button, and Google will look it up for you and provide information. <br />
<br />
<b>Google+</b><br />
<br />
Mentioned here simply because it shows up the Facebook application for Android as a clunker. However, Google+ works extremely well with Android devices- take for example, "Party Mode" for Google+ events, which sends all photos directly to the event's page for all invitees to view. <br />
<br />
<b>Flashlight</b><br />
<br />
Turns on the phone's LED flash, for short-term use as a flashlight. Trivial, but oh so handy. <br />
<br />
<b>Light Flow Lite</b><br />
<br />
The Galaxy Nexus has a multi-colour notification LED, but the phone doesn't make much use of it by default. With this app installed, you get full control: make the LED flash red for SMS's, blue for Facebook notifications and green for emails. You can get just about any colour of the rainbow with this little app. <br />
<br />
<b>STVRemote</b><br />
<br />
A bit specialized, but I like it: STVRemote is a remote control for the SageTV HD-300 video extender which feeds our lounge-room TV from the TV server upstairs. I don't think it does anything the standard remote doesn't do, except that since it works via wi-fi, it's not limited to direct line of sight. The same company has a Sage TV client that lets you watch TV on your Android device, but a) it's a little specialized and b) it's also a bit expensive, at over $A28. SageTV is a good news, bad news story: the bad news is that they were taken over by Google and stopped selling their excellent product; the good news is that their technology and ideas are making it into Google TV, so eventually they may produce a worthy replacement.</div>
</div>
Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-15501754385142835662012-10-07T19:00:00.001+11:002012-10-07T19:02:03.879+11:00Do Androids Dream?Good question. But certainly, not of electric sheep.<br />
<br />
I've now had a couple of months with the Google Nexus 7 tablet, and a month or so with the Galaxy Nexus phone, which I bought to match it (you don't want to know how dumb my previous 'smart' phone was). It's been an interesting experience.<br />
<br />
While the Nexus 7 hardware represents excellent bang for the buck, the experience hasn't been about the hardware at all. Nor, strangely enough, has it been primarily about the Android Jelly Bean software. It's been about what lies behind it: Google.<br />
<br />
In recent years, I've relied heavily on the aging infrastructure of my home office: Lotus Domino servers for email, calendar, web server and various home-grown applications, such as my bibliographic database and PhD work journal, augmented by CentOS boxes running a lot of standard open-source apps for mail, etc. The whole thing was fun to set up, useful for learning and an utter pain in the rear to keep running. Even more nerve-wracking was the fact that my wife's business depended upon it, and any system failures would have devastating consequences.<br />
<br />
So I set about a long-term plan to get off it. The first step was to move the email and calendar off Notes/Domino and over to Google Docs. I did this first with my wife's business, and it worked so well that I soon moved my email over. Rather than Notes on the desktop, we switched to the combination of Mozilla Thunderbird with the Lightning calendar plugin with Google provider, and the gContactSync plugin for contact synchronization. The migration proved fortuitous, for a couple of months later a hard drive in our main Domino server died - but by then, it was only running my web site (which I am still working on migrating - another story).<br />
<br />
The bibliographic database was replaced with Zotero (<a href="http://www.zotero.org/">http://www.zotero.org</a>) and the work journal shifted to Evernote (<a href="http://evernote.com/">http://evernote.com/</a>).<br />
<br />
So, it was with this migration achieved that I decided to explore the Nexus 7 (which actually arrived as a birthday gift from my better half). Although I had initially planned to use it as a reading device like the Kindle, as well as maybe to play music, etc. in practice it turns out to be a portable Google box. Initial setup requires a Google account (Gmail or Google apps) but the Nexus happily deals with my three accounts (two businesses, plus university email/calendar). All the calendars are merged but can be turned on and off individually). I quickly installed Evernote and found it to be the perfect complement to my desktop usage (which replicates between my home and work desktops and notebook, the way that Lotus Notes used to). <br />
<br />
The lack of wireless broadband (3G/4G/LTE) soon led me to consider upgrading my phone. Kogan (http://www.kogan.com) had the Galaxy Nexus at only $379 - perhaps because the Nexus is under-rated by comparison with the newer Galaxy S III - and since it is the reference platform for Android phones, guaranteed to have the newest version of Android available first, and my existing Telstra contract was nowhere near running out, I decided this was the way to go. The phone came with Ice Cream Sandwich installed, and I left it like that for a few days, but soon unlocked the boot loader and flashed it with the Google factory image of Jelly Bean, so that it matched the Nexus 7. The decision to do this was driven by one key feature of Jelly Bean which makes it a killer: Google Now.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/pPqliPzHYyc?feature=player_embedded' frameborder='0'></iframe></div>
It's hard to describe the impact Google Now has on your time management and phone usage. Here's a little example, which illustrates how it integrates with other Google services:<br />
<br />
A company I do some work for wanted me to sit in on a meeting with a prospective client in North Sydney. So, I made sure that my contact there was in my Google Contacts, and scheduled the meeting. Because we would need to go over a few things before the meeting with the client, we'd need to get together somewhere nearby - but where? Google Local provided a list of nearby coffee shops, so I schedule a pre-meeting meeting at one of them. Parking could be a problem, but Google Local sorted that out, too.<br />
<br />
I live around 25 minutes drive from North Sydney, and sure enough, about half an hour before the pre-meeting, the Nexus 7 chimed that it was time to leave. I've previously noticed from experiments that Google Maps and Navigate have good information on traffic density, and will pick the best route - it can offer me at least two different routes to work, for example. So I clipped the Galaxy Nexus into a windscreen mount and let it navigate me to the car park, and once out on the street, I used it to find the coffee shop. Shortly before the client meeting, it alerted us in time to walk there, and I used Evernote on the N7 to take conference notes - which I then emailed to my client.<br />
<br />
It's the ability of Google Now to present information <i>before </i>you need it that is so radical. There's an article in MIT Technology Review that stresses this point (<a href="http://www.technologyreview.com/news/429345/googles-answer-to-siri-thinks-ahead/">http://www.technologyreview.com/news/429345/googles-answer-to-siri-thinks-ahead/</a>) as well as an interesting article on Google's Knowedge Graph (<a href="http://www.technologyreview.com/news/429442/google-puts-its-virtual-brain-technology-to-work/">http://www.technologyreview.com/news/429442/google-puts-its-virtual-brain-technology-to-work/</a>).<br />
<br />
The Knowledge Graph lies behind some of Jelly Bean's other neat features. For example, while using it for navigation, I'd noticed that the voice prompts include information read from road signs - this is obtained from the Google Street View camera cars and integrated into Google's maps databases.<br />
<br />
The other really neat Jelly Bean feature that depends upon the Knowledge Graph is voice search:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/fHkhp6BwnGo?feature=player_embedded' frameborder='0'></iframe></div>
<br />
I haven't done a direct comparison with Siri on the iPhone, but I suspect she wouldn't come out of it too well.<br />
<br />
Apart from these killer features, there are lots of other things to like about the Galaxy Nexus / Nexus 7 combination: transparent synchronization of all contacts, email, etc. It's not without problems - for example, each of my Google accounts contains my wife as a contact, with various different email addresses (because we're in each others' businesses and they're both now Google Apps domains), but Google also wants Google+ to become a central feature of the Google world - so my better half has wound up with multiple entries in my consolidated "People" app, and Gmail invariably picks the wrong email address when I start to type her name. However, it's rather cool to see someone's face, picked up from Google+, when they ring you.<br />
<br />
I'm learning to love Google+, and I'm coming to agree with those who say that it's been a sleeper that is now rapidly growing to rival Facebook. I have very different circles on G+ compared to groups on FB, so there's no rivalry at this point. However, there's no doubt that the tight integration of Google+ with the other parts of the Google ecosystem and especially with the Android apps makes it far more functional than Facebook. For example, scheduling an event through Google+ puts it straight into the calendar, and on arrival at the event, it prompts to put the phone's camera into "party mode" in which every photo is automatically uploaded to the Google+ event page for sharing with the invitees.<br />
<br />
Similarly, there's tight integration with Blogger/Blogspot, Youtube, etc. - all of which are supported on the Android devices. This does lead to one of the other sources of pain: getting your Gmail accounts sorted out. Both my wife and I had ordinary Gmail accounts, started before we'd migrated our business email to Google Apps. I'd started this blog using my old Gmail account, and she'd started her blog using her old Gmail account. Now, while I was easily able to add my new Gmail account to this blog and then take over administration - I want to do everything while signed in as me, myself and I, just one account - for some reason she ran into terrible trouble doing the same process. At one point, we thought she'd completely lost access to her blog - months of blog entries effectively lost - and we had to create yet <i>another</i> Gmail account for her as part of the transition. It was a tricky, nerve-wracking process, which leads to another major recomemendation:<br />
<br />
Before you buy a Nexus device - phone or tablet - make sure that you get your Google accounts consolidated, rationalized and squared away, with everything running smoothly with one primary account you intend to use. Multiple accounts are certainly possible and useful - as I say, I have two business accounts and one university account - but you really want to have as much as possible consolidated to one primary account.<br />
<br />
I do use the Nexus 7 for other things: I have the Kindle app for various books, especially textbooks, and I use Free42 and go41c as replacements for my trusty - but aging - Hewlett-Packard programmable calculators. I dabble on Twitter using Slices, and I shop on eBay using the official app. I even use the Galaxy Nexus to talk to people, occasionally, but I have probably taken more photos than made calls, to date.<br />
<br />
However, for most applications, it seems that most of my data - certainly, most of the data that organizes my life - has moved into the cloud. I access it via a conventional computer, or I access it via the tablet, or I access it via the phone - but in most cases, it seems that Google has it, and places it before me before I need it.<br />
<br />
So, to answer the question: No, I don't think Androids dream - in fact, I'm not sure Androids even sleep.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-28126958148897828392012-08-26T17:28:00.000+10:002012-08-26T17:45:33.672+10:00Vale Neil Armstrong<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil9XSSKzhffTtHXvtC9xRDfhYVTcCPjPTbeML0FOSJzehavak8bXSaZ7A-Xw4kR0Wi3dioeMGeCp_za05voYEaxje3IEOLjWnOHPbAeGUIP_xAr-GF_h4JqTQGkRB1RIfJryHkOWCOwb8/s1600/866px-Neil_Armstrong_pose.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil9XSSKzhffTtHXvtC9xRDfhYVTcCPjPTbeML0FOSJzehavak8bXSaZ7A-Xw4kR0Wi3dioeMGeCp_za05voYEaxje3IEOLjWnOHPbAeGUIP_xAr-GF_h4JqTQGkRB1RIfJryHkOWCOwb8/s320/866px-Neil_Armstrong_pose.jpg" width="251" /></a>"I am, and ever will be, a white-socks, pocket-protector, nerdy engineer
-- born under the second law of thermodynamics, steeped in the steam
tables, in love with free-body diagrams, transformed by Laplace, and
propelled by compressible flow." - <i>Neil Armstrong</i><br />
<br />
One of the reasons I personally take umbrage at the decline of the United States as a leader in science, engineering and just plain rational thought is that I am a child of the sixties, and like many of my generation I remember staying up late to watch those blurry black-and-white images as he descended the ladder and set foot on the moon; at that time America seemed to be a beacon, showing the world the way forward to a future in which science and technology would solve all our problems.<br />
<br />
It didn't come to pass. Perhaps we were naive to think that way.<br />
<br />
However, the moon landing inspired me to pursue a career in science and engineering, albeit in a very minor way. And eventually I learned to fly, too. <br />
<br />
To me, the death of Neil Armstrong represents a punctuation mark in American history. He was a pilot and an engineer, what some call a "maker" - one of those who don't get distracted but knuckle down to solve problems, important problems, who put in long hours to master complex skills and who put their lives on the line, both in combat and in test flying. That kind of life and that set of values, I suspect, give you a very different view of what's important and what's not.<br />
<br />
These days, our would-be-makers are giving us toys and straining to write an app as successful as Angry Birds (which I freely confess, I have never played). It all seems rather trivial, and that consumer technology has overtaken aerospace is demonstrated by NASA's plans to use <a href="http://www.nasa.gov/offices/oct/crosscutting_capability/edison/phonesat_prt.htm" target="_blank">Android smartphones as the computing power on a series of small satellites</a>. Armstrong, Aldrin and Scott made it to the moon and back with less computing power than most people carry around in their pockets today.<br />
<br />
Meanwhile, the rising tide of anti-intellectualism in the US brings us prospective leaders who <a href="http://opinionator.blogs.nytimes.com/2012/08/23/the-crackpot-caucus/" target="_blank">don't understand enough basic science</a> or <a href="http://www.huffingtonpost.com/bill-maher/todd-akin-republicans_b_1826617.html" target="_blank">even basic <i>rationality</i></a> to have any hope of addressing the key issues the world - or even just the US - faces today, such as anthropogenic global warming, public health issues, the biology and ethics of reproductive rights and a lot more.<br />
<br />
I can only hope that some of those hoping to "lead the free world" will remember the emotions they felt when Neil Armstrong showed how America really led the world, and then realise that their current approach isn't working. But I expect to be disappointed.Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0tag:blogger.com,1999:blog-6444911625789115494.post-11292553207269683852012-08-12T13:22:00.000+10:002012-08-12T13:22:03.053+10:00Googling My Life Away<div>
I'm a big advocate for privacy, but I've recently begun to understand the temptation to trade it for convenience in a digital lifestyle.
My family gave me a Google Nexus 7 tablet for my birthday, and I've been seduced by its convenience.<br />
<br />
I'd been using Google Apps for a while anyway, as part of a strategy to switch away from my own mail and calendar servers, which were becoming increasingly expensive and time-consuming to maintain; the Nexus tablet seemed to offer easy integration with that, as well as the University email, etc. However, within a couple of days, I'd become an app junkie, having installed Evernote, the Kindle app and Drop box to give me access to my work files over coffee. Next came the Wikipedia app, followed by emulations of my favourite HP calculators.<br />
<br />
What impressed me most, though, were the mapping applications integrated into the system. Sitting at home, I can hit the microphone icon in the Google search bar and say "Navigate to Macquarie University", and within seconds, I've got comprehensive directions. If I set out following them, the Nexus 7 will provide voice prompts and a continuously-updated display, only getting into trouble if I deviate from the suggested route - being wi-fi-only, it is unable to update its maps and speech prompts, although it still seems to provide correct left/right arrow prompts on-screen.
And of course, its "Local" app can provide listings for nearby cafés, restaurants, pubs, ATM's, etc. - all very convenient. But to do this, Google needs to know where I am. Should I worry?<br />
<br />
To analyse this, we have to tease apart several notions which contribute to, and partially compose, the concept of "privacy".
First, there's essence of Google. I tend to the idea that my privacy is compromised when another person knows something about me which I do not want them to know. In this sense, Google is not a person - it's just a cloud of servers which are continually processing data on my behalf - email, appointments, my web searches and now my whereabouts. No person is watching, and my privacy - so far - is no more compromised than it is when anyone glances in my direction as I pass them in the street.<br />
<br />
Of course, if someone wants to track my movements, there's now a central point where they can look. Google - the corporation - obviously is interested in directing targeted advertisements towards me; I've never been particularly concerned about that for two reasons. One, I rarely see advertisements anyway, thanks to AdBlock Plus (and I never paid much attention to them anyway when I did), and two, I used to work in the direct marketing and advertising business and actually see the benefit of targeted ads that are more likely to be of interest, compared to the shotgun blast of scattered general media advertising.<br />
<br />
The more important question is whether anyone else can get access to 'my' 'private' data. At this point, the obvious candidates are government agencies; Google being a US corporation, it is most likely to open my kimono in response to requests under US laws like the PATRIOT Act. But then, I've always assumed that everything I send over the Internet is intercepted and processed in various ways anyway, and it's never bothered me. I do use encryption as routine - I use SSH when logging into my own servers, for example, and a VPN tunnel from my laptop back to the office - but that's to secure against independent hackers and not for privacy.<br />
<br />
Coming back to the notion of privacy as an unauthorised disclosure of information about one person to another person - in this case, the information being disclosed is my location. To me, that's not particularly sensitive; most of the time, I'm exactly where anyone who knows me would expect me to be: sitting at one of my desks in front of a computer. If I ever <i>do </i>want to cloak myself in secrecy, I can just turn off GPS or turn the device off altogether.<br />
<br />
The other seductive aspect of the Nexus 7 (and its Galaxy Nexus phone cousin) is the ability to tie together various accounts and services, such as Gmail, Google+, Google contacts, etc. I wrote the bulk of this article on the Nexus tablet, and when I post it, it will quite possibly be linked to my Google+ account, might well have my location attached, and so on. But this isn't an issue of privacy - I'm <i>publishing </i>the article, making it public, and I have sufficient control over what's disclosed.<br />
<br />
So, all in all, I'm surrendering to the temptation and letting Google into my life. I don't think I'm in danger of being reduced to a carefully-monitored profile, but if I do, I'll let the world know about it.</div>Les Bellhttp://www.blogger.com/profile/08210607019359651470noreply@blogger.com0Forestville NSW, Australia-33.7622443 151.2164563-33.7754453 151.1967153 -33.7490433 151.23619730000001