【读书笔记】iOS-iOS安全基础知识
一,iOS硬件/设备的类型。
iPad的问世,就是在这一方向上迈出的第一步。第一代iPad使用了ARM Cortex-A8架构的CUP,它的速度大约是第一代iPhone所使用CPU速度的两倍。
iPad2和iPhone4S则是另一个巨大的跨越。它们都使用了ARM Cortex-A9架构的双核处理器,就CPU运算的速度而言,要比A8架构的处理器快20%.更惊人的是,A9的GPU要比A8的快9倍。
另一方面,iPad2使用子双核处理器,它让iOS的分配程序可以全力运行。这样就对漏洞攻击的构造带来了巨大影响,因为漏洞攻击在多处理器环境下的可靠性要弱很多。
二,苹果公司如何保护App Store.
来源于App Store的应用会以较低级别的权限运行在沙盒中,这种方式可以降低它们的破坏性。大家秀快就能看到更多与此相关的内容。
三,理解安全威胁。
总体来说,很多桌面电脑所遭受的攻击同样会发生在iOS设备上。这些攻击可分为两种类型:恶意软件和漏洞攻击。
保护设备不受恶意软件危害的常规方式是使用杀毒软件。杀毒软件的工作就是确定哪些软件是安全的,哪些是不安全的。
四,理解iOS的安全架构。
1,更小的受攻击面
不管用户喜不喜欢,iOS都是不支持Java和Flash的。这两种应用的安全问题由来已久。所以不含它们就使得攻击者更难找到可利用的漏洞。
此外,苹果公司自有的.mov格式也只被iOS部分支持,因此很多可以在Mac OS X上播放的.mov文件在iOS上无法播放。
最后要说的是,虽然,iOS原生支持.pdf文件,但是只解析改文件特性的部分功能。再来看看与之有关的一些数据,有人曾用一些模糊的文件来测试Preview(Max OS X系统自带的PDF阅读器),结果引起了100多个错误。而他在用iOS测试相同的文件时,只有约7%的文件在iOS中引发了问题。这意味着减少iOS能够处理的PDF特性,苹果公司减少了这种情况下90%的潜在安全漏洞。瑕疵越少,攻击者发动漏洞攻击的机会就越小。
2,精简过的iOS
3,权限公离。
iOS使用用户,组和其他传统UNIX文件权限分离机制分离了各进程。
4,代码签名。
iOS中最重要的安全机制是代码签名。所有的二进制文件和类库在被内核允许执行之前都必须经过受信任机构(比如苹果公司)的签名。
5,数据执行保存(DEP)。
DEP不允许数据的执行,只允许代码的执行。
6,地址空间布局随机化。(ASLR)。
在iOS中,二进制文件,库文件,动态链接文件,栈和堆内存地址的位置全部是随机的。
当系统同时具有DEP和ASLR机制时,针对该系统编写漏洞攻击代码的一般方法就完全无效了。在实际应用中,这通常意味着攻击者需要两个漏洞,一个用来获取代码执行权,另一个用来获取内存地睛执行ROP,不然攻击者就需要一个极其特殊的漏洞来做到这两点。
7,沙盒。
五,iOS攻击简史。
1,Libtiff
2,短信攻击。
3,lkee蠕虫。
参考资料:《黑客攻防技术宝典-iOS实战篇》
【读书笔记】iOS-iOS安全基础知识的更多相关文章
- C++程序设计(第4版)读书笔记_C++概览:基础知识
变量赋值 常用的变量赋值都是用“=”去赋值的 ; 但是如果把一个浮点数赋值给i的话,就会造成精度损失,在C++中最好使用初始化列表的方式“{}”给变量赋值,这样可以保证不会发生某些可能导致信息丢失的类 ...
- 【读书笔记】Java核心技术-基础知识-反射
在网页中运行Java程序称为applet. 反射 这项功能被大量地应用于JavaBeans中,它是Java组件的体系结构. 能够分析类能力的程序称为反射(reflective).反射机制的功能及其强大 ...
- 《玩转Django2.0》读书笔记-Django建站基础
<玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...
- 《Essential C++》读书笔记 之 C++编程基础
<Essential C++>读书笔记 之 C++编程基础 2014-07-03 1.1 如何撰写C++程序 头文件 命名空间 1.2 对象的定义与初始化 1.3 撰写表达式 运算符的优先 ...
- Spring Cloud微服务实战阅读笔记(一) 基础知识
本文系<Spring Cloud微服务实战>作者:翟永超,一书的阅读笔记. 一:基础知识 1:什么是微服务架构 是一种架构设计风格,主旨是将一个原本独立的系统拆分成多个小型服务 ...
- android、IOS和手机基础知识
一.手机基础知识 1.固件.刷固件.固件版本 固件是指固化的软件,英文为firmware,它是把某个系统程序写入到特定的硬件系统中的flashROM.手机固件相当于手机的系统,刷新固件就相当于刷系统. ...
- IOS Socket 02-Socket基础知识
1. 简介 Socket就是为网络服务提供的一种机制 通信的两端都是Socket 网络通信其实就是Socket间的通信 数据在两个Socket间通过IO传输 2. Socket通信流程图 3. 模拟Q ...
- IOS 蓝牙相关-基础知识(1)
蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0 ...
- 【记】《.net之美》之读书笔记(一) C#语言基础
前言 工作之中,我们习惯了碰到任务就直接去实现其业务逻辑,但是C#真正的一些基础知识,在我们久而久之不去了解巩固的情况下,就会忽视掉.我深知自己正一步步走向只知用法却不知原理的深渊,所以工作之余,一直 ...
随机推荐
- Android Studio 配置 androidAnnotations框架详细步骤
第一步:打开app的build.gradle文件 第二步:添加下面红色的部分 apply plugin: 'com.android.application' android { compileSdkV ...
- 教你怎么看网站是用react搭建的
概述 SPA和react可以说是web开发的分水岭,我一直在寻找判断网站是普通网站还是SPA抑或是react的方法.今天突然找到一个判断网站是不是react搭建的简便方法.现在记录下来供以后开发时参考 ...
- Spring Boot 2.0正式发布,新特性解读
作者|翟永超 Spring Boot 2.0 来啦,有哪些新特性?升级吗? 写在前面 北京时间 3 月 1 日,经过漫长的等待之后,Spring Boot 2.0 正式发布.作为 Spring 生态中 ...
- OSI七层模型和tcp/ip四层模型对比
OSI 与TCP/IP 模型对比 OSI 协议层名称 TCP/IP 协议层名称 封装的单元 功能描述 TCP/IP协议 应用层(Application) 应用层(Application) 数据 应用程 ...
- 3分钟学会git命令的基础使用
前言废话 下面我们就来看看gitlab服务器搭建好(http://www.cnblogs.com/JeremyWYL/p/8258368.html) 之后,git命令的基础使用,基本上就能满足我们平时 ...
- 使用Jenkins部署Spring Boot项目
jenkins是devops神器,本篇文章介绍如何安装和使用jenkins部署Spring Boot项目 jenkins搭建 部署分为三个步骤: 第一步,jenkins安装 第二步,插件安装和配置 第 ...
- Android中为什么需要服务?
在解释这个问题之前, 先来看一个Android系统中进程的优先级(从高到低) 前台进程(foreground process ): 一个应用程序启动, 并且可以直接相应用户的点击,触摸事件.那么这样 ...
- Android多线程编程<二>Handler异步消息处理机制之Message
Message(消息): 一. Message的字段: 在Android中,Message作为线程之间(主要是子线程和UI主线程之间)数据交换的载体,通过Handler去传递.它 ...
- 模板引擎之-jade
##### 首先我们安装jade模板引擎并编译`npm install jade --global`在项目文件夹下创建一个`index.jade`文件,并且写入```doctypehtml head ...
- 从零开始学 Web 之 CSS(二)文本、标签、特性
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...