伪随机数生成器介绍 - CTF Wiki
文章推薦指數: 80 %
伪随机数生成器(pseudorandom number generator,PRNG),又称为确定性随机位生成器(deterministic random bit generator,DRBG),是用来生成接近于绝对随机数序列 ...
跳转至CTFWikictf-wiki/ctf-wikiStartStart简介如何使用CTFWiki贡献指南贡献指南贡献之前基本贡献方式贡献文档要求翻译讨论交流IntroductionIntroductionCTF历史CTF竞赛模式简介CTF竞赛内容线下攻防经验小结CGC超级挑战赛学习资源MiscMisc杂项简介信息搜集技术编码分析编码分析通信领域常用编码计算机相关的编码现实世界中常用的编码取证隐写前置技术图片分析图片分析图片分析简介PNGJPGGIF音频隐写音频隐写音频隐写流量包分析流量包分析流量包分析简介PCAP文件修复协议分析协议分析协议分析概述WiresharkHTTPHTTPSFTPDNSWIFIUSB数据提取压缩包分析压缩包分析ZIP格式RAR格式磁盘内存分析磁盘内存分析磁盘内存分析题目OtherOtherpyc文件CryptoCrypto密码学简介基础数学知识基础数学知识基础数学知识古典密码古典密码古典密码简介单表代换加密多表代换加密其它类型加密总结流密码流密码流密码伪随机数生成器伪随机数生成器伪随机数生成器介绍伪随机数生成器介绍目录概述随机性的严格性周期评价标准分类问题参考密码安全伪随机数生成器题目线性同余生成器线性同余生成器线性同余生成器题目反馈移位寄存器反馈移位寄存器反馈移位寄存器线性反馈移位寄存器-LFSR非线性反馈移位寄存器特殊流密码特殊流密码RC4块加密块加密块加密ARXARXARX:Add-Rotate-XorDESDESDESIDEAIDEAIDEAAESAESAESSimonandSpeckSimonandSpeckSimonandSpeckBlockCiphers分组模式分组模式分组模式填充方式ECBCBCPCBCCFBOFBCTRPaddingOracleAttack非对称加密非对称加密介绍RSARSARSA介绍模数相关攻击公钥指数相关攻击私钥d相关攻击私钥d相关攻击私钥d相关攻击扩展维纳攻击Coppersmith相关攻击RSA选择明密文攻击RSA侧信道攻击Bleichenbacher'sattackRSA复杂题目背包加密背包加密背包加密离散对数相关离散对数相关离散对数ElGamalECC格密码格密码格概述基本介绍格基规约算法CVP哈希函数哈希函数哈希函数MD5MD5MD5SHA1SHA1SHA1FNVFNVFowler–Noll–VohashfunctionHashAttackHashAttackHashAttack综合题目数字签名数字签名数字签名RSA数字签名RSA数字签名RSA数字签名ElGamal数字签名ElGamal数字签名ElGamalDSA数字签名DSA数字签名DSA攻击思想总结攻击思想总结简介中间相遇攻击中间相遇攻击中间相遇攻击-MITM比特攻击比特攻击比特攻击证书格式证书格式证书格式WebWebWeb简介SQL注入SQL注入SQL注入XSS跨站脚本攻击XSS跨站脚本攻击XSSCSRF跨站请求伪造CSRF跨站请求伪造CSRFSSRF服务端请求伪造SSRF服务端请求伪造SSRFPHP代码审计PHP代码审计PHP代码审计AssemblyAssemblyx86_x64MIPSARMExecutableExecutableELF文件ELF文件ELF文件基本结构ELF文件基本结构ELF文件SectionsCodeSectionDataRelatedSections.symtab:SymbolTableStringSectionsDynamicSectionsMiscSections程序加载程序加载程序加载程序链接程序链接程序链接SymbolReslove程序执行流程程序执行流程程序执行流程ReverseReverseReverseOverviewReverseOverview软件逆向工程简介常见加密算法和编码识别迷宫问题虚拟机分析UnicornEngine简介LinuxReverseLinuxReverseLD_PRELOADFalseDisassemblyDetectingBreakpointsDetectingdebuggingWindowsReverseWindowsReverse脱壳技术脱壳技术保护壳简介单步跟踪法ESP定律法一步到达OEP法内存镜像法最后一次异常法SFX法DUMP及IAT重建手动查找IAT并使用ImportREC重建DLL文件脱壳反调试技术反调试技术NtGlobalFlagHeapFlagsTheHeapInterrupt3IsDebuggerPresentCheckRemoteDebuggerPresentNtQueryInformationProcessZwSetInformationThread花指令反调试技术例题PwnPwnLinuxPlatformLinuxPlatformUserModeUserModeEnvironmentEnvironmentEnvironmentExploitationExploitationStackOverflowStackOverflowx86x86栈介绍栈溢出原理基本ROP中级ROP高级ROP高级ROP高级ROPret2dlresolveret2VDSOSROP花式栈溢出花式栈溢出花式栈溢出技巧armarm环境搭建ArmROPmipsmipsmips-ROPrisc-vrisc-vRISC-VFormatStringFormatString原理介绍利用例子检测HeapExploitationHeapExploitationPtmalloc2Ptmalloc2堆利用堆概述堆相关数据结构深入理解Ptmalloc2深入理解Ptmalloc2深入理解堆的实现基础操作堆初始化申请内存块释放内存块tcachemalloc_state相关函数测试支持堆溢出堆中的Off-By-OneChunkExtendandOverlappingUnlinkUseAfterFreeFastbinAttackUnsortedBinAttackLargeBinAttackTcacheattackHouseOfEinherjarHouseOfForceHouseofLoreHouseofOrangeHouseofRabbitHouseofRomanHouseofPigMusl-mallocngMusl-mallocngReadmeIO_FILEExploitationIO_FILEExploitationFILE结构伪造vtable劫持程序流程FSOPglibc2.24下IO_FILE的利用IntegerOverflowIntegerOverflow整数溢出TypeConfusionTypeConfusionTypeConfusionUninitializedMemoryUninitializedMemoryUninitializedMemoryRaceConditionRaceConditionRaceCondition题目DefenseDefenseCanarySummarySummary获取地址控制程序执行流shell获取小结KernelModeKernelModeEnvironmentEnvironmentIntroduction内核下载与编译编译内核驱动Qemu模拟环境RealDeviceBasicKnowledgeBasicKnowledge基础知识AimAimIntroductionPrivilegeEscalationPrivilegeEscalationIntroductionChangeSelfChangeOthersInformationDisclosureDoSDefenseDefenseIntroductionIsolationIsolationIntroductionUserandKernelUserandKernelIntroduction用户代码不可执行用户数据不可访问KPTI-KernelPageTableIsolationInsideKernelInsideKernel内部隔离AccessControlAccessControlIntroduction信息泄漏MiscDetectionDetectionIntroductionKernelStackCanaryRandomizationRandomizationIntroductionKASLRFGKASLRExploitationExploitationkernelUAFKernelROPret2usrbypass-smepDoubleFetchuserfaultfd的使用WindowsPlatformWindowsPlatform概述栈溢出栈溢出栈介绍栈溢出原理执行ShellcodeMacOSPlatformMacOSPlatformMacOSMiscOSPlatformMiscOSPlatformReadmeSandboxEscapeSandboxEscapepythonpythonPython沙盒shellshellShellSandboxseccompseccompC沙盒逃逸namespacenamespaceNamespacechrootchrootChrootdockerdockerDockerVirtualizationVirtualizationQEMUQEMUQEMUVirtualBoxVirtualBoxVirtualBoxVMWareVMWareVMWareParallelsParallelsParallelsBrowserBrowserChromeChromeChromeFirefoxFirefoxFirefoxSafariSafariSafariHardwareHardwareCPUAndroidAndroidAndroid开发基础Android运行机制简述Android运行机制简述Android应用运行机制简述Android中Java层的运行机制Android中Java层的运行机制Android中Java层的运行机制SmaliDex&&ODEXDex&&ODEXDEX文件ODEX文件AndroidNative层介绍AndroidNative层介绍so介绍Android逆向基本介绍Android逆向基本介绍Android逆向基本介绍Android关键代码定位Android简单静态分析Android简单静态分析静态分析java层例子静态分析原生层程序静态分析综合题目Android简单动态分析Android简单动态分析Android动态调试IDA动态调试原生层程序ICSICSICS_CTF竞赛ICS_CTF发现ICS_CTF利用ICS_CTF学习资源BlockchainBlockchainBlockchainSecurityOverviewEthereumSecurityEthereumSecurityEthereumOverviewEthereumBasicsFunctionSelectorandArgumentEncodingEthereumStorageEthereumOpcodesKnownAttacksKnownAttacksIntroductionRe-EntrancyIntegerOverflowandUnderflowRandomnessAirdropHuntingShortAddressAttackDelegatecallUninitializedStoragePointerArbitraryWritingCREATE2JumpOrientedProgrammingSmartContractReverse学习资源PublicBlockchainSecurityPublicBlockchainSecurityPublicBlockchainSecurityOverviewBlockchainWeaknessesBlockchainSecurityChallenges目录概述随机性的严格性周期评价标准分类问题参考伪随机数生成器介绍¶概述¶伪随机数生成器(pseudorandomnumbergenerator,PRNG),又称为确定性随机位生成器(deterministicrandombitgenerator,DRBG),是用来生成接近于绝对随机数序列的数字序列的算法。
一般来说,PRNG会依赖于一个初始值,也称为种子,来生成对应的伪随机数序列。
只要种子确定了,PRNG所生成的随机数就是完全确定的,因此其生成的随机数序列并不是真正随机的。
就目前而言,PRNG在众多应用都发挥着重要的作用,比如模拟(蒙特卡洛方法),电子竞技,密码应用。
随机性的严格性¶随机性:随机数应该不存在统计学偏差,是完全杂乱的数列。
不可预测性:不能从过去的序列推测出下一个出现的数。
不可重现性:除非数列保存下来,否则不能重现相同的数列。
这三个性质的严格性依次递增。
一般来说,随机数可以分为三类类别随机性不可预测性不可重现性弱伪随机数✅❌❌强伪随机数✅✅❌真随机数✅✅✅一般来说,密码学中使用的随机数是第二种。
周期¶正如我们之前所说,一旦PRNG所依赖的种子确定了,那么PRNG生成的随机数序列基本也就确定了。
这里定义PRNG的周期如下:对于一个PRNG的所有可能起始状态,不重复序列的最长长度。
显然,对于一个PRNG来说,其周期不会大于其所有可能的状态。
但是,需要注意的是,并不是当我们遇到重复的输出时,就可以认为是PRNG的周期,因为PRNG的状态一般都是大于输出的位数的。
评价标准¶参见维基百科,https://en.wikipedia.org/wiki/Pseudorandom_number_generator。
分类¶目前通用的伪随机数生成器主要有线性同余生成器,LCG线性回归发生器MersenneTwisterxorshiftgeneratorsWELLfamilyofgeneratorsLinearfeedbackshiftregister,LFSR,线性反馈移位寄存器问题¶通常来说,伪随机数生成器可能会有以下问题在某些种子的情况下,其生成的随机数序列的周期会比较小。
生成大数时,分配的不均匀。
连续值之间关联密切,知道后续值,可以知道之前的值。
输出序列的值的大小很不均匀。
参考¶https://en.wikipedia.org/wiki/Pseudorandom_number_generator
延伸文章資訊
- 1Random number - 随机数生成器的发展历史 - NKDACS
C语言用来产生伪随机数的库函数rand()的种子是固定的值,因此每次调用该函数产生的随机数数列都是相同的。所以为了获得随机性更好的数列,种子应为一个变量,该变量可以与 ...
- 2伪随机数生成器 - 维基百科
伪随机数生成器(pseudo random number generator,PRNG),又被称为确定性随机比特生成器(deterministic random bit generator,DR...
- 3伪随机数发生器_百度百科
伪随机数发生器用于在系统需要随机数的时候,通过一系列种子值计算出来的伪随机数。因为生成一个真正意义上的“随机数”对于计算机来说是不可能的,伪随机数也只是尽可能 ...
- 4簡介亂數 - iT 邦幫忙
密碼學安全偽隨機性,當有一部分的樣本與演算法時,依然無法推測下一個亂數為何。 ... 僞隨機數產生器(PRNG,全名為Pseudo-random Number Generator):滿足第一個 ...
- 5偽隨機數生成器- 維基百科,自由的百科全書
偽隨機數生成器(pseudo random number generator,PRNG),又被稱為確定性隨機比特生成器(deterministic random bit generator,DR...