We began our extensive assessment of Windows Vista with a focus on the changes to the graphical framework of Windows. We also talked about improvements to the general Windows API, the media foundation, and improvements in sound. In what follows, we look at three remaining areas of major improvement for Vista: security, networking, and storage. At the end, we present the first round of our criticisms of the new OS. In the coming weeks, we will unveil our performance-oriented examination of the OS. Without further ado.
A new approach to Windows security
Over the years, much has been made of Windows' security or (perceived) lack thereof. Though Microsoft's record has certainly improved in recent years, many industry observers feel that the company could do more. So Vista does more, both to address old-fashioned security issues like buffer overflows and more recent "innovations." Especially significant is the modern phenomenon of spyware, and some of the much less modern phenomena such as rootkits that go along with it. Vista's most obvious, noticeable measures are aimed at just this kind of problem.
A user may install a program that appears innocuous enough—maybe a peer-to-peer filesharing program, or a cute purple animated character, or an audio CD—and then find that the browser has had its homepage changed, all actions on the Internet are recorded and distributed to third parties, and hidden software has been installed that prevents ripping CDs.
The big problem here is that many users, especially home users, have user accounts with Administrator privileges. To a certain extent, this is hard to avoid; they really are the administrators of the systems, so such privileges are not inappropriate. Though one could run as a non-Administrator in Windows XP, changing to an Administrator only when absolutely necessary, it's arguably not very convenient to do so. Programs might unexpectedly or unreasonably demand Administrator privileges due to poor coding. Many kinds of software demand Administrator privileges to install—many games, for example, require Administrator privileges so that they can install supposed "anti-piracy" drivers, meaning that the user has to change identity (logging in as someone else, using RunAs, etc.) quite often.
In addition, the system was just plain unfriendly. There's generally no way of knowing if something will need Administrator privileges or not, and it's not uncommon for operations to fail partway through because they needed Administrator privileges but didn't have them. And to top it all off, there's still plenty of software out there that refuses to run as a non-Administrator even though it actually doesn't need to be run as an Administrator at all.
User Account Control
To address this issue, Vista has a feature called User Account Control (UAC). With UAC operational (which it is by default), anyone logged in as an Administrator has a kind of "dual login." The operating system maintains two sets of access rights and privileges—one set for a standard user, who has no special abilities, and one for the administrative user, with all the power that entails. By default, Vista uses only the first, unprivileged set of rights.
In this way, the user, even though logged on as an Administrator, isn't actually more powerful than a regular user. When the user does something that actually needs Administrator privileges, the screen goes dark, and a dialog box appears to say that a program requires permission to perform some action. Users can then cancel the operation or allow it to proceed. If they choose to proceed, then they will temporarily use the set of administrative access rights for the duration of that operation.
In this way, the user is generally protected against breaking the system (whether it be through deleting necessary files, reconfiguring important hardware, or installing something nasty) but has easy access to Administrator powers when needed. If the user is not an Administrator at all, a similar scheme operates. In this case, rather than simply getting a dialog box to verify that the action is allowed, the user is asked to enter Administrative credentials.
Just how effective this is at safeguarding users remains to be seen. If users deliberately choose to download the installer to a program and run it, it seems likely that they'll be happy to elevate their privileges when prompted to do so. In this sort of situation, the UAC prompt asks them only to confirm what they've already chosen to do, and to install the program they have no choice but to accept the prompt.
Second-guessing the user seems unlikely to close off that particular malware vector. Where UAC will make its usefulness apparent is in those situations where the user isn't expecting to install a program at all; historic examples of this are autoplaying CDs, executed e-mail attachments, and browser exploits. In all these situations, the malware has leveraged the user's administrator privileges without the user's knowledge and without the user intending any such thing to occur. In Vista, such programs may still run, but they will not be able to do so surreptitiously. The UAC prompts will make the malicious behavior very clear to the user and allow him to block it.
Similar schemes are already found in other operating systems such as Ubuntu and OS X. In use, one difference that becomes apparent is that both systems can cache the user's credentials for a short period; if one privileged operation is authorized, for a few minutes any other operations will be allowed without further demands from the user. UAC has no caching of this kind. Also, in both systems, the user is asked for a password, but UAC only asks for a password when a regular user attempts a privileged operation. Administrators are merely asked to confirm their intent.
The reasoning behind the first decision is obvious enough: there's a risk that a malicious application might wait until the user has authorized a UAC prompt and then elevate its own privileges. For the second, it's not so clear. On the face of it, requiring a password would demand more consideration of the user than merely clicking a button, yet for some reason, clicking a button is all most users will have to do.