Design Article
Mobile security development choices
Michael Juntao Yuan and Ju Long
9/12/2003 9:10 AM EDT
As mobile commerce becomes less of a buzzword and more of a reality, transaction security is becoming an important concern for mobile users and wireless application developers alike. The overall security of a network is only as strong as its weakest link, and in a mobile-commerce network, the weakest link is the client-side device. The interceptable nature of wireless signals and the limited memory and computing power of most handheld devices leaves wireless systems dangerously vulnerable to data theft.
The choice of development platform and tools play a significant role in how effectively you can secure your wireless applications and the networks on which they will run. In this article, we'll focus on both the advantages and the compromises of developing on the Java 2 Platform, Micro Edition (J2ME).
The most notable benefit of using the Java platform for wireless device development is that you're able to produce portable code that can run on multiple platforms. Even with this advantage, wireless devices offer a vast range of capabilities in terms of memory, processing power, battery life, display size and network bandwidth. It would be impossible to port the complete functionalities of an application running on a sophisticated set-top box to a cell phone. Even for similar devices such as PDAs and advanced smart phones, establishing portability between the two often poses a strain to one device and underutilization of the other. Real portability is possible only among groups of similar devices. Recognizing that one size does not fit all, J2ME was designed to strike a balance between portability and usability.
J2ME developers divided it into several different configurations and profiles. Configurations contain Java language core libraries for a range of devices. Currently there are two configurations: Connected Device Configuration (CDC) is designed for relatively big and powerful devices such as high-end PDAs, set-top boxes and network appliances; Connected Limited Device Configuration (CLDC) is intended for small, resource-constrained devices such as cell phones and low-end PDAs. CDC has far more advanced security, mathematical and I/O functions than does CLDC.
On top of each configuration rest several profiles. Profiles define more advanced, device-specific API libraries, including GUI, networking, and persistent-storage APIs. Each profile has its own run-time environment and is suited for a range of similar devices. Java applications written for a specific profile can be ported across all the hardware/operating system platforms supported by that profile. The Mobile Information Device Profile (MIDP) and the PDA Profile are two of the more significant profiles for the CLDC. The Foundation Profile and the Personal Profile are two important profiles for the CDC.
The Personal Profile is built on top of the Foundation Profile to run on high-end PDAs. The Personal Profile is equipped with a complete Java 2-compatible virtual machine implementation. Personal Profile applications can leverage all the Java 2, Standard Edition (J2SE) domain-based security managers, as well as the extensive set of cryptography and security libraries available for J2SE applications. Overall, the Personal Profile offers mature security solutions that are similar to those for J2SE applications.
Implementing secure MIDP applications is much harder, due to the CLDC configuration's limited mathematical functionalities and the scant processing power of many of the underlying devices. MIDP devices are, however, the most widely used wireless devices, so enabling secure applications on those devices is important. In this article, we'll mainly focus on the security challenges and solutions currently available or in development for MIDP applications.
J2ME vs. WAP
Both native apps and J2ME apps have much more to offer than those built under the Wireless Application Protocol (WAP), in terms of both features and security. Whereas WAP is a thin-client development protocol, J2ME is a development platform specifically for smart applications. Regardless of whether the application uses J2ME or a native technology, smart applications offer the following security advantages over WAP applications:
Because smart applications can do much more than WAP pages, running smart applications does increase the risk of software crashes and/or virus attacks. Next, we will discuss the processing and security advantages of J2ME applications over those of device-native applications.
J2ME vs. native clients
As we have mentioned, compared with the native platforms, the main strength of the Java platform is that it allows us to write portable applications. The Java platform's portability stems from its execution model. Specifically, it stems from the use of the JVM to process Java byte code into machine code at run-time, providing a compatibility layer on top of the hardware. The Java platform's execution model also introduces some important security benefits that device-native applications lack. These benefits include:
Smart, usability-focused design and the Java platform's built-in execution model give J2ME applications significant performance and security advantages over both WAP and native applications.
Although J2ME is the key to mobile application security, developing and testing J2ME device applications is not as straightforward as WAP or native C++ applications. WAP applications require ONLY server-side components; native C++ applications do not require the preverification, signing and OTA processes. So, easy-to-use development tools are essential for J2ME developers. The tool must integrate the coding, building and testing environments as well as emulators and device connection support from various mobile device vendors.
The Open Source Eclipse project provides the ideal platform for such tools. While many other IDEs focus on flashy "wizards" that are primarily good for prototype development, the core Eclipse IDE offers a set of code-centric tools that appeals to serious developers. The Eclipse editor supports syntax highlighting, code auto-completion and real-time syntax checking. Eclipse provides a large number of code refactoring and unit testing features to support agile development methodologies. Eclipse also integrates with other popular tools such as ANT for custom building tasks and CVS for source code revision management. However, the most important feature of Eclipse is its extensible architecture for plug-ins. Eclipse's flexible licensing scheme allows anyone to repackage it into a commercial product with proprietary plug-ins.
The IBM WebSphere Studio Device Developer (WSDD) is a commercial IDE based on Eclipse. It adds IBM's proprietary API libraries and J2ME-specific plug-ins to the core platform. Key features of the WSDD are as follows.
In summary, J2ME is the best platform for mobile applications due to its excellent security features and rich functionalities. The IBM WebSphere Studio Device Developer, an Eclipse-based Java IDE, supports a variety of mobile tools and libraries over the popular Eclipse core IDE. For both new and seasoned developers, the WSDD can help you build a better mobile application.
Michael Juntao Yuan writes the "Wireless Java" column for Java World magazine. Ju Long is a research associate at the Research Center for E-Commerce at the University of Texas at Austin where she specializes in new methodologies and the economic impacts of mobile commerce.



