0%

SM9属于标识密码算法的一种。传统的非对称算法,比如RSA的公钥分发时,因为公钥只是一串无意义的随机数,需要使用PKI系统来给公钥添加额外的身份认证。这样在传输密钥的时候,就需要带上一整套证书的东西,比较重。标识密码算法中,直接使用身份标识来作为用户公钥,比较轻量。

阅读全文 »

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>

int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);

#include <stdarg.h>

int vprintf(const char *format, va_list ap);
int vfprintf(FILE *stream, const char *format, va_list ap);
int vsprintf(char *str, const char *format, va_list ap);
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
阅读全文 »

1. 介绍

使用特定函数操作不定长列表,初始化——操作——结束。

阅读全文 »

1. 为什么

TLS通常用证书体系(PKI)进行认证,先回顾一下传统的RSA证书认证过程,

  1. server发送证书给client, 证书中包含RSA的公钥,只有server有证书中公钥对应的私钥;
  2. client收到证书后,对证书进行校验(PKI体系一层层往CA验证,直到根CA),校验通过后,用证书中的公钥对预主密钥(client每次随机生成)进行加密,将加密后的数据发送给server;
  3. 只有server能解密数据,取出其中的预主密钥。这样,server和client之间就有了共同的秘钥,可以用于后续的加密了。
    阅读全文 »

1. 为什么

ticket给TLS提供一个不需要在server存储会话状态(session)的机制来恢复会话。适用于TLS1.0, 1.1, 1.2。在以下情况下很有用:

  1. server需要处理大量不同用户的session;
  2. server希望长时间存储session;
  3. 需要使用跨server的负载均衡;
  4. 在内存很少的嵌入式的server上。
    阅读全文 »

1. 为什么需要ALPN

  TLS只负责建立加密通道,不负责上层到底是什么应用,所以如果用户想在1个地址上支持多种应用协议,比如1个443端口,既想支持HTTP/1.1,还能支持HTTP/2、SPDY/1,没有ALPN(App-Layer Protocol Negotiation)的话,用户需要在ssl建立连接之后,再协商是用哪个协议,然后分发到各个协议的处理流程中,这样多了一个来回。ALPN把应用层协商附带到握手协商中,让用户在握手建立之后就立即知道使用的应用协议,这样节省了一个来回。

阅读全文 »

比较浅显的理解,主要是对RSA算法有一些数学上的认识。

阅读全文 »

对TLS1.3中用到的ECC相关算法,比如ECDH, ECDSA, X25519等进行一下基础说明,起码知道group、curve之类的是什么意思。

阅读全文 »

  是tls1.3中关于密钥生成的重要的基础算法,跟密钥推导密切相关。

阅读全文 »