Ray Chance President Browsercraft, LLC rchance@browsercraft.com 1
EXECUTIVE SUMMARY Today we have reached a critical turning point for USB flash drive technology. Many exciting applications will soon hit the marketplace that will change how people view portable storage computing. Some say the reason we have arrived has to do with industry consolidation and the dramatic reduction in flash memory costs. These reasons are important, but if you truly examine past bottlenecks, one overriding factor quickly materializes USB flash drives are now much easier to program! The purpose of this white paper is to discuss emerging trends and to introduce new technologies available for building sophisticated USB flash drive applications with common desktop tools. We will map out real-world examples using simple desktop tools including Microsoft Word, HTML/JavaScript, and Indigo Rose AutoPlay Media Studio. This paper also discusses rapid development techniques for advanced programming environments including Microsoft Visual Studio v6.0,.net, and J2SE. Bottom-line: You no longer need a team of advanced programmers to create robust, portable, and secure applications leveraging the exciting capabilities of USB flash drives. WHY USB FLASH DRIVES? USB flash drives are rapidly becoming the next big thing in the computer industry. Futurists are predicting that in less than ten years no one will store data files, pictures, or music on standalone computers. Instead, you will carry your vital information on a key or credit card and instantly connect to a convenient computer just like you use ATMs today. Currently, organizations are investing in this technology by building efficient solutions for user authentication, data protection and security, and portable office applications. CURRENT CHALLENGES AND OPPORTUNITIES In the past, anyone interested in developing a USB flash drive application faced two significant challenges. First, you must select a hardware platform. Not all USB drives are built the same. Just like the earlier days prior to IBM DOS, standards were few. This means if you developed an application you must marry yourself to the hardware and re-code your solution for another platform. The good news is the industry is rapidly changing. In January, 2005 SanDisk and M-Systems teamed together to form U3 cross vendor platform intended to unify application development across all USB flash drives. At the heart of U3 is a common software development kit (SDK) framework. The result - any program developed on one device will also run on another so long 2
as both devices support the U3 standard. By uniting the industry around a common platform, drive manufacturers, applications developers, and consumers all benefit. The second challenge for USB flash drive application development is providing easier programming tools. Unlike developing desktop applications, USB flash drive programs must take into account unique conditions associated with portable media. For instance, what happens when you plug the USB flash drive into a desktop computer? Do you want a login prompt to appear? A virus scan program to activate? Do you want software to be installed or transferred to the target computer? Likewise, what happens when you unplug the USB flash drive? Do you want programs to shutdown? Internet sessions terminated? Do you want to encrypt data stored on the portable drive? These details may sound minor but they are essential in providing sound data protection within an efficient user interface. Today, manufacturers typically provide software development kits only supporting C++ development language. Even with the development of U3, due to the cross-platform considerations, you will more likely need to speak C++. For these reasons, Browsercraft has developed software tools that make USB flash drive programming much easier. Take for instance M- Systems DiskOnKey SDK. If you were to develop a program simply to show the message Hello World when the USB flash drive is plugged into a computer, you would need to write or include several hundred lines of code. Specifically, you would add required C++ libraries, headers files, and develop an effective call back program that will display the message when the device is plugged in. As an alternative, you may also use Visual Basic incorporating Browsercraft s COM-SDK for DiskOnKey. Here, you add one program reference and eight (8) lines of code to display Hello World when the USB device is plugged into the computer. Here is the specific source listing: Public Sub Main() dok.dokinit Initialize the SDK result = dok.waitfordeviceconnected(wait_time) Search for the key If Not result = DOK_OK Then ShowError (result) Show error if not found End Sub.. Private Sub dok_deviceconnected() Device is connected, show message Msgbox Hello World Display Message Box End Sub Which would you prefer to do? The secret is the development of widely accessible program components that leverages the underlining SDK s available from manufactures including the U3 initiative. This advantage is very clear when applications are mapped with various solution approaches: 3
File Security Company ABC desires to leverage electronic signature capability of Microsoft Word 2003. To provide an easy solution with added security, USB flash drives are issued containing a MS Word Macro that will automatically digitally sign documents. The goal is to securely store and retrieve a digital signature residing on the USB device. Unlike a desktop computer or laptop, the digital signature travels with you on your key chain. SDK Approach: Without a MS Word macro component, you will need to write a C++ program in MS Visual Studio that will manage the USB flash device while simultaneously accessing MS Word and applying the digital signature. Conclusion: Good luck! SDK and COM Components: Using the native language of MS Word you reference the Browsercraft COM-SDK and write simple macros to access the stored digital signature. These macros safely reside on the USB flash device for added data protection. Conclusion: Contact a junior level programmer. User Authentication Company XYZ wishes to issue USB flash drives for two-factor user authentication with automatic login. Unlike traditional smart cards that require client software and dedicated card reader, Company XYZ desires to provide a 100% web-based authentication solution. The goal is verify a user anywhere on the Internet using both a username/password plus hardware token for authentication. Specifically, the application will automatically navigate to a web page and either prompt or automatically fill in user credentials based on information stored on an attached USB flash drive. SDK Approach: Utilizing traditional SDK in C++ you will need to build a custom ActiveX control that will automate Internet Explorer to navigate to the specified web page and automatically supply form information including the hardware token from the attached USB flash device. Conclusion: Call you local advanced programmer! SDK and COM Components: Using components already built with Browsercraft COM-SDK and example programs you supply command line parameters specifying the required web page and user credentials. When the USB flash drive is attached to the computer, Internet Explorer is automatically launched and the user is logged in using the stored credentials on the USB flash drive. Simple JavaScript may also be written to automatically extract hardware token information. Conclusion: Easy web page development and command line programming. Portable Application Company 123 seeks to develop a multimedia application that will play an animated slide show with music when the USB flash device is plugged into a computer. The application must also encrypt data, protecting information stored on the portable device. 4
SDK Approach: Using SDK tools supplied by the USB manufacture you will need to develop a custom C++ program that will control the USB flash drive as well as play slide show, music, and encrypt data. Conclusion: Call me in six months! SDK and COM Components: Using standard desktop components you purchase an off-the-shelf program Indigo Rose AutoPlay Media Studio and combine it with the Browsercraft COM-SDK. AutoPlay Media Studio is an easy to use drag and drop development environment that enables you to quickly create your own custom CD/DVD menus, interactive presentations, and multimedia Windows applications. AutoPlay Media Studio is also COM component aware meaning it will recognize the commands available in the Browsercraft COM-SDK within its own development environment. Conclusion: Combine tools together for easier program development. C++, VB, VB.NET, C#, Java, VBA Macros, JavaScript, COM Aware Programming COM Components U3 SDK M-Systems SDK C++ Programming 5
Application Development Platform Solution Approach File Security SDK Develop digital signature program utilizing MS Visual Studio C++ SDK + COM Components Develop digital signature program utilizing MS Word Macros, VB, VB.NET, C#, C++, Java (Java COM bridge) User Authentication SDK Develop smart card replacement login utilizing MS Visual Studio C++ SDK + COM Components Develop smart card replacement login utilizing Internet Explorer and JavaScript, VB, VB.NET, C#, C++, Java (Java COM bridge) Portable Application SDK Develop multimedia solution utilizing MS Visual Studio C++ SDK + COM Components Develop multimedia solution utilizing Indigo Rose AutoPlay Media Studio, VB, VB.NET, C#, C++, Java (Java COM bridge) In addition to easy to use desktop tools, you may also take advantage of the rapid development capabilities utilizing advanced MS Visual Studio v6.0,.net, and J2SE. In these environments you reference the COM components instead of the native manufacturer s SDK. In J2SE, you would also incorporate a Java to COM bridge such as JACOB or jacozoom utilizing Java Native Interface (JNI). Browsercraft includes several working examples available for download and evaluation. In conclusion, COM components, supplemented with USB flash drive SDKs, provide an extremely flexible solution that promotes rapid application development. 6
Browsercraft is a web technology company specializing in providing portable, secure, and productive solutions. Our software tools help organizations focus resources, collaborate, and share information through new and exciting emerging technologies. Combined with our comprehensive professional services, Browsercraft provides high value solutions that break new barriers in worker productivity. For further information please visit us on the web at http://www.browsercraft.com 7