kaspterio code as a hacker

  • tls1.2 handshake

  • Overview

    这篇blog是关于tls1.2协议handshake部分的介绍和分析,主要内容来自于对rfc5246的梳理。

    TLS握手协议作用主要有以下几点:

    • 协商出双方协议的版本、加密算法套件
    • 认证对方身份
    • 协商出一个用于后续加密数据的密钥

    一个完整的TLS握手过程如下图所示:

    tls handshake

    read more...
  • TLS协议分析(密码学101以及tls协议简介)

  • 密码学可以说是所有计算机学科中科学和工程结合的最紧密的学科之一,并且两者都极其重要。TLS协议作为现代互联网数据安全的基石,自1994年由Netscape首次推出以来(当时叫SSL)发展至今已经有快30年历史了,可以说汇集了现代密码学众多的理论研究成果和安全实践经验,学习TLS的设计一方面对了解现代密码学的应用具有很好的参考价值。另外一面,密码学领域内的轮子区别于其他领域内的轮子,作者需要具备严格的密码学学术训练和大量领域工程实践经验,代码本身也需要经过大量的同行审议,才能算作是可用,这个领域不提倡一言不合就自己造轮子,TLS协议这个有着多年发展迭代历史、经过大量研究人员审议,应该我们在绝大部分场景选择安全通信协议时候的不二选择。这篇blog将会深入TLS协议的细节,记录和学习TLS协议的设计和演进。需要说明的是想要深入学习TLS协议是有一定门槛的,读者需要具备一定的密码学背景知识。

    tls的设计目标

    • 密码学安全性:TLS首先是为了给通信的双方建立安全的连接
    • 互操作性:通信双方可能有着不同的协议实现,也能够通过协商达成一致的密码学参数
    • 可扩展性:TLS提供了一个能够有机整合各种密码学算法的可扩展的框架
    • 相对有效性:通常来说密码学算法是计算密集型的,因此TLS协议也提供了一些可选的session重用的机制来减少连接建立所需的计算和时间开销
    read more...
  • Huffman Codec in netty HPACK

  • Static Huffman Codec

    前一篇blog HPACK explained in detail里,我试着分析了下HPACK的设计细节。其中HPACK对于string literal数据采用static Huffman coding来编码,这一篇blog将继续拓展这个话题,写写关于HPACK中static huffman decode/encode算法实现的内容,虽然HPACK里用的static huffman coding不涉及根据数据构造huffman树,但是想要实现一个高效的HPACK huffman encoder/decoder并不是一个很直观的事情,尤其是将huffman 高效decoder的实现。接下来的内容分为两个部分,分别以netty HPACK的实现为例,介绍下目前工业界常见huffman decoder/encoder的算法。

    read more...