线性预测及其Matlab实现,源码,程序
线性预测及其Matlab实现,源码,程序《现代电子技术》2009年第7期总第294期P测试·测量·自动化4骤(1)~(4)可对Ⅰ=1,2,…,P进行递推求解,其中:Ez=-aacorder,:)为最小均方预测误差;R为自相关系数;表示反射系数取值范围为[-1,1];a表示阶预测器的第j个系4结语数通过运算发现,其实在计算过程中,虽然目标是计算线性预测在语音处理方面的应用很广泛,而用一个p阶线性预测器的全部系数,但实际上在递推过程 Matlab来实现可以很直观地知道分析结果,为下一步中仅算出了所有除数低于p阶线性预测器的全部系数,将算法在DSP上的实现奠定基础。目前,语音处理最同时计算出了最小预测误差能量(递推式中反射系数的普遍的就是使用到网络上,而基于现代网络voIP使用取值范围是保证系统H(x)稳定性的充分必要条件,即到的语音编码中G.729正是其中一种。它的出现,使多项式A(z)的全部根都落在单位圆内用户能借助两台PC传输语音,也可以把PC上的语音从推导中得知,业(,)的物理意义可以理解为Sn转到手机上,交互式游戏爱好者们相互之间还可以借助的短时自相关函数因此,它反映了语音波形的实际情高科技控制器进行交流。况,即波形不同,值也不同然而a;的取值由更(j,i决定,并随亟(j,i的改变而改变,因此也可以说a;反映参考文獻了语音波形的实际情况3。[1]吴家安现代语音编码技术[M北京科学出版社,2008其 Matlab描述如下:[2]柏静,韦岗.一种基于线性预测与自相关函数法的语音基音function z=durbin(y, order)周期检测新算法[]电声技术,2005(8):43-46R=zeros(1, order+1)[3]王涌何剑春,刘盛新型的神经网络线性预测语音编码算aa=zeros(order, order)法[J].浙江工业大学学报,2007,35(2):65-68parcor=zeros (l,order),%autocorrelation[4]薛年喜. Matlab在数字信号处理中的应用[M].2版北京:N=size(y, 1);清华大学出版社,2008for h=l: order+1R(h)=0;[5]朱蓉,黄冰EVRC语音编码算法研究及仿真[].现代电子技术,2006,29(2):47-50R(h)=R(h)+y(f)*y(f-h+1)[6]范晶,和应民,王桂梅24Kb/s混合激励线性预测语音编end码的研究[].牡丹江师范学院学报,2007(4):13-14.parcor(1)=R(2)/R(1),[7]丛键,张知易.一种600b/s极低速率语音编码算法[].电aa(1,1)=parcor(1)E=(1- parcor(1)2)*R(1);子与信息学报,2007,29(2):429-433.for h=2: order[8]论:VoP语音技术与传统网络的融合发展LEB/OL]for f=1:h-1http://voip.microvoip.com/market/m1/200803/61433.ht-temp=temp+aa(h-1, f*R(h-f+1);ml,2008,endparcor(h)=(R(h+1)-temp)/%反射系数[9]语音技术在Internet上的新应用Leb/Ol].http://nc.mofaa(h, h)=parcor(h)com. gov. cn/news/1056746. html, 2006.for f=1:h-1aa(h, f)=aa(h-1, f)-parcor(h)* aa(h-l,h-f),[10] Rapidshare Advances in audio and Speech Signal ProcessingteChnologiesandApplications[db/ol].http://rapE=E*(l-parcor(h)2),idshare. com/files/31791068/IGI. rar. html, 2007end(上接第125页)Organic Optics and Optoelectronics[A]. IEEE/LEOS Sum参考文献s[C].1998[1]吴仲城多维力传感器设计及信号分析方法研究[D]北京:[4]熊幸果,陆德仁微力微位移的天平测试方法[J传感技术中国科学院等离子体物理研究所,2001学报,1997,10(2):47-52[2] Texas Instruments. MSC1210 Users Guide[z]. 2002.[5]洪跃,金士良新型微位移电容式传感器的研制[门.上海大[3]Sawada R, Higurashi E. Integrated Micro -displacement学学报,1995,1(6):652-657.Sensor that can be incorporated into Mini3- dimensional[6]胡永建,王晓梅基于MSC120的多路高精度温度采集系Actuator Stage. Broadband Optical Networks and Technolo-统模块[].电子技术应用,2003,29(7):36-38gies: An Emerging Reality/Optical MEMS/Smart Pixels/ [7J Texas Intruments MSC1210 Data SheetLzJ作者简介沈春山硕士研究生。主要研究方向为机器人传感器。135线性预测及其Mat1ab实现旧WANFANG DATA文献链接作者:曹华,李伟,谭艳梅, CAO Hua, LI Wei, tAN Yanmei作者单位:西机电职业技术学院,广西,南宁,530007刊名:现代电子技术sTe英文刊名:MODERN ELECTRONICS TECHNIQUE年,卷(期)2009,32(7)被引用次数1次参考文献(10条1.吴家安现代语音编码技术2002.柏静.韦岗一种基于线性预测与自相关函数法的语音基音周期检测新算法[期刊论文]电声技术2005(08)3.王涌何剑春.刘盛新型的神经网络线性预测语音编码算法[期刊论文]浙江工业大学学报2007(02)4.薛年喜 Matlab在数字信号处理中的应用20085.朱蓉.黄冰EVRC语音编码算法硏究及仿真[期刊论文]现代电子技术2006(02)6.范晶.和应民.王桂梅2.4Kb/s混合激励线性预测语音编码的研究2007(04)7.丛键.张知易一种600b/s极低速率语音编码算法[期刊论文]电子与信息学报2007(02)8.论:VoIP语音技术与传统网络的融合发展20089.语音技术在 Internet上的新应用200610. Rapidshare Advances in Audio and Speech Signal Processing: Technologies and Applications 2007相似文献(10条)1.学位论文鄂慧颖G.729语音编码算法的研究2007语音压缩编码技术是数字通信技术中非常重要的部分。随着通信、计算机网络等技术的飞速发展,语音压缩编码技术得到了快速发展和广泛应用CELP编码是上世纪八十年代发展起来的一种有效的语音压缩编码方案,现已广泛地应用于集群通信、多媒体通信以及IP电话通信中。G.729协议是CELP编码方案的一个特例,它是ITU-T推荐的语音压缩编码中最复杂的一种,它使用了当前语音压缩编码的各种先进技术,计算量较大,但是其编码合成语音质量较高,具有很高的研究价值。本文首先对G729协议的编解码方案及协议中应用的关键语音编码技术进行了剖析,在对G.729协议编码方案进行深入研究的基础上,对矢量量化算法进行了优化,减少了矢量码本搜索的复杂度,加快了矢量码本搜索速度;对固定码本搜索算法进行了改进,提出了一种自适应子矢量共轭结构代数码本激励算法,该算法保持了G.729共轭结构代数码本的优点,使编码传输速率从原来的&kbps降低倒η.2kbps,压缩了传输带宽,更重要的是,它的算法复杂度仅为原G.729固定码本搜索算法复杂度的1/2左右:最后,本文用 MATLAB搭建了编码器仿真平台,对改进算法进行了验证,仿真结果表明,改进后的编码器在降低算法复杂度和传输速率的前提下,译码合成语音质量仍然较髙,具有较好的可懂度、清晰度和自然度2.期刊论文汤婕多脉冲激励线性预测声码器的仿真实验分析一科技与生活2010,""(3本文主要介绍了用 MATLAB工具实现多脉冲激励线性预测( MPLPC)声码器.首先概述了多脉冲激励线性预测声器的编码方法,并用 MATLAB做了仿真实现先对语音信号进行线性预测分析,然后利用分析合成法对语音信号进行重构,并用到了量化编码.3.学位论文范晶混合激励线性预测语音编码的算法研究2008随着通信技术以及互联网语音实时传输技术的迅速发展,对语音的传输速率和存储容量都提岀了很高的要求,解决这些问题的主要途径之一就是语音编码。因此,语音编码的硏究,特别是低速率语音编码的研究,具有十分重要的实用意义在现有的语音编码硏究中,混合激励线性预测语音编码(ELP)是一种比较好的方法,它结合了二元激励、码激励和多带激励的优点,将短时语音段划分为若干子带,在每个子带中分别进行清浊音判别:在合成端,采用周期性脉冲序列和随机噪声的混合序列去激励语音合成滤波器,能在较低的码率下得到较好的再生语音。2.4kbps混合激励线性预测语音编码已经被确立为美国新的联邦语音编码标准本论文通过研究MELP的语音编解码算法的原理,对它的编解码过程做了比较深入的研究,我们发现在基音周期及线性预测系数量化这方面还可以进一定的改进。在标准MLP的算法中,对于那些包含有不规则周期的语音信号段,计算得到的互相关值较小,把它误认为是清音,因此会引入噪音。在这里采用了一种改变基音周期的算法,使基音周期的计算更加精确。此外,在对LSF进行量化的过程中,其码本的存储量与计算的复杂度都很大。针对于这一问题,我们提出了三级矢量量化的方法,从而可以把MLP的码率降到2.1kbps左右,仍有较好的合成语音质量本文最后在 MATLAB编程环境下对歴LP算法及其改进后的MELP算法进行了仿真,仿真结果表明经过解码后的语音信号及其改进后语音信号的输岀波形与原始语音信号的波形很相似,只是在能量较大的浊音段合成语音波形有相对较大的幅度以及有一定的时延,从而验证了该算法的可行性4.期刊论文修其丽. XIU Q1-1ⅰ多脉冲激励线性预测声码器设计与 Matlab仿真-烟台职业学院学报2006,12(3)由于在多脉冲激励线性预测声码器中要一次得到所有脉冲的位置和幅度是非常困难的,因此次优的序贯搜索方法被采用,即一次得到一个脉冲.用Matlab仿真观察合成语音效果是可以接受的5.学位论文杜志鑫基于MELP低速率语音编码2008作为低速率语音编码的一种重要算法,MELP( mixed excitation linear prediction)算法是其中一种非常优秀的编码方法,它在原有的LPC( linearprediction coder)编码的基础上,结合混合激励、多带激励、线性预测、矢量量化以及原型波形内插等编码方法的诸多优点,采用了一种新的更为符合人发音机制的语音生成模型来合成语音,并运用自适应频谱増强等技术,提髙合成语音与原始语音的匹配度,从而较好的实现了低码率的语音编码本论文通过研究MELP的语音编解码算法的原理,对它的编解码过程作了比较深入的研究,对其中的一些公式进行了理论推导,并作了仿真分析,最后研究了该算法的 MATLAB语言实现。在对混合激励(MELP)算法进行了深入研究后,在本文最后选取一种800bit/s的语音编码方案。6.期刊论文龙银东.刘宇红.敬岚.乔卫民. LONG YINDONG. LIU YUHONG. JING LAN. QIAO WEIMIN在 MATLAB环境下实现的语音识别-微计算机信息2007,23(34)介绍了一种基于 MATLAB的多个特定人连接词语音识别的方法,并提出了在进行端点检测时,引入平均的概念能进一步提高识别率.此设计是以LPC系数、DIw算法为核心的基于图形界面的设计.通过大量的实验测试,表明该方法基本达到屏蔽外界环境的影响,具有非常高的精度识别7.学位论文赖长庆混合激励线性预测声码器算法的研究2003该文以美国联邦标准2.4 kbps--MELP算法为基础,在 MATLAB上建立起了分析MELP算法的软件平台,对其性能进行了分析并提出了一些改进的建议;另外还针对MELP算法的特点对其软硬件实现进行了探讨.该文的第二章介绍了MELP声码器模型的原理,对其特征进行了详细的阐述,重点分析了各个特征的本质及其能够对提高合成语音质量起到的作用.第三章详细介绍了MELP声码器的基本算法,对其中采用的一些先进的技术手段如多级矢量量化(MSVQ)、高分辨率基音检测方法( SRPDA)等进行了重点的讲述.另外还对MLP声码器中使用的一些技术进行了实验分析,检验其效能.第四章利用在 MATLAB上搭建的分析平台上对语音信号进行了编解码的试验,分析了歴LP声码器的各种特征在语音编码中起到的作用.最后针对MLP声码器的特点,对其软硬件实现提岀了建议8.学位论文刘斌 HYBRID- MELP/CELP语音压缩编码算法的研究2005语音压缩编码技术是信号处理技术的一个重要的组成部分,它使用了信号处理领域大量从基础性到前沿性的思想、理论和实践方法.作为信号处理的主流学科之一,它的发展也一直是信号处理技术发展的重要促进力量.当今语音压缩编码算法主要分为侧重于对谱参数编码和侧重于对时间波形编码的两个大的算法类型.混合激励线性预测MEP编码算法和码激励线性预测CELP编码算法是这两大类算法的主要代表.MLP算法的主要特点是使用了多帶淸浊音判决,并且根据各频帶淸浊音的相对强度将清音成分和浊音成分按比例混合起来产生线性预测激励,其中的浊音激励成分采用傅立叶谱幅度的方法来表示CELP算法的主要特点是不区分语音信号的清浊音类型,而是统一使用基于AbS原理的时域波形匹配方法来产生线性预测激励,且该激励信号通过矢量码本来表示.本文讨论了MELP和CELP算法的原理和具体实现方法,并且基于 Matlab,主要是基于其 Simulink工具对两种算法进行了仿真实现针对MELP算法中基音提取相对繁琐的特点,本文提出了一种简化的MELP基音提取算法9.期刊论文纪友芳.刘桂斌. JI You-fang. LIU Gui-bin一种改进的线性预测语音编码技术及实现-计算机工程与应用2009,45(15)线性预测编码是实现语音编码的一项重要技术,介绍了线性预测编码技术的实现,提岀一种改进型的声激励线性预测语音编码方法.最后,将简单LPC语音编码与声激励LPC语音编码进行比较.实验结果表明,该方法能够很好地实现语音编码,声音效果也比简单LPC更理想.10.学位论文巫洪伟4kb/s代数码本激励线性预测语音编码的算法研究2007随着通信技术以及互联网语音实时传输技术的迅速发展,对语音的传输速率和存储容量都提岀了很高的要求,解决这些问题的主要途径之一就是语音编码码本激励线性预测(CELP)是国际公认的中速率下最成功语音编码算法,CELP算法能够提供中速率髙质量的合成语音,但是当编码速率降至4kb/s以下时语音质量明显下降。为了提高量化效率,必须増加激励矢量的长度,这时还用很少的符号脉冲来描述激励信号就会导致语音质量的急剧下降,这也就是传统的CELP算法在4kb/s编码速率以下质量难以提高的根本原因为此本文主要致力于研究在较少比特情况下优化代数码本激励,在G729算法的基础上,以20ms为一语音帧进行编解码,使传输速率降为G729语音编码算法的一半,从而提岀了一种具有较短延时和较低运算量的4kb/s脉冲散布代数码本激励线性预测算法。首先,根据G729算法的固定码本代数结构,设计了一种新的固定码书的代数结构,以降低算法的复杂度。然后,引进脉冲散布技术,对固定码本矢量进行散布处理,设计截止频率为3400Hz的有限冲击响应(FIR)低通滤波器实现脉冲散布技术本文最后在 MATLAB编程环境下仿真算法的性能,仿真结果表明经过解码后的语音信号输岀的波形与原始语音信号的输入波形很相似,只是在能量较小的清音段合成语音波形有相对较大的幅度以及有一定的时延,从而验证了算法的技术性能。文献(1条)1.雷翔霄.徐立娟智能软化击穿仪温控系统的设计与实现[期刊论文]现代电子技术2010(1本文链接http://d.g.wanfangdata.comcn/periodiCalxddzjs200907041.aspx授权使用:国防科技大学( gfk jdx),授权号:0e40ddb5-a6ff-4c0d-b44-9ec012765bf下载时间:2010年9月9日
- 2021-05-06下载
- 积分:1
linux-selinux功能及源码分析
该书详细介绍了linux中关于selinux部分功能的实现流程和关键代码分析7.1.1.3基于创建者SID的文件系统.,,7.1.2 Gcncralizcd Sccurity Context labeling,,,,637.1.4 Mount-Point labeling667.1.5 Initial SId87.1.5.1 Initia1SID和 Initial sc的定义7.1.5.2 Initia1SID和 Initial sc的写出和解析707.1.5.3 Initia1SID和 Initia1SC的使用717.1.6进程创建的内核数拥结构的标签727.2何时需要为应用程序开发pp?●··垂·看垂723设计pp的一般过程7.4为vock程序编写v1ock.pp●垂春·垂767.4.1第一阶段:定义基本的te,fc和.if文件767.4.2第二阶段:根据 AVC Denied msg补充相应的规则807.4.3第三阶段:使用 don audit规则屏蔽与冗余操作枓关的错误信息7.4.4其他注意事项87.5为 samhain程序编写 samhain.pp..857.5.1第一阶段:定义基本的.te,,fc和.if文件事垂垂7.5.2第二阶段:根据 AVC Denied msg补充相应的规则07.5.3第三阶段:使用 don audi t规则屏蔽与冗余操作相关的错误信息927.5.4图解:使用 samhain时的 Domain transition过程春春鲁看D垂垂春,,937.6使用 SLIDE来开发pp,分析 SELinux源代码.7.7编写pp时的注意事项中垂鲁鲁··●,,,,,,,,,,,948. SELinux问题分析步骤总结.8.1排除DAC权限的问题,,,968.2检查用户当前所扮演的角色963分析 AvC Denied message: Target的标签正确吗?,8.4在系统启动过程中适时地修复错误的文件标签97应用程序的实际行为要和其pp的假设相一致,,,,988.6明确相应 domain所缺少的权限8.7其他注意事项8.7.1在 Permissive模式卜调试,998.7.2取消所有的 dontaudit规则.8.7.3当心 MLS Constraints1008.7.4检査 SeLinux- aware应用程序的配置和编译选项,.1018.7.5积极地和社区交互.1018.7.6使用 strace直接定位失败的系统调用(重要!).………1028.8 selinux问题分析过程和方法举例( Revisited),,1028.8.1实例一:用户无法在 console上正常登录-使用 strace定位失败操作1028.8.2实例二: sysadm r无法正确使用 useradd命令108SELinux开发笔记.…,,1149.1使能对/dev/ console的支持1149.1.1提出问题:20101213及之前的 epolicy缺乏对 conso1e的支持9.1.2分析问题··p9.1.3解决问题.1169.1.4测试结果1179.1.5使用 strace观察 consolo被重新打标签的细节(new),,,,1179.2 Socket labeling开发,1189.2.1提出问题: socket默认继承其创建者的SID的副作用,,,,,1189.2.2分析问题1199.2.3解决问题1199.2.4测试结果.,.1239.3给 role transition规则添加c1ass的支持,,..,,1249.3.1提出问题-当前 role transition规则只对 process类有效,,1249.3.2分析问题..,,,,,.1249.3.3解决问题D垂垂垂,,,,,1259.3.4测试结果,,,,,1319.3.5其他说明.1339.3.6经验总结●非春…1359.4增加 role attribute的攴持(new).,,,1369.4.1提出问题之一:roe- dominance规则的局限性1369.4.2提出问题之二:期望的 role attribute使用模型..1409.4.3分析问题1429.4.4解决问题D1439.4.5测试结果639.4.6一个有意思的编译问题,,,,1689.4.7有关role- types规则语法的讨论.,,.1719.5区分 tuna1e和 boolean(new).···1729.5.1提出问题无用的 tunable分支被写入 policy.X.729.5.2分析问题1739.5.3解决问题,,1749.5.4测试结果.1879.5.5其他经验总结9.N在策略中指定 newcontext的缺省设置方法(todo)1929.N.Ⅰ提出问颋- newconteκt的设置策略被硬编码到机制中19210. SeLinux内核驱动分析小记19410.1LSM核心数据结构及相应回调函数,19410.2 sELinux核心数据结构.19410.2.1 selinux对内核数据结构的扩展19410.2.1.1进程的安全属性19510.2.1.2文件和打开文件描逋符的安全属性.,,.,,,,,,..19510.2.1.3 socket的安全属性10.2.1.4文件系统超级块的安全属性1960.2,2AVC数据结构.19710.2.3內核 policy中保存TE规则的数据结构.,19910.2.4內核 policy中保存RBAC规则的数据结构.鲁鲁,,,,,20010.2.5 SeLinux规则在内核中的检查点总结(new)..,,,,,,20110.3情景分析:打开文件时的相关函数调用链20110.4通过 SEL inuxfs访问内核 Security Server,,,,,,,,,,,,,,20810.4.1/ selinux/load和1 oad policy命令一装载冰解析 policy.二进制文件20910.4.2/sc1inux/ relate1及 compute relabel命令-查询 type change规则21110.4.3/ selinux/ create及 compute create命令-查询type_ transition规则21110.4.4/ selinux/ member及 compute member命令-查询 type member规则.21210.4.5/ selinux/ access文件和 compute av命令-查询a11ow规则...21310.4.6/ selinux/user文件和 compute_user命令-查询用户登录后可能的SC21310.4.7/ selinux/ initial contexts/-查询 Initia1SI对应的安全上下文21410.4.8/ selinux/ class/-查询内核 class datum数拥结构(todo10.5情景分析: Domain transition的实现●··垂·看垂,,,,,,,,,,,,,,,,,,,,,21510.5.1 selinux setprocattr凼数-/proc/lpid/attr/“文件驱动21610.5.2 do execve的行为和相关 seLinux内核驱动垂垂看21810.6情景分析:文件系统的挂载和新文件的创建2110.6.1文件系统的挂载过程(new)..22110.6,2确定新创建文件的标签...23610.7 Context数据结构和u32sid之间的映射24110.7.1 sidtab node的定义和 sidtab的组织结构.24110.7.2 sidra_ insert函数- sidtab node的插入·,,,,,,,,,,,,,,24210.7.3 sidtab context to sid函数返回或分配sid..24310.7.4 security transition sid函数-计算新 subject/ object的sid....24410.7.5创建 context并注册到 sidtab以获得sid的时机.24910.7.6 security context to sid函数返回Sc字符对应的sid....25010.7.7 sidtab scarch corc囪数- sidtab node的查找,,,25110.7.8 security sid to context core函数-返回sid所对应的SC宇符串25210.8 Class Mapping..25410.8,1C1 ass mapping的作用..,,,,,25410.8,2 Class Mapping的创建垂垂垂·,,,,,,,,,,,,,,,,25410.8.3 Class mapping的使用-c1ass/perm内核态和用户态索引的转换.25710.8,4增加 class或者权限的方法25810.9和文件操作相关的回调数9. 1 selinux file mprotect回调函数25910.10和 AF UNIX SOCket相关的回调函数(todo),26310.11和程序执行相关的操作(todo).26410.11.1se1 inux bprm secureexec凼数-扩展 AT SECURE机制26410.11.1.1C库 AT SECURE机制介绍26410.11.1.2C库 AT SECURE机制演示26710.11.1.3 SELinux对 AT SECURE机制的扩展( Revisited).26911.用户态应用程序对 SeLinux的支持27211.11 selinux相关文件分析,27211.1.1 selinux config,c文件.,,27211.1.2 gelfilecon.c文件,,,,,27211.1.3 procattr.c文件.27211.1.4 compute relate1.c文件(访问/ selinux/ relate1)..27311.2 newrole源代码分析,27411.2.0 newrole命令的使用模型2742.1main函数7311.2.2 parse command linc arguments函数.,,,27611.2.3 relabel tty函数2761.3PAM模块分析..,27711.3.1 pam sC1inux.so作用分析(TODO27711.3.2pam1 oginuid,so作用分析,27811.3.3 pam name space.so作用分析.,27911.3.3.1多态( polyinstantiation)的作用,,,,,,,,,,,27911.3.3.2LSP对多态的配置,,,,,,,,,,,,,,28111.3.3.3 SELinux对 polyinstantiation的支持.,,,,28111.3.3.4解决在使能多态后 crond的使用间题28211.3.3.5 pam namespace,so源代码分析(IODO11.3.3.6有关 pam namespace.so的剩余问题8412. refpolicy的编译,链接,扩展,,,,,,,,,28512.1描朮标识符的数据结构8512.1.1 type datum t8512.1.2 common datum t12.1.3c1 ass datum t.,,,,,.,,,,.28612.1.4ro1 e datum t..,,,,,,曲D,.,28712.2描朮规则的数据结构..28812.2.1 AVTAB AV和 AVTAB TYPE类规则..,,,,28812.2.2 rolc transition规则●·垂,,,,,,,,,,,,,,,,,29012.3用户态 policy t数据结构分析.12.3.1 policy t数据结构综诚29012.3.2 symtab符号表.29412.3.3 avrule block t, avrule decl t FH scope stack t12.3.4 scope datum t-描迒标识符的定义者和使用者29712.3.5 scope index t-描逋一个b1ock/dec1内定义或引用的标识符.29712.3.6 cond node t-描朮一个ir- else conditiona29812.4 module的编译- checkmodu1e..30112.4.1编译过程核心数拥结构关系图30112.4.2 define policy- policy module词法分析....30212.4.3 begin optional- optional_ policy词法分析30412.4.4 declare type-type标识符的定义,,30312.4.5 require type-声明对type标识符的外部依赖31512.4.6 define te_ arab-TE规则的词法分析..31812.4.7 define role_ trans- role transition规则的词法分析32412.4.8 define conditional-if- else conditiona1的词法分析.2912.5 module的链接- semodule1ink.12.5.1链接过程核心数据结构关系图34012.5.2 symtab符号表的拷贝...,,,,,,34112.5.2.1 p types符号表的拷贝,,..34112.5.2.2所有其他标识符符号表的拷贝,,,,,,,,,,,,,,34412.5.2.3 p roles符号表的修正12.5.3 Scope符号表的拷贝34912.5.4链接过程的主要囪数调用链12.6 module的扩展- semodule_ expand37012.6.1 expand过程核心数据结构关系图..37012.6.2type的拷贝..37112.6.3 common的拷贝,,,37412.6.10 expand过程的核心函数调用链,.,,,37612.6.11展开规则的“字面”描诚- copy and expand avrule block囪数..38312.71ink和 expand过程的图解(new),,,,,,,,40012.7.1Role/ attribute标识符的1ink和 expand..…………40012.7.2 symtab的1ink和 expand,,,,,,403128规则中的m4宏定义(new)..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,40513. seLinux的应用41013. 1 Labeled Networking (half-baked),,,,,,,,,,,,,,,,,,,,,,,41013.1.1 IPsec简介,,,,,41013.1.2 seLinux对本地网络的控制( compat-net),,,,,,。,,,,,,,41613.1.3用 Labeled ipsec实现分布式网络控制..41713.1.4 Linux內核ⅹIM相关数据结构.41813.1.5和 IPsec相关的类,权限和援囗D41813.1.6LSM中和 Labeled ipsec相关的回调函数,41913.1.6.1检查一个f1ow(发送或接收)能否使用一个SPD条目41913.1.6,2给SPD/SAD分配安全属性.,,,42113.1.6.3释放SPD/SAD中的安全属性,,,,,,,,,,,,,,,.42413.1.6.5逐包检查一个 socket能够接收一个skb42413.1.6,4获取发送方的安全上下文字符串..,,4231.7 Labeled ipsec环境的搭建.13.1.8观察 Labeled ipsec的行为43013.1.9和 Labeled ipscc相关的 SeLinux规则,432参考文献434简化 selinux操作的bash配置方法本文档各个版本的说明437注第1至5章包含自己对《 SELinux By example》一书的学习心得;第6至9章包含自己实际经验的总结第10和11章为 selinux内核和用户态源代码分析总结第12章为 refpolicy的编译过程源代码情景分析;第13章打算收录些 SeLinux在内核或者用户态的应用,比如 Labeled Networking,XACl等。l, Refpolicy有300+个p的实现,了解核心pp的实现,必须首先了解应用程序的行为以及安全目标2,阅读 sELinux- aware应用程序源代码,看如何使用 libselinux库函数,学习 sELinux用户态编程3,了解 sELinux语法,标识符的二进制表示形式,内核态和用户态的数据结构;4,学习 policy module的 compile/ expansion/1ink过程5,按照类别,逐步掌握LSM回调囪数的调用时机,所在内核子系统的原理,以及 SELinux对LSM回调函数的实现(参考《 Implementing sElinux as a lsm module》一文)6,掌握 seLinux对各个内核子系统核心数据结构的扩展7,学习XAC规范,体会如何开发 Userspace Ob、 ject Manager;8,积极阅读 Joshua,Dan等人的b1og,向前奉们学与。9,积极关注 selinux邮件列表上的问答和讨论,丰富自己的视野希望能通过自己坚持不懈的努力,证得同满的 sELinκ知识和智慧。引子1,软件的缺陷不可避免(无论过去,现在,或将来);2,没有底层操作系统的支持就无法真正实现上层软件的安全性D. Baker,《 Fortresses Built Upon Sand》操作系统中访问控制模型的演化1.1访问控制模型的概念( Reference moni tor)subjectsAccessobjectsAlertYes or No?Feference validation MechanismRuleelampcrpra吋DBVerifiableRY M由上图可见,访问控制模型由如下四部分组成1, Subjects:访间的发起者,比如系统中的进程2, Objects:被访闩的对象,比如架作系统所管理的仼何资源丶数捃(包拈进程,任意类型文件,Tc尸端口,甚至单个网络报文。总而言之,任何内核数据结构都可能成为被访问的对象)3, Rules de:规则库,在用户态实现的访问策略,定义 Object的属性并规定哪些Sub、ect可以通过什么样的方式对它进行访问;4,RVM( Reference validation mechanism):在操作系统内实现的机制,是汸问控制策略的执行者,在访问操作过程中根据规则库判断当前操作是否合法;Hinx首先需要标识访问者和被访问的对象,由下文可知相关信息保存在进程的 task struct以及其他内核数据结构中 security指针所指向的数据结构中(注意这些数据结构都是运行时动态创建的,安全属性信息来源于文件在辅存上的扩展属性,以及规则库中的 Initia1S1定义等)。白用户态定义的访问规则库指定哪些访闩老能够以何种方弌访问哪些对象,而内核屮的SεLix机制则根据当前操作的访问者和被访问对象,查询规则库得到Yes/No结论。1.2DAC( Discretionary Access Contro1)的致命伤¨ discretionary”一词的含义为“ not contro1 led bv strict rules, but decided on by someonein a position of authority”,所以DAc的本质是由文件的属主定义其它用户对该文件的许可访问方式,其“ owner-group-wor ld”模型如下:S 1s -1 /usr/bin/passwdrwsr-xr-x I rootroot 37084 2009-04-04 13: 49/usr/bin/passwd系统中所有文件属主给各自文件所定义的“ owner-group-wor d”模型的总和,即为DAC下访问规则库的实现。DAC的开发环境(相对封闭的开发社区,或大学实验室)和对软件使用环境的假设(软件没有缺陷且运行环境友好)注定了DAC存在着天生缺陷:进程和文件的安全属性都基于(且总是基于)uid/euid和gid/egid,无论进程执行什么应用程序,其uid/euid都不改变(暂不考虑 setuid类程序),无法将进程所执行程序的行为和可靠性(安全性)标识到进程的安全属性中,导致操作系统无法有针对性地对进程施加访问控制比如,用户登录 shell进程会创建子进程以执行shel1的外部命令,子进程继承父进程的uid/gid,所以无法通过uid/gid来区分父子进程,即无法区分用户人为的操作和通过程序执行的操作。比如,无法限制 passwd程序只能被用户在命令行执行,而不能被属于该用户的其它进程执行。显然,“用户(登录hc11进程)是可信的”绝对不等于“用户执行的程序(后继fork的子进程)也是可信的”。登录sh1进程的行为由用户有意识地支配,而属于该用户的进程的行为则由其执行的实际程序决定。但是程序可能冇在安全漏洞,一巨被攻击植入恶意代码,黑客将具有该用户在系统上的所有权力(比如恶意删除用户的文件,盗取uid/gid所能读取的文件的内容,执行 passwd程序修改用户的密码)另外,用户进程可以执行各种应用程序,而这些程序自身的行为丶对系统安仝性的景响都不尽相同,比如网络类应用程序更容易受到外界病毒的攻击,相应地操作系统应该对此类应用施加更为严格的访冋控制。显然无法通过进程的uid/gid来描当前进程所执行的程序的安全性,因此操作系统也无法有针对性地实施访问控制。综上所逋,仪将uid/gid来作为进程和文件的安全属性是远远不够的最后,DAC的另一个缺点是对权力的管理和划分不够细致(只有两种情况:root或non-root),无法进步细分丶限制root用户的能力。一旦euid/ egid为0的进稈被攻破,将危害整个系统的安全1.3MAC( Mandatory access Contro1)的起源针对DAC的缺点,在ⅥAC中不再由访问对象的属主定义不同用户对其的许可访问方式,而是由匿定的规则库决定。MAC最初的研究由美国军方的MLS(u1ti- Leve1 Security)应用所推动,它将访问主体和被访问对象分成不同的安全级别,严格控制信息只能从低安全级别向高安全级别流动:低安全级别的丰体只能向高安全性的数捃对象中追加新的数据,并∏禁上读取;高安全级别的主体能够读取低安全级别的数据,并且禁止任何形式的写入(即“ no read up, no write down”)ⅥS只定位于数据保密性而并不关心数据完整性和最小权能原则( east, Privilege),以及对进程的能力进行分类。后来的FASK安全系统模型着眼于解决这些不足,而 SELinux则是FASK在 Linux内核中的实现1.4 Selinux的TE( Type Enforcement)模型SELinux作为MAC的一和实现,通过中央规则库( policy.x,二进制数据文件)给所有进程丶所有文件内核数据结构定义各自的安全标识(标签,1abel/type),明碓定义被访问对象所支持的访问方式,并规定进程标签对被访问对象的合法的访问方式。在配置 SELinux时给整个文件系统上的所有文件设置标签,在系统启动过程中init进程经由 selinux接口装载 policy.X到內核空间,由內核中的 SecuritvServer在处理用户态系统调用时实时査询(注,这里所说的“ Security server”,即为 sELinux内核驱动中定义的各种数据结构,比如 sistah, policy, AVC cache,以及在 services.c文件中定义的各种以“ security”开头的函数)
- 2020-12-04下载
- 积分:1