当前位置: 首页 > news >正文

BBS伪随机数生成器

Blum Blum Shub(BBS),由Lenore Blum、Manuel Blum和Michael Shub于1986年提出。BBS伪随机数生成器以其可证明的安全性而闻名,其安全性基于大整数分解问题的困难性

BBS生成器的数学基础

1. Blum整数

BBS生成器的核心是Blum整数,定义为两个特殊素数的乘积:

N = p × q

其中p和q必须满足:

  • p和q都是大素数
  • p ≡ 3 (mod 4)
  • q ≡ 3 (mod 4)

2. Blum素数生成

class BlumInteger:@staticmethoddef generate_blum_prime(bit_length: int) -> int:"""生成Blum素数(p ≡ 3 mod 4)"""while True:# 生成候选奇数candidate = random.getrandbits(bit_length)candidate |= (1 << (bit_length - 1))  # 确保指定位数candidate |= 1  # 确保是奇数# 检查是否 ≡ 3 mod 4if candidate % 4 != 3:continue# Miller-Rabin素性测试if MillerRabin.is_prime(candidate):return candidate

3. Miller-Rabin素性测试

class MillerRabin:@staticmethoddef is_prime(n: int, k: int = 40) -> bool:"""Miller-Rabin素性测试"""if n <= 1:return Falseelif n <= 3:return Trueelif n % 2 == 0:return False# 将n-1分解为 d * 2^sd = n - 1s = 0while d % 2 == 0:d //= 2s += 1# 进行k轮测试for _ in range(k):a = random.randrange(2, n - 1)x = pow(a, d, n)if x == 1 or x == n - 1:continuefor __ in range(s - 1):x = pow(x, 2, n)if x == n - 1:breakelse:return Falsereturn True

BBS生成器核心算法

1. 基本原理

BBS生成器使用简单的二次剩余迭代:

x_{n+1} = x_n² mod N

其中:

  • N是Blum整数
  • \(x_0\)是与N互质的种子
  • 输出为\(x_n\)的最低有效位(LSB)

2. 核心实现

class BBSGenerator:def __init__(self, N: int, seed: Optional[int] = None):"""初始化BBS生成器"""self.N = Nself.state = seed if seed is not None else self._generate_seed()# 验证种子if not self._validate_seed():raise ValueError("种子必须与N互质且不能为0或1")def next_bit(self) -> int:"""生成下一个随机比特"""# BBS核心算法: x_{n+1} = x_n^2 mod Nself.state = pow(self.state, 2, self.N)# 输出最低有效位(LSB)bit = self.state & 1return bit

3. 种子验证

def _validate_seed(self) -> bool:"""验证种子有效性"""return (self.state > 1 and self.state < self.N - 1 and math.gcd(self.state, self.N) == 1)

多种输出格式

1. 比特序列生成

def next_bits(self, num_bits: int) -> str:"""生成指定数量的随机比特"""bits = []for _ in range(num_bits):bits.append(str(self.next_bit()))return ''.join(bits)

2. 字节生成

def next_byte(self) -> int:"""生成下一个随机字节"""byte = 0for i in range(8):byte |= (self.next_bit() << i)return byte

3. 浮点数生成

def next_float(self) -> float:"""生成[0, 1)范围内的随机浮点数"""# 使用52位精度(IEEE 754双精度尾数)bits = self.next_bits(52)mantissa = int(bits, 2)return mantissa / (2**52)

统计测试套件

1. 频率测试

def frequency_test(bits: str, significance: float = 0.01) -> Tuple[bool, float]:"""频率测试(单比特测试)"""n = len(bits)ones = bits.count('1')# 计算测试统计量s_obs = abs(ones - n/2) / math.sqrt(n/4)# 计算p值p_value = 2 * (1 - BBSTestSuite._normal_cdf(abs(s_obs)))return p_value >= significance, p_value

2. 游程测试

def runs_test(bits: str, significance: float = 0.01) -> Tuple[bool, float]:"""游程测试"""n = len(bits)ones = bits.count('1')zeros = n - ones# 计算游程数runs = 1for i in range(1, n):if bits[i] != bits[i-1]:runs += 1# 计算期望和方差expected_runs = (2 * ones * zeros) / n + 1variance_runs = (2 * ones * zeros * (2 * ones * zeros - n)) / (n**2 * (n - 1))# 计算测试统计量z_obs = (runs - expected_runs) / math.sqrt(variance_runs)# 计算p值p_value = 2 * (1 - BBSTestSuite._normal_cdf(abs(z_obs)))return p_value >= significance, p_value

BBS的安全性分析

1. 周期性

BBS生成器的周期至少是λ(p)和λ(q)的最小公倍数,其中λ是卡迈克尔函数:

def carmichael_blum(p):return (p - 1) // 2
lambda_p = carmichael_blum(p)
lambda_q = carmichael_blum(q)
period = math.lcm(lambda_p, lambda_q)

2. 安全性基础

BBS的安全性基于以下数学难题:

  1. 大整数分解问题:已知N,难以找到p和q
  2. 二次剩余问题:给定x和N,难以判断x是否为二次剩余
  3. 预测困难性:预测BBS输出等价于分解N

性能特点

1. 优势

  • 可证明安全性:基于数学难题
  • 长周期:周期长度可达2^
  • 可重现性:相同种子产生相同序列

2. 劣势

  • 速度较慢:每次迭代需要大数模运算
  • 初始化复杂:需要生成大素数

使用示例

# 生成Blum整数
p, q, N = BlumInteger.generate_blum_integer(256, 256)
# 创建BBS生成器
bbs = BBSGenerator(N)
# 生成随机数
bits = bbs.next_bits(128)          # 128位随机数
bytes_data = bbs.next_bytes(16)    # 16字节随机数
random_int = bbs.next_int(1, 100)  # 1-100随机整数
# 统计测试
test_results = BBSTestSuite.run_all_tests(bbs, 10000)
http://www.zskr.cn/news/50512.html

相关文章:

  • 11.15模拟赛
  • 2025年RS485红外线测温仪源头厂家权威推荐榜单:在线红外测温仪/20mA红外线测温仪/红外线测温仪变送器源头厂家精选
  • P14508 猜数游戏 guess
  • 用HBuilder建立查询天气的网页
  • fanuc 双安检实验指导书
  • 1115noip模拟赛
  • 2025年毕业论文救星:6款免费AI写论文工具实测推荐
  • 2025 最新推荐!护栏厂家实力榜单,国际协会认证优质品牌,市政 / 铁路 / 桥梁专用护栏制造厂精选
  • 序列密码算法RC4的实现与攻击
  • arch配置swap分区并做休眠设置
  • 2025 年结晶装备厂家最新推荐榜:连续结晶器、煤化工蒸发设备、盐硝分离器等工业核心装备权威品牌指南多效蒸发/硫酸钠蒸发结晶器/煤化工盐硝分离器公司推荐
  • 2025 最新新能源装备厂家企业品牌权威推荐榜,含芒硝结晶器/碳化热解设备/碳酸锂碳化提纯设备优质厂商
  • 【AI白皮书】AI原生应用及其架构
  • 2025 年最新脚轮厂家推荐!万向脚轮、工业脚轮、医用脚轮等全品类优质厂家品牌权威排行榜,助力采购决策设备脚轮/重型脚轮/医疗脚轮公司推荐
  • 2025 最新干燥装备厂家权威推荐排行榜,盘式/桨叶/流化床/闪蒸/真空喷雾干燥器优质公司精选
  • 2025 最新净水器厂家推荐排行榜:母婴级安全、无阻垢弱碱、杜邦 / 陶氏 RO 膜,高性价比国货品牌精选斯里兰卡椰壳炭/制冰/DIY/厨下净水器公司推荐
  • 2025年11月三丰粗糙度仪,三丰圆度仪,三丰物镜厂家最新推荐,精准检测与稳定性能深度解析
  • Python遍历pandas数据方法总结
  • 2025 年 11 月温州法律顾问律师,温州婚姻律师,温州刑事律师最新推荐,聚焦资质、案例、售后的五家机构深度解读
  • 2025年跨境电商ERP系统权威推荐:赛狐ERP系统适配多平台、多站点智能化管理,跨境电商卖家首选
  • P14507 缺零分治 mexdnc
  • 2025年共享观光车厂家权威推荐榜单:封闭式观光车/电动观光车/电动游览车源头厂家精选
  • 聚焦成都留学服务:藤校申请、语言培训、就业规划一站式解决,2025优质机构榜单出炉
  • 用wireshark抓包
  • everything如何设置 取消打开时默认置顶在最前面
  • 50019_基于微信小程序的校园互助系统
  • 2025年有实力的维修企业一览:行业洞察与权威推荐
  • 2025年国内工业制冷公司口碑排行榜前十强权威解析
  • 留学生课程衔接选哪家?98%满意度机构榜单,覆盖30+国家学业适配方案
  • rag调优