分类: 未分类

  • 加密算法简介(含国密)

    国际算法

    • DES 旧的对称加密算法,已废弃
    • AES 新的对称加密算法,用于取代DES
    • AES-GCM 加密的同时提供消息验证,密文和验证码(MAC)一起发送,也就是AEAD,其它不带GCM后缀的AES算法不支持AEAD,ipsec和tls1.2,1.3都支持gcm模式
    • Blowfish 对称加密,已废弃
    • chacha20 流式对称加密,使用256位密钥长,对应AES256,安全性与AES相当或略优于AES,纯软件件计算比AES快3倍,比硬件AES慢1倍。这个算法以后用的会越来越多,在没有AES指令集的设备上chacha20是首选算法。由RFC 8439定义。
    • chacha20-poly1305 chacha20的AEAD版
    • RC4 对称加密,特点是速度非常快,比硬件加速的AES还快,已废弃
    • RSA 非对称加密算法,可用于消息加密,消息签名,密钥交换(低于1024位不安全)
    • ECC 非对称加密算法,另外用于密钥交换时用ECDH,用于消息签名时用ECDSA,一般不直接用于加密,根据不同的密钥长度分为P-192, P-224, P-256, P-384 和 P-521。
    • curve25519 非对称加密算法,蒙哥马利曲线,另一种椭圆曲线,256位的密钥长度,比ECC速度更快,更安全
    • curve448 非对称加密算法,448位的密钥长度,curve25519的加强版,安全性更高,但速度没有curve25519快
    • DSA 非对称加密算法,只能用于消息签名,但是用于签名时相比RSA也没有啥优势,所以使用并不多
    • ECDSA DSA的ECC版,ECC一般不直接用于签名,目前基于ECC的数字签名算法就是ECDSA
    • EDDSA 基于爱德华兹曲线的签名算法,速度更快,更安全,用于取代ECDSA,因为NIST有往算法里掺沙子的前科。
    • ED25519 是EDDSA的curve25519实现,密钥长度是256位
    • ED448 是EDDSA的curve448实现,密钥长度448位
    • DH 非对称加密算法,只能用于密钥交换
    • ECDH DH的ECC版,ipsec中DH group 19,20,21使用的是ECDH,其它使用的是DH
    • X25519,X448 ED版的DH算法,分别对应curve25519,curve448,ipsec中对应dh31和dh32
    • DHE,ECDHE 使用临时公私钥的DH,ECDHE算法,提供PFS能力,TLS1.3上PFS是必选的,IPsec可选支持PFS
    • MD5 散列算法,128位,速度很快,已废弃
    • SHA-1 散列算法,160位,已废弃
    • SHA-2(SHA256-SHA512) 散列算法
    • SHA-3(SHA3-256-SHA3-512) 散列算法,长度与sha2一致但使用了不同的算法,是SHA2的备选。目前并没有消息说SHA3比SHA2更安全,只是没有与SHA2相同的弱点。
    • HMAC 加了密码的散列算法,即可以用于散列,也可以用于身份验证(密码不一样,散列结果不一样),HMAC可以与任意其它散列算法一起使用,这样散列算法也实现了AEAD

    国密算法:

    • SM1 相当于AES128,算法不公开,用于小数据量的加解密
    • SM2 基于ECC,相当于ECC256,ECDH,ECDSA,可用于加密,签名,密钥交换,USG6525E防火墙支持使用sm2进行身份认证
    • SM3 相当于SHA-256,但比sha-256g速度慢,支持MAC的版本为HMAC-SM3,USG6525E防火墙不支持IKEV2的完整性验证,但支持sm3用于IKEV1的完整性验证
    • SM4 与SM1一样都是对称加密,用于大数据量的加解密,也可以支持GCM模式(AEAD),USG6525E防火墙中可用于IPsec的数据加密,但不支持GCM模式,所以还需要另外配置完整性验证(使用GCM模式时esp authentication-algorithm不再生效)
    • SM7 与SM1一样,都是128位密钥和分组,主要用于非接触式IC卡,算法不公开
    • SSF33 对称加密,使用较少,算法不公开
    • SM9 非对称加密,使用用户标识(手机号,姓名,email地址)作为公钥,免去了证书创建,使用更方便,属于轻量级的非对称加密
    • ZUC 流式对称加密,可支持AEAD,已成为LTE标准

    注意:
    ECC256的安全性相当于RSA3072
    ECC256的破解难度相当于AES128,对称密码的破解难度要比非对称密码高
    SECP定义的曲线以r1作为后缀的与NIST定义的曲线是相同的,比如secp256r1等于nist p-256,secp38441等于nist p-384,这个定义secp曲线的seca组织是NIST的马甲吗?
    这里可以查看各个曲线的参数定义
    https://neuromancer.sk/std/secg/secp256r1
    secp256k1不是由nist定义的,比特币用的也是这个算法
    brainpool系列曲线是由rfc5639定义的,比nist的更安全,但是速度要慢得多,所以一般用ed25519的多
    爱德华兹曲线相关的ed25519,x25519,ed448,x448是由IETF定义的
    TLS1.3提供了对cure25519,cure448,AEAD的支持,USG6525E支持AEAD但不支持cure25519和cure448
    sha1,sha2,sha3,dsa,ecdsa,aes,ecc NIST P-xxx,des,hmac等算法都是由nist定义的
    关于ipsec中的dh组应该是由ietf自己定义的,可以参考RFC6071,国密算法中没有定义dh组
    各种椭圆曲线算法中只有国密的SM2是能直接加解密数据的,NIST,SECG,IETF定义的ECC和ED25519都不支持加解密数据,而只能用于签名和密钥交换
    2012年起中国国家密码局陆续发布国密算法,2013发生棱境门事件并爆出了Dual_EC_DRBG后门
    中国国家密码局2014年发布GM/T 0022-2014 IPSec VPN技术规范,2023年发布了GM/T 0022-2023 IPSec VPN技术规范
    中国国家密码局发布的商秘(SM)算法不能用于处理国家秘密,只能用于处理商业秘密
    AEAD把认证数据分为加密数据和非加密数据(关联数据),通过一个MAC保证加密部分和非加密部分均未篡改。通常IP数据包内容是需要加密的数据,IP数据包头是不需要加密的信息。

    Views: 80

  • 上海移动IPTV单线复用

    1. 运营商光猫桥接
      拓朴图:

      这是最简单的一种实现方法,拓扑图是最简化的情况,交换机可以多个串联,还可以使用支持Vlan的交换机。
      pon stick设置

      其中关键的几点:
      连接模式 桥接
      IP模式 IPv4&IPv6
      DHCP Server关闭
      MTU 1500
      启用Vlan 选中
      Vlanid 1101
      LAN端口绑定 LAN1

      其中关键的几点:
      连接模式 桥接
      IP模式 IPv4&IPv6
      MTU 1500
      启用Vlan 选中
      Vlanid 1103
      Openwrt设置
      IPv6 ULA 前缀:设置为空,机顶盒不支持ula并会导致机顶盒ipv6不通,如果不需要机顶盒的ipv6支持也可以不设置为空
      防火墙设置

      网络拓扑
      如果使用的是管理型交换机自己根据需要配置,至于网上提到的dhcp option125我这里没有用到,如果有用到的可以参考网上的贴子。我这里把vlan配置好就能用了。
      openwrt中dhcp option可以这样配置(不必要):
    2. 猫棒+openwrt路由器
      我用的是MA5671A,在猫棒上把互操作兼容模式关闭,这样把所有的Vlan透传到路由器
      网络拓朴

      openwrt上把所有端口放到一个网桥中,把openwrt路由器当成一个交换机然后划分vlan

      重点是其中的1101,1103,50这3个vlan,这是从pon网络传过来的。31,33这两个vlan是在本地创建的,我把局域网和iptv的网段通过vlan分隔了。其它的vlan没有用,我只是把pon网络支持的vlan全配置了。
      防火墙的配置参考上面,IPv6 ULA 前缀也与上面一致。
      拨号的时候绑定vlan 1101

      iptv内网绑定vlan 31,lan绑定vlan 33
      这样做理论上是没有问题的,但是我每次打开机顶盒都要重启路由器,不然就会像看幻灯片一样,抓包发现会有大量丢包,而且vlan 1103的tag标签时不时的会丢掉。vlan标签丢掉是造成丢包的一个原因,是不是所有原因还不清楚。基本上可以确定vlan标签在网桥中透传时出错了。还不确定是个例还是openwrt的通病。
    3. pon stick插到交换机上
      拓朴图

      这种方法我没有试,但可以绕过openwrt用交换机进行vlan透传,避免openwrt造成的丢包问题。

    注意:
    MTU正确设置也是很重要的,ppoe连接上一定要打开mss钳制,连接的mtu也要设置正确。
    vlan说明:1101是pppoe,1103是单拨iptv,50是组播,110是tr069,1102是voip,其中有用的是1101和1103。lan端口绑表表示untag口,否者就是tag口
    我在配置的过程中影响比较大的还是vlan和mtu,这两点没问题就能通。另外机顶盒对ipv6兼容性不是很好也是要注意的地方。
    有线和无线尽量不放在一个vlan或网段中,因为有线网络中的广播以及组播包会干扰无线网络。

    Views: 45

  • pandas的index

    • 定义index
      1. 读取csv时
        data = pd.read_csv('data.csv', index_col='id')
        这种方法会创建命名的索引列,并且会放在第1列(不管csv文件中是第几列)
      2. 声明DataFrame时
        data = [['Google', 10], ['Runoob', 12], ['Wiki', 13], ['Baidu', 20], ['taobao', 15]]
        # 创建DataFrame
        df = pd.DataFrame(data, columns=['Site', 'Age'], index=[1,2,3,4,6])
        

        这种方法会创建没有名字的索引列,仍然放在第1列。

    • 遍历时使用index
      1. 使有iterrows()
        for index, item in df.iterrows():
        print(index, item) #index的值就是上述定义的index值,并不是连续的序号
        print(item[0]) #item[0]就是第1列Site的值,item中不包含index列
        
      2. 使用itertuples()
        for item in df.itertuples():
        print(item)
        print(item.Index) # i.Index就是索引列的值
        print(item[0]) # 与item.Index的值相同,也是id列的值,id列会强制移动第0列。
        print(item[1]) # Site列的值
        

        如果原始数据中没有index会自动生成一个递增的index列。

      3. 无index的itertuples()
        for item in df.itertuples(index=False):
        print(item)
        #print(item.Index) # 报错
        print(item[0]) # Site列的值
        print(item[1]) # Age列的址
        

        id列或者index列会被从Series中移除,无法访问id列。

    Views: 0

  • ipv6组播

    MLDv1
    https://datatracker.ietf.org/doc/rfc2710/
    MLDv2,添加了组播源过滤,对应IGMPv3协议
    https://datatracker.ietf.org/doc/rfc3810/
    MLD Snooping
    https://support.huawei.com/enterprise/zh/doc/EDOC1000178150/ee7e5721

    IPv6基础协议中广泛使用了各种组播地址,这样能减少广播泛洪。但是路由器和交换机不支持组播MLD协议的话还是会广播泛洪,也使用广播没有区别。
    在交换机和路由器上开启MLD协议,可以对组播报文进行过滤,而不是在所有端口上进行转发。MLD支持除ff02::1和节点本地地址外的所有组播地址识别处理。

    MLD报文是由三层设备(路由器)发出的,交换机只负责监听,当路由器没有开启MLD时交换机上的MLD Snooping也是不能正常工作的(实际发现即使没有MLD querier时终端也会定时发送MLD report)。当路由器不支持MLD时可以在交换机上配置MLD查询器或者MLD代理代替路由器发送MLD查询报文。
    实验发现关闭路由器上的MLD功能后交换机仍然能看到组播表项,只是表项很快就消失,并不稳定存在。
    华为MLD代理的配置:
    https://support.huawei.com/enterprise/zh/doc/EDOC1100366607/c39c955e

    RFC原文:

    When a node receives a General Query, it sets a delay timer for each
    multicast address to which it is listening on the interface from
    which it received the Query, EXCLUDING the link-scope all-nodes
    address and any multicast addresses of scope 0 (reserved) or 1
    (node-local).

    Views: 6

  • 小米13 root

    • 下载工具
      下载PHP
      https://windows.php.net/download/
      下载跳过设区5级和答题工具
      https://github.com/MlgmXyysd/Xiaomi-HyperOS-BootLoader-Bypass
      下载Settings.apk
      https://pan.hetao.me/s/iDRAm6cGbo9PQMx
      这个apk要安装到手机上,然后运行bootloader-bypass的时候会报错
      下载小米解锁工具
      https://www.miui.com/unlock/download.html
    • 手机设置
      设置 - 我的设备 - 全部参数与信息 – 狂点 MIUI 版本号 进入开发者模式
      设置 - 更多设置 - 开发者选项 – 开启 OEM 解锁
      设置 - 更多设置 - 开发者选项 - 设备解锁状态 – 绑定帐号和设备
    • 绕过hyperos答题
      执行php bypass.php
    • 解锁bootloader
      按手机音量减和电源键不松,直到进行fastboot模式
      然后运行小米官方解锁工具
      注意:解锁会清空手机所有数据
    • 安装KernelSU
      https://kernelsu.org/zh_CN/guide/installation.html

    Views: 0

  • ac9700s-s配置组播优化


    广播&组播报文转单播失败遍历发送:这一项一定要打包,不然会网络不通
    对应的命令:

    traffic-profile name default
      rate-limit client dynamic disable
      mld-snooping enable
      igmp-snooping enable
      traffic-optimize multicast-unicast enable
      traffic-optimize multicast-unicast dynamic-adaptive disable
      traffic-optimize arp-proxy enable
      traffic-optimize nd-proxy enable
      traffic-optimize bcmc unicast-send mdns
      undo traffic-optimize bcmc unicast-send mismatch-action drop
    


    IP地址学习也要打开,不然组播转单播无法工作
    对应的命令(地址学习是默认开启的):

    vap-profile name Net
      service-vlan vlan-id 12
      ssid-profile Net
      security-profile Net
      traffic-profile Net
      layer3-roam disable
      mdns-snooping enable
    

    广播组播报文抑制

    Views: 0

  • 用于无线网络的ipv6

    ipv6设计时主要考虑的是有线网络环境,当用于无线网时会出现过度依赖组播,功耗高,网络效率不好的问题,以下RFC研究解决这些问题。

    6LoWPAN中的ndp优化
    https://datatracker.ietf.org/doc/rfc6775/
    Registration Extensions for 6LoWPAN Neighbor Discovery
    https://datatracker.ietf.org/doc/rfc8505/
    无线网上的IPv6
    https://datatracker.ietf.org/doc/draft-ietf-6man-ipv6-over-wireless/
    ND6 Enhancements
    https://www.ipv6plus.net/resources/Enterprise_Networks/ND6-Enhancements_for_Neighbour_Discovery.pdf
    6LoWPAN
    https://datatracker.ietf.org/doc/rfc4944/
    6LoWPAN相关的RFC集合
    https://datatracker.ietf.org/wg/6lowpan/documents/
    6LoWPAN中文
    https://github.com/chunhuajiang/6lowpan-rfcs-chinese

    Views: 0

  • termux上支持sudo

    pkg install tsu
    前提是已经root

    Views: 0

  • termux更换源

    termux的源在这个文件中配置”/data/data/com.termux/files/usr/etc/apt/sources.list”,执行以下命令进行替换即可:
    echo "deb https://mirrors.hetao.me/termux/apt/termux-main/ stable main" > /data/data/com.termux/files/usr/etc/apt/sources.list
    sed -i 's@packages.termux.org@mirrors.hetao.me/termux@' $PREFIX/etc/apt/sources.list
    pkg up

    或者用中科大的源
    sed -i 's@packages.termux.org@mirrors.ustc.edu.cn/termux@' $PREFIX/etc/apt/sources.list
    pkg up

    也可以用termux-change-repo命令自动换源

    Views: 0

  • power dns配置hint-file

    curl https://www.internic.net/domain/named.root -o /etc/powerdns/named.root
    然后recursor.conf中配置
    hint-file=/etc/powerdns/named.root

    如果不配置hint-file的话recursor会频繁的通过dns来查询根域名,这样浪费流量(我是按量付费的),早期版本可以通过hint-file=no(使用源码自带的root hint)来禁用周期性的解析根域名,后来新版本设置为no会彻底禁用迭代解析,那就没法玩儿了。

    Views: 1