数据校验是在mac电机控制器校验失败还是在内核

苹果把iOS 10内核给开放了 是福还是祸?
中关村在线
作者:中关村在线
据外媒报道,苹果在上周,向开发者发布了预览版iOS&10。有趣的是,这次苹果并没有对iOS&10的内核进行加密。苹果这样做可能是为了方便安全研究人员标识,但也可能会被黑客利用的漏洞。
苹果把iOS&10内核给开放了(图片来自baidu)
报道指出,苹果此举可能会被&越狱者&利用。越狱者就是那些利用程序代码来解除操作系统限制,使之可以兼容更多软件的人。与许多科技公司不同的是,苹果现在并没有推出&捉虫赏金&计划,鼓励安全研究人员向其汇报漏洞。一名安全研究人员暗示称,苹果现在推出捉虫赏金可能是一个好主意。
&如果苹果有意开放它的源代码,那么它需要确保其代码经过了安全研究人员的彻底检测。而且,对于研究人员发现和修复的漏洞,该公司还必须做出积极的回应。&网络安全公司Pen&Test&Partners的肯-蒙罗(Ken&Munro)说。
&捉虫赏金计划可以让每个人都兴奋起来。整个安全社区将会以相对较低的价格为苹果效力。&他补充说。
截止目前,苹果尚未对此发表评论。
官方微博/微信
每日头条、业界资讯、热点资讯、八卦爆料,全天跟踪微博播报。各种爆料、内幕、花边、资讯一网打尽。百万互联网粉丝互动参与,TechWeb官方微博期待您的关注。
↑扫描二维码
想在手机上看科技资讯和科技八卦吗?想第一时间看独家爆料和深度报道吗?请关注TechWeb官方微信公众帐号:1.用手机扫左侧二维码;2.在添加朋友里,搜索关注TechWeb。
iOS10内核开放
相关的资讯有:
iOS10内核开放
相关的博文有:
对于iPhone 8,目前最新的传言是,苹果放弃了指纹识别。虽然郭明池仅仅表示,iPhone 8...
今天是7月14日,小米6全新的配色亮白色版将在今天正式开卖从小米官网公布的最新消息来...
尽管遭遇销量滑坡,表现不及去年同期的S7,但毫无疑问,三星Galaxy S8依然是今年上半...
北京时间7月13日晚间消息,Uber和俄罗斯搜索引擎Yandex今日宣布,双方将合并其在俄罗...
Hyperloop One公司的工程师很快就要针对超级高铁展开关键测试了。这项最早由特斯拉CEO...
苹果芯片代工商台积电公布了公司未经审计的2017年第二季度财报。财报显示,台积电第二...
foobar2000是一款Windows平台下的高级音频播放器,包含了一些播放增益支持、低内存占...
今天下午,武汉市上线支付宝扫码乘公交车功能,无现金城市再进一步。据悉,武汉公交公...
在上周的体验版更新中,小米为MIUI加入了“全新的应用启动/退出动画”,如果不出意外...
阴阳师夏日祭新装情报:四位大人已经迫不及待地换上了夏日祭新装赶赴京都夏夜的花火之......
暖暖环游世界四周年庆典即将开启!同步页游新套装推出,下面就为大家带来暖暖环游世界......
帅气又强力的男偃师登场后备受好评,如今,天工阁的第二位角色——女偃师阮烟罗也将隆......
夜雾迷城活动2月22日5:00—2月28日23:59,本次活动新增套装黎明之冠新月之吻,下面为......
Copyright (C)
All rights reserved.
请选择一张图片分享
要转发到新浪微博,请
要转发到QQ空间,请新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
家境小康, 积分 1439, 距离下一级还需 561 积分
论坛徽章:0
我想用wireshark或者tcpdump等工具抓去网络数据包之后,用wireshark分析MAC层 (或者 数据链路层)的数据包,看是否有错误的包的(比如CRC错误)
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
大富大贵, 积分 12329, 距离下一级还需 7671 积分
论坛徽章:16
家境小康, 积分 1439, 距离下一级还需 561 积分
论坛徽章:0
[@]wenhq[/@谢谢您的回复,还请问一下,我知道在TCP有checksum 可以检查该数据包是否正确,您说可以检查出链路层数据包的CRC错误与否,我不知道链路层相关的标识在那里&&
家境小康, 积分 1439, 距离下一级还需 561 积分
论坛徽章:0
22222.png (70.8 KB, 下载次数: 3)
21:22 上传
图中 显示wireshark抓去的数据包的样图 我看到了 tcp相关的checksum 但是链路层的不知道
论坛徽章:36
我个人觉得 CRC 的校验应该是网卡来做的,如果出现 CRC 校验错误的话,应该丢包了。
pcap 能抓到的报文,应该是通过 CRC 校验的。而且抓的报文中已经不包含 CRC 的字节了。
wireshark 可以显示 IP 和 TCP/UDP 校验和的正确与否。
家境小康, 积分 1154, 距离下一级还需 846 积分
论坛徽章:0
Godbach 发表于
回复 1# SCDXMOE
我个人觉得 CRC 的校验应该是网卡来做的,如果出现 CRC 校验错误的话,应该丢包了。
好像是版主说的,这样的
上次随便看一个网卡驱动,好像对应芯片手册里边会要求驱动处理
mac前边的4位,里边好像就有链路层的crc
家境小康, 积分 1154, 距离下一级还需 846 积分
论坛徽章:0
kkddkkdd11 发表于
好像是版主说的,这样的
上次随便看一个网卡驱动,好像对应芯片手册里边会要求驱动处理
mac前边的4位 ...
图片 前面8个字节 我记错了 不是4位 呵呵
论坛徽章:36
kkddkkdd11
嗯,前导字节用来确定一个 frame 的开始,最后的 CRC 校验数据是否正确。没问题的话,就是一个完整的 frame,交给上层。
家境小康, 积分 1439, 距离下一级还需 561 积分
论坛徽章:0
[@]kkddkkdd11[/@:green:] 谢谢您们 受教 了&&
白手起家, 积分 23, 距离下一级还需 177 积分
论坛徽章:0
学习了。谢谢分享。
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处你要先了解清楚MAC层需要做一些什么工作
收方向有去掉前导码,FCS
发方向有插入FCS和前导码,包括调整包间隔
还有一些计数的功能
transciver是在mac模块之前的,这个不用你自己亲手写,但是得会调用,多看看文档了。
UID915216&帖子5&精华0&积分73&资产73 信元&发贴收入25 信元&推广收入0 信元&附件收入0 信元&下载支出2 信元&阅读权限10&在线时间6 小时&注册时间&最后登录&
MAC内核通常把CRC校验,间隔调整都加进去了。xilinx的MAC核输出接口格式是固定的,用RAM或者FIFO这些都是基本的,了解了原理没有什么。MII接口和PHY芯片直接连接就行了,注意下端口时序
UID858389&帖子75&精华0&积分3604&资产3604 信元&发贴收入460 信元&推广收入66 信元&附件收入1721 信元&下载支出1316 信元&阅读权限50&在线时间267 小时&注册时间&最后登录&
& & 你好,十分感谢你!你的意思是只要把数据帧的前导,fcs,和其它长度/类型,sa/da去掉;留下数据输入到ram里面,这就是解码。然后还要计算下数据地址,因为我要使用的内核Memory Generator v4.3,有没有好一些的存储内核呢。
还有的话,控制帧的控制流量功能是不是在mac内核里就实现了。那就不用写了。
做个有心人
UID286778&帖子280&精华0&积分76&资产76 信元&发贴收入1460 信元&推广收入0 信元&附件收入806 信元&下载支出4169 信元&阅读权限10&在线时间940 小时&注册时间&最后登录&
流量控制是在MAC实现的,不是在PHY,这个需要搞清楚,你可以看下altera的文档,讲的还行,但是不太细,容易懂,
UID39727&帖子23&精华0&积分27&资产27 信元&发贴收入135 信元&推广收入0 信元&附件收入0 信元&下载支出158 信元&阅读权限10&在线时间21 小时&注册时间&最后登录&
看MAC core 接收或者发送数据的时序。根据控制信号将数据放在FPGA内部缓存中
UID238914&帖子218&精华0&积分1553&资产1553 信元&发贴收入1105 信元&推广收入0 信元&附件收入331 信元&下载支出4173 信元&阅读权限30&在线时间276 小时&注册时间&最后登录&
流控帧是在生成IP CORE里面自己选的,如果需要就enable。
你写的这个东东我写过,写完你就会觉得很简单的。检测先收到包的DMAC,看跟你本地配置的是不是一样的,不一样就把包扔了不要。防止收到网上的广播包等杂包,会悲剧的。然后根据你用的是裸MAC协议还是带IP头或者带UDP头的包,把PAYLOAD,就是包的数据提出来。CRC 就是FCS 要不要检测随便你,嫌麻烦就偷懒不要吧。
然后你看下后级处理的需要,数据位宽是多少,转换一下,以便适配。记得输出要给一个data_valid信号给别人,不要别人要骂娘的。
至于用RAM还是FIFO,接收端看你自己心情了,都可以,没有好坏之分。发送端,如果你要发送数据出去的话,比较麻烦一点,最好用RAM。我当时用的是RAM控制的。
[通过 QQ、MSN 分享给朋友]
邀您参加NB-IoT芯片及应用设计和测试为主的技术研讨会(北京)(免费)博客访问: 192625
博文数量: 22
博客积分: 250
博客等级: 一等列兵
技术积分: 825
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: BSD
&&& 上一篇讲了如何创建一个网络监控程序,通过这个实例介绍了如何进行Mac OS内核开发,这一篇将介绍一种在用户层控制内核扩展模块的方法,特殊的Socket通讯。利用socket控制内核模块确实是一个非常简介而且不错的方式,当然如果你以前学习过linux内核开发,那么你肯定最先想到的是写个字符驱动程序来实现这个功能,事实上在Mac OS上利用字符驱动也是可以实现的,但是我们今天介绍的这个方法似乎更简单。1.内核控制和通知简介
&&& 为了支持用socket的方式来达到内核和用户程序通讯,Mac OS X提供了一个全新的域 –& PF_SYSTEM域,通过这个域可以让用户去配置或者控制一个内核扩展程序。PF_SYSTEM域依次提供了两种协议:SYSPROTO_CONTROL和SYSPROTO_EVENT。Important Network kernel extensions cannot be controlled or programmatically loaded from sandboxed applications.
&&& 内核控制API,使用的就是SYSPROTO_CONTROL协议,提供接口允许应用程序去配置和控制内核扩展程序;
&&& 内核事件API,使用的就是SYSPROTO_EVENT协议,提供接口允许应用程序或者其他内核模块被告知当有确切的内核事件发生时。一般应用在有多客户端需要知道某个内核事件发生的情况下,其设计的意图不是为了针对点对点的通讯,通常当需要双向通讯的时候使用内核控制的方式更合适。
2.在内核扩展模块中支持内核控制API
&&& 内核控制API是在用户空间应用程序和KEXT之间的双向通讯结构,让内核扩展模块支持内核控制相对来说是很简单的(relatively straightforward)。必须在KEXT的开始函数中调用ctl_register函数,注册一个kern_ctl_reg结构。ctl_register函数定义在&sys/kern_control.h&中,原型如下
int ctl_register(struct kern_ctl_reg *userctl, kern_ctl_ref *ctlref);
函数说明如下:Parameters
&&& A structure defining the
kernel control to be attached. The ctl_connect callback must be
specified, the other callbacks are optional. If ctl_connect is set to
zero, ctl_register fails with the error code EINVAL.
Upon successful return, the kctlref will contain a reference to the
attached kernel control. This reference is used to unregister the kernel
control. This reference will also be passed in to the callbacks each
time they are called.
Return Value
0 - Kernel control
was registered. EINVAL - The registration structure was not valid.
ENOMEM - There was insufficient memory. EEXIST - A controller with that
id/unit is already registered.
Discussion
Register a kernel control. This will enable clients to connect to the kernel control using a PF_SYSTEM socket. &
struct kern_ctl_reg说明如下:
Fields ctl_name
A Bundle ID string of up to MAX_KCTL_NAME bytes (including the ending zero). This string should not be empty.
The control ID may be dynamically assigned or it can be a 32-bit creator code assigned by DTS. For a DTS assigned creator code the CTL_FLAG_REG_ID_UNIT flag must be set. For a dynamically assigned control ID, do not set the CTL_FLAG_REG_ID_UNIT flag. The value of the dynamically assigned control ID is set to this field when the registration succeeds.
A separate unit number to register multiple units that share the same control ID with DTS assigned creator code when the CTL_FLAG_REG_ID_UNIT flag is set. This field is ignored for a dynamically assigned control ID.
CTL_FLAG_PRIVILEGED and/or CTL_FLAG_REG_ID_UNIT.
ctl_sendsize
Override the default send size. If set to zero, the default send size will be used, and this default value is set to this field to be retrieved by the caller.
ctl_recvsize
Override the default receive size. If set to zero, the default receive size will be used, and this default value is set to this field to be retrieved by the caller.
ctl_connect
Specify the function to be called whenever a client connects to the kernel control. This field must be specified.
ctl_disconnect
Specify a function to be called whenever a client disconnects from the kernel control.
Specify a function to handle data send from the client to the kernel control.
ctl_setopt
Specify a function to handle set socket option operations for the kernel control.
ctl_getopt
Specify a function to handle get socket option operations for the kernel control.
Discussion
This structure defines the properties of a kernel control being registered.需要特别说明的是,在kern_ctl_reg结构中用了ctl_name,ctl_id,ctl_unit三个字段来描述这个控件的唯一标识,其中前两者ctl_id, ctl_name 能够在多个控件中被共享使用.真正唯一的与相关控件一一对应的标识是ctl_unit。一个控件允许用同一个ctl_id多次注册,但是在不同的实例中必须使用不同的ctl_unit标识,对于自动分配的控件唯一标识,这个域的值将会自动填充。
Note:& You may use either a registered Creator ID (available from the Apple Developer Creator ID web page at ) or you may use a dynamically-assigned ID.
It is strongly recommended that you use a dynamically-assigned ID. This is the default behavior. In that case, the memory referenced by the ctl_id field will be overwritten with the dynamically-generated ID value when
If you need to use a registered ID, you must set the CTL_FLAG_REG_ID_UNIT flag in ctl_flags. If this flag is set, the value of ctl_name will be ignored.
当函数成功返回,第二个参数 ctlref将会包含一个引用指向这个已注册的内核控件.这个引用必须用于取消注册这个控件, 并且将作为参数贯穿在许多回调函数中.当内核控制器接受到来自用户空间进程的连接的时候,控制器的ctl_connect_func回调函数将会被调用,在这个函数中,你需要根据连接判断出关联的单元号码,这样,之后你才能发送数据回到连接过来的用户进程.因此你需要创建一个数据结构(任由你选择)去存储相关的连接信息数据, 并且把这个结构通过函数传入的参数void** handle返回出去,在其他的回调函数中将会使用到.
接下来,用户进程就可以用socket上的getsockopt,setsockopt,read/recv.write/send等函数来操作了,但是除了recv函数例外,每一个socket上的函数调用都会对应到内核控件的控制器上对应的回调函数上,ctl_getopt_func,ctl_setopt_func,以及ctl_send等.当用户进程关闭一个到内核控制器通讯socket时,ctl_disconnection_func回调函数将会被调用,此时应该释放连接相关连的分配的所有资源。
下面将会给出一个简单的例子,这个例子将会演示具体如何使用
4.内核代码片段
errno_t error;struct kern_ctl_reg
ep_ctl; // Initialize controlkern_ctl_ref
kctlref;bzero(&ep_ctl, sizeof(ep_ctl));
// sets ctl_unit to 0ep_ctl.ctl_id = 0; /* OLD STYLE: ep_ctl.ctl_id = kEPCommID; */ep_ctl.ctl_unit = 0;strcpy(ep_ctl.ctl_name, "org.mklinux.nke.foo");ep_ctl.ctl_flags = CTL_FLAG_PRIVILEGED & CTL_FLAG_REG_ID_UNIT;ep_ctl.ctl_send = EPHandleWrite;ep_ctl.ctl_getopt = EPHandleGet;ep_ctl.ctl_setopt = EPHandleSet;ep_ctl.ctl_connect = EPHandleConnect;ep_ctl.ctl_disconnect = EPHandleDisconnect;error = ctl_register(&ep_ctl, &kctlref);&/* A simple setsockopt handler */errno_t EPHandleSet( kern_ctl_ref ctlref, unsigned int unit, void *userdata, int opt, void *data, size_t len ){&&&&int
error = EINVAL;#if DO_LOG&&&&log(LOG_ERR, "EPHandleSet opt is %d\n", opt);#endif&&&&&switch ( opt )&&&&{&&&&&&&&case kEPCommand1:
// program defined symbol&&&&&&&&&&&&error = Do_First_Thing();&&&&&&&&&&&&break;&&&&&&&&&case kEPCommand2:
// program defined symbol&&&&&&&&&&&&error = Do_Command2();&&&&&&&&&&&&break;&&&&}&&&&return error;}&/* A simple A simple getsockopt handler */errno_t EPHandleGet(kern_ctl_ref ctlref, unsigned int unit, void *userdata, int opt, void *data, size_t *len){&&&&int
error = EINVAL;#if DO_LOG&&&&log(LOG_ERR, "EPHandleGet opt is %d *****************\n", opt);#endif&&&&return error;}&/* A minimalist connect handler */errno_tEPHandleConnect(kern_ctl_ref ctlref, struct sockaddr_ctl *sac, void **unitinfo){#if DO_LOG&&&&log(LOG_ERR, "EPHandleConnect called\n");#endif&&&&return (0);}&/* A minimalist disconnect handler */errno_tEPHandleDisconnect(kern_ctl_ref ctlref, unsigned int unit, void *unitinfo){#if DO_LOG&&&&log(LOG_ERR, "EPHandleDisconnect called\n");#endif&&&&return;}&/* A minimalist write handler */errno_t EPHandleWrite(kern_ctl_ref ctlref, unsigned int unit, void *userdata, mbuf_t m, int flags){#if DO_LOG&&&&log(LOG_ERR, "EPHandleWrite called\n");#endif&&&&return (0);}5.客户端代码片段struct sockaddr_ctl
addr;&&&&int
ret = 1;&&&&&fd = socket(PF_SYSTEM, SOCK_DGRAM, SYSPROTO_CONTROL);&&&&if (fd != -1) {&&&&&&&&bzero(&addr, sizeof(addr)); // sets the sc_unit field to 0&&&&&&&&addr.sc_len = sizeof(addr);&&&&&&&&addr.sc_family = AF_SYSTEM;&&&&&&&&addr.ss_sysaddr = AF_SYS_CONTROL;#ifdef STATIC_ID&&&&&&&&addr.sc_id = kEPCommID;
// should be unique - use a registered Creator ID here&&&&&&&&addr.sc_unit = kEPCommUnit;
// should be unique.#else&&&&&&&&{&&&&&&&&&&&&struct ctl_info info;&&&&&&&&&&&&memset(&info, 0, sizeof(info));&&&&&&&&&&&&strncpy(info.ctl_name, MYCONTROLNAME, sizeof(info.ctl_name));&&&&&&&&&&&&if (ioctl(fd, CTLIOCGINFO, &info)) {&&&&&&&&&&&&&&&&perror("Could not get ID for kernel control.\n");&&&&&&&&&&&&&&&&exit(-1);&&&&&&&&&&&&}&&&&&&&&&&&&addr.sc_id = info.ctl_id;&&&&&&&&&&&&addr.sc_unit = 0;&&&&&&&&}#endif&&&&&&&&&result = connect(fd, (struct sockaddr *)&addr, sizeof(addr));&&&&&&&&if (result) {&&&&&&&&&&&fprintf(stderr, "connect failed %d\n", result);&&&&&&&&}&&&&} else { /* no fd */&&&&&&&&&&&&fprintf(stderr, "failed to open socket\n");&&&&}&&&&&if (!result) {&&&&&&&&result = setsockopt( fd, SYSPROTO_CONTROL, kEPCommand1, NULL, 0);&&&&&&&&if (result){&&&&&&&&&&&&fprintf(stderr, "setsockopt failed on kEPCommand1 call - result was %d\n", result);&&&&&&&&}&&&&}
6.内核通知
阅读(1975) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。最近几天工程师的朋友圈们都已经被STM32峰会相关消息刷……
一场Pokemon
Go,让全世界的小精灵师都暴露了。因此,在……
2016年初,一场人机大战点燃了人工智能芯片的争夺战,而……
据Dialog的内部资料:快速充电智能手机市场的复合年均增……
整个工业物联网连接领域的发展给了MEMS传感器广阔的应用……
演讲人:李唐山时间: 10:00:00
演讲人:杜建中时间: 10:00:00
演讲人:尔宾时间: 10:00:00
预算:¥10,000-¥50,000预算:小于¥10,000
MACsec IP核大幅提升数据中心安全性
[导读]数据中心设备设计人员将结合采用基于FPGA的内核来提供安全的高性能以太网链路。云存储和IT服务外包对IT经理而言极富吸引力,因为这不仅能降低成本,而且还可减轻支持工作。然而有一个大的顾虑就是,这样做会使敏感数
数据中心设备设计人员将结合采用基于FPGA的内核来提供安全的高性能以太网链路。
云存储和IT服务外包对IT经理而言极富吸引力,因为这不仅能降低成本,而且还可减轻支持工作。然而有一个大的顾虑就是,这样做会使敏感数据流出公司防火墙外,造成安全隐患。这种顾虑是完全可以理解的,因为信息对于许多公司而言是最宝贵的资产,无论是会计、客户还是制造相关的数据。
而现在,设备制造商能够通过使用赛灵思基于FPGA的解决方案来提高性能和安全水平。满足以太网新标准MACsec要求的Algotronix综合安全子系统采用基于赛灵思FPGA的高性能、低时延、高能效IP核。
基于FPGA的解决方案比基于软件的解决方案速度要快得多。此外,专用硬件可接管系统处理器,使其处理其它任务,如深度数据包检查等。或者,设计人员也可采用成本更低的处理器。
加密和认证
保护信息的一个显著策略就是当数据在网络中传输和在数据中心周围移动时对其进行加密。一旦数据被非授权方渗透网络链路而拦截,数据加密能够确保其无法被读取。原则上,数据还应经过认证,从而确保其完整性。消息认证旨在检测原始加密数据是否已被篡改,包括因传输错误而造成变更,抑或是被攻击者为从中牟利而恶意破坏。
目前以太网传输已成为主流通信方式,这是一种既高效又具有可扩展性的高速传输方法。随着以太网标准的普及,以太网传输成本不断降低,这一优势使其更加引人注目,进而确保以太网继续成为首选的L2技术。不过,就在几年以前,以太网标准还没有任何加密规范要求,只能采用运行在通信协议栈上层的IPsec等技术来完成加密工作。
现在,根据IEEE
802.1AE标准,最新以太网标准扩展版本新增了大量安全措施。该技术在几年前正式确定,其采用集成式安全系统来加密并认证消息,同时检测并应对一系列网络攻击。该标准被称为&媒体接入控制安全(Media
Access Control
Security)&标准,常常简称为&MACsec&。Algotronix从几年前就开始努力推出能够根据多种不同数据速率要求提供硬件加速加密功能的IP核。
(Algotronix还可提供面向IPsec的IP核,该产品与MACsec产品的接口类似,对需要支持双重标准的系统而言是不错的选择。)
简要介绍MACsec系统,帮助了解规范的全面性,同时深入说明实现该规范的复杂程度。
MACsec指的是由网络上的节点组成的一系列信任实体。每个节点都能接收加密消息和明文消息,而系统策略则用于明确如何处理每条消息。内核包括明文消息的旁通选项,无需认证或验证。与IPsec等作为端到端技术运行在L3/L4的协议不同,只要数据包进入或离开以太网LAN,MACsec就能对每个数据包进行解密和验证。
MACsec适用于星型或总线型LAN等以太网拓扑结构,也可支持点对点系统。
MACsec标准采用安全实体(SecY)方法,也就是每个节点或实体都具备与其以太网源地址相链接的唯一密钥。为支持多个虚拟SecY,我们设计出了该IP核的1G版本。因此,单个以太网MAC能针对多用户LAN等应用配备多个与之关联的MACsec
SecY。MACsec通常与IEEE 801.1X-2010或互联网密钥交换(IKE)配合使用,可实现网络周围的安全密钥分配。
数据中心之所以会选择L2连接功能在数据中心内移动数据包,是为了提高速度,并最大程度地降低时延和减少数据包中的开销数据。相比之下,如果用诸如IPsec等安全的L3技术进行通信,消息必须传到协议上层进行处理,而这会增加时延。
此外,L2解决方案也能避免创建L3安全策略这一复杂工作。
数据中心能够采用MACsec提供防火墙后台的保护,或将其用在数据中心之间的直接链路上。系统管理员可授权设备以安全方式进行通信。设备能够检测错误或误用情况,如拒绝服务攻击(DOS)。
符合可编程要求
市场因需求不同,日趋细分化。可定制FPGA解决方案理想适合于MACsec。起初,MACsec的设计是作为一项技术应用于城域网,而现在在数据中心中也找到了其用武之地,这就提高了对基于FPGA的解决方案的整体需求。
Algotronix开发MACsec内核是一个自然演进,因为我们已经打造了一系列称为&AES-GCM&的加密引擎。这些内核的运行速率分别为1G、10G和40G。我们通过流水线、提高时钟速率并从赛灵思Artix器件逐步发展到Kintex器件乃至Virtex
FPGA,来实现上述速率的。我们将利用这些技术来推动Virtex UltraScale&器件上的吞吐量,使其达到100G。
我们使用FPGA中的IP核能够实现多种不同性能,可支持从1GbE到10
GbE的不同速率(即,内核在最坏情况下的实际吞吐量)。此外我们还计划推出40G和100G的版本。这比基于软件的系统要快得多。内核通常直连接到硬件MAC(如图1所示),因为FPGA芯片上的嵌入式存储器的软件会尽可能足够快地传输数据,以满足其吞吐量要求。如果在硬件上实现安全功能,同时从未向软件提供未加密密钥,那么系统就不那么容易受到特洛伊木马(Trojan
horse)和病毒等常见软件攻击。
图1 & 整个MACsec IP核位于FPGA内,可实现最大安全性。
这样就算IT专业人士必须考虑系统的整个软件层面的情况时,也能更方便地分析系统漏洞。
另一个重要考虑事项就是FPGA进行算法加速的系统要大幅降低功耗。加速的算法包括加密函数等,免得再用软件去实现加速。FPGA比软件解决方案的能效明显要高得多。
所有Algotronix加密内核都内置了一项重要属性,那就是能够在Block
RAM或FPGA架构的查找表(LUT)中实现称为&S-Boxes&的关键模块。有了该属性,客户可通过综合平衡两种资源类型便能利用现有资源实现设计。比方说,如果MACsec内核外的设计未占用大量的BRAM,那么就可用Block
RAM来实现S-Boxes,否则就用LUT来实现。
MACSEC细节
MACsec系统的设计理念是:每个数据源使用不同的加密密钥。接收到消息后,接收器会在片上CAM的列表中进行查找,明确用以解密数据包的正确密钥。每个数据包都有编号,确保能检测并拒绝接收重复或重新发送的数据包,这种方法可防范&中间人&攻击。
MACsec还会收集有关被拒收的数据包数量的统计数据以及拒绝的原因。提供统计数据以支持攻击检测是超出基本加密隐私、认证和防止重发功能之外的更高一层的安全性,能让系统管理器主动应对正在进行的攻击。
我们采取的方法是对业经验证的AES-GCM内核周围的MACsec逻辑进行&打包&。就此而言,设计高效快速的加密内核只是设计挑战的一部分。MACsec标准涉及面广,包括许多变量。
举例来说,该标准最初只指定128位的加密密钥。采用128位密钥,数据进行10次转换(被称为&轮&)后在内核中完成加密过程。该标准经修订后可提供256位加密密钥,整个数字加密过程历经14轮。这是通过添加流水线级数并提高密钥存储所需的内存带宽才实现的。
MACsec与以太网流量类型无关,也对更高层协议透明。推出这些内核后,就能方便地将MACsec添加到系统中,从而进一步提高网络防护。配备MACsec的站点仍能与未采用MACsec额外安全保障机制的其它站点进行通信。
从媒体接入控制器(MAC)将以太网数据包提供给MACsec内核。您可结合使用1G
MACsec内核、片上收发器和三模以太网MAC(TEMAC)构建高效的小型解决方案。每个数据包都包含发起传输的源码的目的地和地址。该标准保存在MACsec系统中,但一个重要的因素是,在多次反射传输中,&源码&将是传递数据包的最终设备的地址。因此,与可被视为端到端方案的IPsec不同,MACsec是以逐跳方式工作的。对于每次跳跃,MACsec都要求输入端的所有加密数据进行解密,然后使用分配给传输设备的唯一密钥再重新加密。解密的明文可在每一级提供数据包检查功能,如图2所示,也能供流量管理器用以管理数据流。
在MACsec标准中,图3给出的报头包含附加字段&MAC安全标签(SecTAG)&,其可定义EtherType,并标明数据包是否加密。数据附加在ICV字段的消息末尾,则表示已经认证。
图2 & 消息在入端口被解密,并在出端口被加密。
图3 & MACsec帧结构包括MAC安全标签(SecTAG)字段,其可定义EtherType,并标明数据包是否加密。
ICV协同加密密钥,可认证包括报头和MACsec标签的帧,进而确保帧的源地址和目的地地址都不会被篡改。我们在FPGA架构中实现该逻辑,确保其能够具备快速的可预测的时序,从而最大程度地降低时延。
MACsec内核包括连接到每个源地址的查找表。该表包含的密钥必须能够用来成功解密消息,我们精心设计该功能,使其能够高效实现在LUT和器件的Block
RAM中。我们充分利用FPGA解决方案的灵活性,采用实现方案选项(如可采用128位或256位密钥,也可修改内核支持的虚拟SecY数量)来设计内核。
新标准的另一个重要特性就是,MACsec可收集数据包级的统计数据。系统管理员能够了解有关信息(如多少数据包因为延迟而被拒收,或者因为无效解密密钥或使用错误密钥而未通过完整性检查),并将这些统计数据与正确传输的数据包数量进行比较。
MACsec标准可面向点对点应用提供精简选项。这样就无需采用CAM从数据包中的显式安全通道标识符和单点到多点操作的选择方案中确定密钥。我们的内核还可支持关联于单个以太网的多个虚拟SecY,这样,不同的密钥就能用来加密从MAC传输到不同目的地的数据。MACsec标准将这种配置定义为多用户局域网,因为这就像这些目的地位于不同以太网LAN上一样。该特性使得系统能够通过使用不同密钥加密输出来对接收设备进行分区。
数据中心可能会采用多个SecY来创建虚拟分区,这样客户A的数据就可通过唯一的加密密钥与客户B的数据划分开。
数据中心内部通信可根据需要进行组织来分隔选定的机架,进而提供虚拟隔离区。这种功能可保护数据完整性,并应对数据中心和云应用中的隔离问题。无论是意外错误连接还是恶意行为(见图4),MACsec系统都能检测到未经认证的数据包,系统管理员可通过设置策略将其隔离或删除。
图4 & MACsec将拒绝通过错误连接抵达的数据包,无论是因为意外情况造成还是恶意行为导致。
所有数据加密和解密都在端口级进行。除了附加的MACsec报头和较少的额外时延,打开端口级加密不会增加开支,也不会对性能造成其它影响。
通过采用符合IEEE 802.1AE要求的加密Ethernet Lecel
2方案,设备厂商现在能用这些内核推动其系统特色化。基于云的用户可能与其他用户相互之间不信任,但他们现在能够从MACsec提供的数据机密大获裨益,并且数据源认证功能可进一步保护他们的数据。设备制造商则能选择可用的IP核来满足1Gb和10
Gb以太网吞吐量的需求。
这种架构设计能通过Kintex或Virtex
FPGA器件轻松实现10Gbps的速度。在最坏情况下,该设计只需更改每个数据包的密钥便可支持巨型帧和最小型数据包。内核符合全面规范要求,每个MACsec内核都能支持各种常用的FPGA产品系列。
配套提供源码
Algotronix采取了不同寻常的措施,即为所有许可的内核提供HDL源码。这样做的主要动机是支持客户检查,以便确保代码不含病毒或特洛伊木马代码,而且不会强制进入非授权状态或操作。有了源码,就能降低客户安全审核的成本和复杂性。此外,源码可加速设计进程,因为工程师能够方便地尝试使用诸如加密、解密或加密/解密等不同配置参数和密钥长度,并了解其各自仿真内核中的信号状态。
您可对内核进行配置,通过实现较宽的数据路径来提高吞吐量,或通过选择较窄的数据宽度来最大程度地减小FPGA封装尺寸。拥有源码还有其它更多优势,包括更便于了解内核工作情况;也让文档记录和归档变得更快捷方便。
此外,还配套提供了广泛的验证测试平台,可帮助客户在ModelSim等工具中确认操作是否正确。测试平台包括MACsec的行为模型和MACsec
IP核的自检版本,能针对行为模型检查可综合硬件的输出。这种自检设计可在用户仿真中实现实例化,便于测试实际用户设计环境下的内核表现,并在错误驱动的情况下提供有用的诊断信息。
内核可提供许多选项,因此精确的资源数量将取决于您如何选择参数,如数据速率、密钥长度和所选SecY数量以及其它。然而,赛灵思网站IP部分列出的10G
MACsec内核采用6,638个slice、20,916个LUT和53个BRAM块。如需获取许可证选项,敬请联系Algotronix。
赛灵思低功耗 FPGA与Algotronix
MACsec内核的完美结合为设备制造商实现产品差异化提供了高性能、低时延的解决方案。安全特性使得数据中心能够确保其客户机密,同时还可帮助安全管理员检测并打击恶意行为。
Google 的数据中心一直是大家非常好奇想参观的地方,想知道这家公司究竟是如何容纳全世界的资料与服务。假如您没有机会亲临现场,那么现在 Google Maps 的街景模式将实现您的愿望。 在这次将数据中心纳入街景模式的......关键字:
据国外媒体报道,Facebook的全新数据中心将完全由风能提供电力,这意味着公司旗下5个数据中心中的3个将完全依赖可再生能源运作。公司这方面的事务由彼得?弗雷德(Peter Freed)负责,他表示清洁能源的采购非常困难。依据他的说法,Fa......关键字:
继终端业务之后,华为的企业数据中心(EDC)也从深圳迁至东莞。......关键字:
北京时间10月9日消息,美国知名IT杂志《连线》网络版周一刊登评论文章称,如果说计算机产业的一个不为人知的秘密是数据中心服务器效率极为低下,那么该秘密幕后的秘密是:该产业从业人士及研究人员并不了解这种效率低......关键字:
全面加速机器学习、数据安全等应用......关键字:
云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施......关键字:
今天,25GbE交换机的128个接口正在部署中,在接下来的几年内会到达并超越64x 100GbE。但是,尽管数据中心正在向更高的端口密度、更高的端口速度和同质部署方向发展,但是更低的速度仍拥有广泛市场,比如10GbE继续被使用并仍具有经济效......关键字:
北京时间12月1日消息,据国外媒体报道,我们在打电话或上网时,每秒钟都有数十亿比特的数据通过光纤进行传播。近期一项实验显示,我们或许能&弯折&光波,从而增加传播数据的数量和距离。在该实验中,物理......关键字:
55集热播电视连续剧《人民的名义》将于近期收官,收视率持续走高。在这背后,除了口碑,相关方的推广也起了不小作用。......关键字:
在扎克伯格的Facebook网页上有一段视频,是他正跟同为哈佛辍学生的微软创始人比尔?盖茨讨论演讲的事。比尔?盖茨2007年曾回到母校发表毕业演讲,同年,扎克伯格的妻子、儿科医生普莉希拉?陈从该校毕业。......关键字:
我 要 评 论
热门关键词}

我要回帖

更多关于 mac ie内核 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信