与其他人/服务器共享相同的 DH 参数没有已知的不良副作用。这实际上是椭圆曲线DH 中的常见情况,因为生成自己的曲线比为经典 DH 生成自己的素数模数要困难得多,并且椭圆曲线的通常实现与特定曲线或一小组曲线相关联(因为这样写更容易,更有效)。
关于攻击者如何投入大量工作来“破坏”以特定素数为模的离散对数,然后重用中间计算来快速破坏许多以该特定素数为模的 DH 实例,存在一些理论上的担忧。从这个意义上说,重用常见的 DH 参数可能意味着对攻击者的额外滋扰。但是这种成本分担并不适用于所有的 DL 破坏算法,并且这也假设攻击者可以以素数为模来破坏 DL,即素数太短或“特殊形式”。这将是不使用该素数的一个更紧迫的理由:不是它是shared,而是它是weak。
因此,使用现有的共享 DH 参数不是问题,只要您可以确保所述参数没有被特别“煮熟”以允许快速(更)休息。这通常意味着生成算法已经被完全指定并且可以被验证是否被忠实地遵循(例如,参见这些)。
使用自定义 DH 参数应该适用于所有客户端,因为将实现绑定到特定模数(与椭圆曲线相反)没有实现优势。只要您的模数符合特定实现的大小要求,事情就应该没问题(一些较旧的实现在大小超过 1024 位时会遇到问题;其他不喜欢大小不是 32 或 64 位倍数的模数)。