Android Security Modules


Copyright 2013-2014. North Carolina State University and Technische Universität Darmstadt. All rights reserved.

ASM has been open sourced for general non-commercial purposes (including research, academic, evaluation and personal use) under the BSD 3-Clause Licence (changes to the Android OS and system applications) and GPLv2 Licence (changes to the Linux kernel). By downloading or using this software, (1) you accept the terms and conditions of the aforementioned open source licenses and (2) acknowledge that commercial use could require a commercial license. For a commercial license, please contact NCSU Technology Transfer at techtransfer[at] and copy asm[at]

Device support

We currently provide required changes to the mako branch of the msm Linux/Android 3.4 kernel, so out of the box the LG Nexus 4 is supported by ASM. Porting ASM to other kernels should be straightforward.

Getting the Sourcecode

To get access to the ASM sourcecode, please send the following information to: asm[at] :

Your Name
Your Affiliation
Your SSH Public Key
Intended Use: non-commercial, commercial or academic

We will notify you as soon as we have fulfilled your request.

Configure your ssh client. For instance:

$ cat .ssh/config
    IdentityFile ~/.ssh/<your private key file>

Verify that you can connect to via ssh. The public key fingerprint should be : f8:63:55:f2:27:0b:a2:d5:cc:da:b5:6e:b5:40:76:c3. Accept the key!

$ ssh info

To build ASM, first setup an AOSP development environment as described here.

$ repo init -u -b android-4.4_r1.2
$ repo sync

Checkout the ASM manifest:

$ git clone -b asm_project_release
$ mkdir .repo/local_manifests
$ cp manifests/local_manifest.xml .repo/local_manifests/

Synchronize the repository again:

$ repo sync

Building ASM

Build the kernel (we have implemented ASM on the LG Nexus 4 GSM (mako), which uses the msm kernel) using the mako_defconfig configuration file. Change the “-j” parameter to match your machine specs (nr. of jobs).

$ cd kernel/msm
$ ARCH=arm SUBARCH=arm CROSS_COMPILE=../../prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- make -j8 mako_defconfig
$ ARCH=arm SUBARCH=arm CROSS_COMPILE=../../prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- make -j8 
$ cd ../..

Note: Only SELinux and ASM LSM will work correctly in this kernel at this time, other LSMs will need further modifications. The patchset for multi-LSM support can be found here.

Now build ASM:

$ . build/
$ lunch aosp_mako-userdebug
$ make -j8